Name: series-workflowq8nwf Phase: Succeeded StartedAt: 2026-07-14 06:42:30 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[0] Phase: Succeeded StartedAt: 2026-07-14 06:42:30 +0000 UTC FinishedAt: 2026-07-14 07:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 06:42:30 +0000 UTC FinishedAt: 2026-07-14 07:10:01 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "NET_CLS_FLOWER", "NET_SCH_INGRESS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "NET_CLS_FLOWER", "NET_SCH_INGRESS" ], "series_id": "8bc6b057-2df7-4bd1-b896-16abc0252af4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tc_add_basic_flow", "tc_add_flow", "tc_del_flow", "dwxgmac2_config_l4_filter" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NTRhMmE3Y2Y2M2JlZmI5Mjk1ZDRhZjlhNzE0NjRlNTFmZjdiOTczXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDc6MDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXG5pbmRleCBmMDJiNDM0YmJkNTA1Yi4uNTIwNTRmMzEzNzZkNTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuY1xuQEAgLTEzNzAsMzYgJiM0MzsxMzcwLDQwIEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbiBcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xuIFx0fVxuIFxuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xuIFx0aWYgKHNhKSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0U1BNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19MNFNQSU0wO1xuIFx0fSBlbHNlIHtcbiBcdFx0dmFsdWUgfD0gWEdNQUNfTDREUE0wO1xuIFx0XHRpZiAoaW52KVxuIFx0XHRcdHZhbHVlIHw9IFhHTUFDX0w0RFBJTTA7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHZhbHVlIFx1MDAyNj0gflhHTUFDX0w0RFBJTTA7XG4gXHR9XG4gXG4gXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCB2YWx1ZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aWYgKHNhKSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuJiM0MztcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl9yZWFkKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIFx1MDAyNnZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbi1cdFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmIChzYSkge1xuJiM0MztcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUDA7XG4mIzQzO1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcbi1cbi1cdFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUDA7XG4mIzQzO1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAoIWVuKVxuIFx0XHRyZXR1cm4gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0wzTDRfQ1RSTCwgMCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggZDc4NjUyNzE4NTk5OWQuLjE0Y2FiZTc2ZTUzZWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5AQCAtNDQ2LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgaW50IHRjX3BhcnNlX2Zsb3dfYWN0aW9ucyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gfVxuIFxuICNkZWZpbmUgRVRIRVJfVFlQRV9GVUxMX01BU0tcdGNwdV90b19iZTE2KH4wKVxuJiM0MzsjZGVmaW5lIElQX1BST1RPX0ZVTExfTUFTS1x0MHhGRlxuIFxuIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcbkBAIC00NjEsNiAmIzQzOzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBcdGZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCBcdTAwMjZtYXRjaCk7XG4gXG4mIzQzO1x0LyogQm90aCBuZXR3b3JrIHByb3RvIGFuZCB0cmFuc3BvcnQgcHJvdG8gbm90IHByZXNlbnQgaW4gdGhlIGtleSAqL1xuJiM0MztcdGlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byB8fCBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvKSkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2xcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IGZ1bGwgbWFzayAqL1xuJiM0MztcdGlmICgobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XG4mIzQzO1x0ICAgIChtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvICE9IElQX1BST1RPX0ZVTExfTUFTSykpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChjbHMtXHUwMDNlY29tbW9uLmV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICBcJiMzNDtvbmx5IGZ1bGwgcHJvdG9jb2wgbWFzayBpcyBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXG4mIzQzO1x0aWYgKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byBcdTAwMjZcdTAwMjYgbWF0Y2gua2V5LVx1MDAzZW5fcHJvdG8gIT0gY3B1X3RvX2JlMTYoRVRIX1BfSVApKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7b25seSBJUHY0IG5ldHdvcmsgcHJvdG9jb2wgaXMgc3VwcG9ydGVkXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXG4mIzQzO1x0aWYgKG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG1hdGNoLmtleS1cdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvICE9IElQUFJPVE9fVURQKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7b25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRlbnRyeS1cdTAwM2VpcF9wcm90byA9IG1hdGNoLmtleS1cdTAwM2VpcF9wcm90bztcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01OTgsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXQgPSB0Y19mbG93X3BhcnNlcnNbaV0uZm4ocHJpdiwgY2xzLCBlbnRyeSk7XG4gXHRcdGlmICghcmV0KVxuIFx0XHRcdGVudHJ5LVx1MDAzZWluX3VzZSA9IHRydWU7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRpZiAoIWVudHJ5LVx1MDAzZWluX3VzZSlcbkBAIC02MjcsNiAmIzQzOzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ZW50cnktXHUwMDNlaW5fdXNlID0gZmFsc2U7XG4gXHRlbnRyeS1cdTAwM2Vjb29raWUgPSAwO1xuIFx0ZW50cnktXHUwMDNlaXNfbDQgPSBmYWxzZTtcbiYjNDM7XHRlbnRyeS1cdTAwM2VhY3Rpb24gPSAwO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX2FkZF9iYXNpY19mbG93JiMzNDssCiAgICAmIzM0O3RjX2FkZF9mbG93JiMzNDssCiAgICAmIzM0O3RjX2RlbF9mbG93JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXImIzM5O3MgdHJhZmZpYyBjb250cm9sIChUQykgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMuIEl0IGFkZHMgdmFsaWRhdGlvbiBmb3IgbmV0d29yayBhbmQgdHJhbnNwb3J0IHByb3RvY29scyBpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGFuZCBmaXhlcyBiaXR3aXNlIG9wZXJhdGlvbnMgaW4gYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBuZXRsaW5rIFRDIGludGVyZmFjZSB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMgb24gYW4gaW50ZXJmYWNlIGJhY2tlZCBieSB0aGUgc3RtbWFjIGRyaXZlci4gVGhlIHN0bW1hYyBkcml2ZXIgaGFzIFBDSSBzdXBwb3J0IChgU1RNTUFDX1BDSWApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzU0YTJhN2NmNjNiZWZiOTI5NWQ0YWY5YTcxNDY0ZTUxZmY3Yjk3MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA3OjAzOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jCmluZGV4IGYwMmI0MzRiYmQ1MDViLi41MjA1NGYzMTM3NmQ1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYwpAQCAtMTM3MCwzNiAmIzQzOzEzNzAsNDAgQEAgc3RhdGljIGludCBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLAogCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0UEVOMDsKIAl9CiAKLQl2YWx1ZSAmYW1wOz0gfihYR01BQ19MNFNQTTAgfCBYR01BQ19MNFNQSU0wKTsKLQl2YWx1ZSAmYW1wOz0gfihYR01BQ19MNERQTTAgfCBYR01BQ19MNERQSU0wKTsKIAlpZiAoc2EpIHsKIAkJdmFsdWUgfD0gWEdNQUNfTDRTUE0wOwogCQlpZiAoaW52KQogCQkJdmFsdWUgfD0gWEdNQUNfTDRTUElNMDsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0U1BJTTA7CiAJfSBlbHNlIHsKIAkJdmFsdWUgfD0gWEdNQUNfTDREUE0wOwogCQlpZiAoaW52KQogCQkJdmFsdWUgfD0gWEdNQUNfTDREUElNMDsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0RFBJTTA7CiAJfQogCiAJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0wzTDRfQ1RSTCwgdmFsdWUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoc2EpIHsKLQkJdmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7CiYjNDM7CXJldCA9IGR3eGdtYWMyX2ZpbHRlcl9yZWFkKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsICZhbXA7dmFsdWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKIAotCQlyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHNhKSB7CiYjNDM7CQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0U1AwOwomIzQzOwkJdmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpOwogCX0gZWxzZSB7Ci0JCXZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpOwotCi0JCXJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJdmFsdWUgJmFtcDs9IH5YR01BQ19MNERQMDsKJiM0MzsJCXZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTsKIAl9CiAKJiM0MzsJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJaWYgKCFlbikKIAkJcmV0dXJuIGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIDApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCmluZGV4IGQ3ODY1MjcxODU5OTlkLi4xNGNhYmU3NmU1M2VjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMKQEAgLTQ0Niw2ICYjNDM7NDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogfQogCiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLCWNwdV90b19iZTE2KH4wKQomIzQzOyNkZWZpbmUgSVBfUFJPVE9fRlVMTF9NQVNLCTB4RkYKIAogc3RhdGljIGludCB0Y19hZGRfYmFzaWNfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkgICAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMsCkBAIC00NjEsNiAmIzQzOzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogCWZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCAmYW1wO21hdGNoKTsKIAomIzQzOwkvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovCiYjNDM7CWlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gfHwgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoY2xzLSZndDtjb21tb24uZXh0YWNrLAomIzQzOwkJCQkgICAmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2wmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogSWYgdGhlIHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IGZ1bGwgbWFzayAqLwomIzQzOwlpZiAoKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gJmFtcDsmYW1wOyBtYXRjaC5tYXNrLSZndDtuX3Byb3RvICE9IEVUSEVSX1RZUEVfRlVMTF9NQVNLKSB8fAomIzQzOwkgICAgKG1hdGNoLm1hc2stJmd0O2lwX3Byb3RvICZhbXA7JmFtcDsgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IGZ1bGwgcHJvdG9jb2wgbWFzayBpcyBzdXBwb3J0ZWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovCiYjNDM7CWlmIChtYXRjaC5tYXNrLSZndDtuX3Byb3RvICZhbXA7JmFtcDsgbWF0Y2gua2V5LSZndDtuX3Byb3RvICE9IGNwdV90b19iZTE2KEVUSF9QX0lQKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IElQdjQgbmV0d29yayBwcm90b2NvbCBpcyBzdXBwb3J0ZWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogVHJhbnNwb3J0IHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IFRDUCBvciBVRFAgKi8KJiM0MzsJaWYgKG1hdGNoLm1hc2stJmd0O2lwX3Byb3RvICZhbXA7JmFtcDsKJiM0MzsJICAgIG1hdGNoLmtleS0mZ3Q7aXBfcHJvdG8gIT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOwomIzQzOwkgICAgbWF0Y2gua2V5LSZndDtpcF9wcm90byAhPSBJUFBST1RPX1VEUCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IFRDUCBhbmQgVURQIHRyYW5zcG9ydCBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwogCWVudHJ5LSZndDtpcF9wcm90byA9IG1hdGNoLmtleS0mZ3Q7aXBfcHJvdG87CiAJcmV0dXJuIDA7CiB9CkBAIC01OTgsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlyZXQgPSB0Y19mbG93X3BhcnNlcnNbaV0uZm4ocHJpdiwgY2xzLCBlbnRyeSk7CiAJCWlmICghcmV0KQogCQkJZW50cnktJmd0O2luX3VzZSA9IHRydWU7CiYjNDM7CQllbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApCiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlpZiAoIWVudHJ5LSZndDtpbl91c2UpCkBAIC02MjcsNiAmIzQzOzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWVudHJ5LSZndDtpbl91c2UgPSBmYWxzZTsKIAllbnRyeS0mZ3Q7Y29va2llID0gMDsKIAllbnRyeS0mZ3Q7aXNfbDQgPSBmYWxzZTsKJiM0MzsJZW50cnktJmd0O2FjdGlvbiA9IDA7CiAJcmV0dXJuIHJldDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIDEwLzEwMC8xMDAwL0VRT1MgdmFyaWFudHMuIEkgY2FuIHNlZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZHd4Z21hYzJfY29yZS5jYCBhbmQgYHN0bW1hY190Yy5jYCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBhbmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHJlbGF0ZWQgZnVuY3Rpb25zOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBhbmQgYHRjX2RlbF9mbG93YC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHdvcmtpbmcgb24gaGFyZHdhcmUgb2ZmbG9hZCBmb3IgVEMgZmlsdGVycywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpUaGUgbWFpbiB0YWtlYXdheSBzZWVtcyB0byBiZSBhIGNvdXBsZSBvZiBrZXkgbW9kaWZpY2F0aW9ucy4gVGhleSYjMzk7cmUgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIHdpdGhpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF0JiMzOTtzIGdvb2QsIGFsd2F5cyBhIHBsdXMgdG8gaGF2ZSBtb3JlIHJvYnVzdCBlcnJvciBjaGVja2luZywgYW5kIG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O3JlIGxpa2VseSB0cnlpbmcgdG8gcHJldmVudCBzb21lIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBpc3N1ZXMsIG9yIHBlcmhhcHMgYWRkaW5nIHN1cHBvcnQgZm9yIG5ldyBwcm90b2NvbCBtYXRjaGluZy4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCwgd2hpY2ggc3VnZ2VzdHMgdGhleSYjMzk7dmUgZm91bmQgYW5kIGZpeGVkIHNvbWUgcG90ZW50aWFsIGxvZ2ljYWwgZXJyb3JzLgoKQmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBzdG1tYWNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgbGluZSB0byBwcm9wZXJseSBhc3NlcyB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0Olx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29Dczpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjg2Olx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIEluZ2VuaWMgU29Dc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyOS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTUyLVx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc2LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4ODpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4Olx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxNC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjUtXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2Olx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjM3LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQ5LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjY1PWNvbmZpZyBEV01BQ19TVE0zMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNzM6XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODU6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTc6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOTpcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTk6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDAtXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cdCAgU29DLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNTU9Y29uZmlnIERXTUFDX1RFR1JBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Mi1cdCAgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg1LVx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2Olx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk1Olx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEzOlx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDI0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaXRlbSBhcHBlYXJzIHRvIGJlIGBTVE1NQUNfRVRIYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGlzIGFjdHVhbGx5IGNvbnRyb2xsaW5nLiBUaGlzIG1lYW5zIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtsbCBkbyBpcyBpbW1lZGlhdGVseSBqdW1wIHRvIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGltcGxpY2F0aW9ucy4gS25vd2luZyB3aGF0IGl0IGdvdmVybnMgaXMgY3J1Y2lhbCB0byB0aGUgd2hvbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyODAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYSBUcmFmZmljIENvbnRyb2wgUGF0Y2ggZm9yIHRoZSBTVE1NQUMgRHJpdmVyKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjX2FkZF9iYXNpY19mbG93YCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNfdGMuY2AgZmlsZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3RtbWFjX3RjLmNgIGZpbGUgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gdGhlIGBTVE1NQUNfRVRIYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgYXZhaWxhYmxlIGJlY2F1c2UgaWYgaXQgaXNuJiMzOTt0LCB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGJlY29tZXMgYSBsb3QgbW9yZSBsaW1pdGVkLCBhbmQgbWlnaHQgaW5kaWNhdGUgc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlnIG9wdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1x0XFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS03LVx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6ODpcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVx0ICAgICAgc3RtbWFjX3hkcC5vIHN0bW1hY19lc3QubyBzdG1tYWNfZnBlLm8gc3RtbWFjX3ZsYW4ubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNUTU1BQyBPZmZsb2FkIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGB0Y2AgYW5kIG5ldGxpbmsgdHJhZmZpYyBjb250cm9sLiBJIHNlZSB0aGF0IGBzdG1tYWNfdGMub2AgYW5kIGBkd3hnbWFjMl9jb3JlLm9gIGFyZSBpbmNsdWRlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpJJiMzOTttIG5vdyBkaWdnaW5nIGludG8gdGhlIGNoYW5nZXMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBsb2dpYyBmb3IgYWRkaW5nIHRoZXNlIGJhc2ljIGZpbHRlcnMgcmVzaWRlcy4gVGhlIGNvZGUgaXMgY2xlYXJseSBpbXBvc2luZyByZXN0cmljdGlvbnMgb24gdGhlIGtpbmRzIG9mIGZpbHRlcnMgaXQgc3VwcG9ydHMgZm9yIG9mZmxvYWQ6IGl0JiMzOTtzIGNoZWNraW5nIGZvciBjZXJ0YWluIHByb3RvY29sIG1hdGNoZXMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRvIGVuc3VyZSBlaXRoZXIgYSBuZXR3b3JrIG9yIHRyYW5zcG9ydCBwcm90b2NvbCBpcyBwcmVzZW50LCBhbmQgaXQgKnJlcXVpcmVzKiBhIGZ1bGwgbWFzayBpZiBhIHByb3RvY29sIGlzIGRlZmluZWQuIElmIGEgbmV0d29yayBwcm90b2NvbCBpcyBwcmVzZW50IGluIHRoZSBmaWx0ZXIsIGl0ICptdXN0KiBiZSBJUHY0LiBGdXJ0aGVybW9yZSwgaWYgYSB0cmFuc3BvcnQgcHJvdG9jb2wgaXMgcHJlc2VudCwgaXQgKm11c3QqIGJlIGVpdGhlciBUQ1Agb3IgVURQLgoKVGhpcyB3aG9sZSBhcmVhIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgYHRjYCBpbnRlcmZhY2UsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCB3YXkgdG8gY29uZmlndXJlIHRoZXNlIG9mZmxvYWQgZmlsdGVycy4gQnV0IG5vdyBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBhdmFpbGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IGl0ICphbHNvKiBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCkuIFRoYXQmIzM5O3MgcHJvbWlzaW5nLgoKTGV0IG1lIGNvbmZpcm0gaWYgYFNUTU1BQ19QQ0lgIGlzIGVuYWJsZWQsIG9yIGNvdWxkIGJlIGVuYWJsZWQuIEFscmlnaHQsIGl0ICppcyogYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IGluY3JlYXNlcyB0aGUgY2hhbmNlcy4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYCB0byB1bmRlcnN0YW5kIHRoZSBQQ0kgc3BlY2lmaWMgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODYyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBzdG1tYWNfcGNpLmNgIENvZGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFNUTU1BQyBkcml2ZXImIzM5O3MgUENJIGltcGxlbWVudGF0aW9uLiBXaGF0IGFyZSB0aGUga2V5IGluaXRpYWxpemF0aW9uIHN0ZXBzPyBIb3cgZG9lcyBpdCBoYW5kbGUgUENJIGRldmljZSBwcm9iaW5nIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBcmUgdGhlcmUgYW55IG5vdGFibGUgZGlmZmVyZW5jZXMgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzIGNvbXBhcmVkIHRvIHRoZSBnZW5lcmljIFNUTU1BQyBjb3JlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIHRoZSBQQ0kgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkZXZpY2UgSUQgdGFibGUsIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZSBpbnRlcnJ1cHRzIGFyZSBiZWluZyBoYW5kbGVkLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29kZSBiYXNlIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24gSSBuZWVkIHRvIGRvIGhlcmUsIG9yIGluIHRoaXMgc3BlY2lmaWMgYXJlYS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTIzMj1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzM6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzYzLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDc5PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDk4OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU3OD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcdTAwMjZsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5Olx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBUaGF0IGB0Y19hZGRfYmFzaWNfZmxvd2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIEkgc2VlIGl0IGhhcyBQQ0kgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdGluZyB0aGUgYGR3bWFjLWludGVsLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGFuZCBgc3RtbWFjX3BjaS5jYCBmaWxlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiwgb2YgY291cnNlLCBmdXp6IFBDSSBkZXZpY2VzLCB1c2luZyB0aGF0IHZpcnR1YWwgUENJIGluamVjdGlvbiBjYXBhYmlsaXR5LiBJIGNhbiBzZWUgaXQgd29ya2luZywgZm9yIGV4YW1wbGUsIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAuIFNvLCB0aGUgY29kZSYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IC0gdGhhdOKAmXMga2V5LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF04oCZcyBjYWxsZWQgd2hlbiBhIFRDIGZsb3dlciBmaWx0ZXIgaXMgYWRkZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBjaGFpbiwgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBjYWxsZWQgYnkgYHRjX2FkZF9mbG93YC4gVGhlbiBgdGNfYWRkX2Zsb3dgIGlzIGNhbGxlZCBieSBgc3RtbWFjX3NldHVwX3RjX2Nsc19mbG93ZXJgLiBUaGF0LCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAsIHdoaWNoLCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgdHJpZ2dlcnMgd2hlbiBjb25maWd1cmluZyBhIFRDIGJsb2NrIG9uIHRoZSBpbnRlcmZhY2UuCgpSaWdodCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhhdCBjYWxsIGNoYWluIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIHN0ZXAsIGJ1dCB0aGF0IGxvb2tzIGxpa2UgYSB2YWxpZCBwYXRoIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTYwMj1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo2MTE6c3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXHRcdCAgICAgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NjgtXHRcdFx0ICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4NzI6XHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo5MTA6XHRcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVsdmluZyBpbnRvIFRyYWZmaWMgQ29udHJvbCBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgZm9yIHRoaXMgc3RtbWFjIGRyaXZlci4gTG9va3MgbGlrZSB0aGUgYHRjX3NldHVwX2Nsc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tLiBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiYCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBUaGF0IGZ1bmN0aW9uIG11c3QgYmUgdGhlIGNhbGxiYWNrIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgYmxvY2suIFRoaXMgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgaGlnaC1sZXZlbCB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGFuZCB0aGUgbG93LWxldmVsIHNwZWNpZmljcyBvZiB0aGUgc3RtbWFjIGhhcmR3YXJlLiBTbyBJIG5lZWQgdG8gZ28gZGVlcGVyIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgY2FsbCBzZXRzIHVwIHRoZSBzdG1tYWMgZHJpdmVyIGluIG9yZGVyIHRvIGNvbnRyb2wgZWdyZXNzIHRyYWZmaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX3NldHVwX2NscyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXHRcdFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXHRcdFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDctXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXHQuaW5pdCA9IHRjX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3Olx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMxOC1cdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5Olx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYyNgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvZGUgTW9kaWZpY2F0aW9ucyoqCgpSaWdodCwgc28gSSBzZWUgYHRjX3NldHVwX2Nsc2AgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGJvdGggYGR3bWFjNF90Y19vcHNgIGFuZCBgZHdtYWM1MTBfdGNfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdyBmdW5kYW1lbnRhbCB0byB0aGUgdHJhZmZpYyBjb250cm9sIHNldHVwIGZvciBib3RoIHRoZSBEV0MgTUFDIDQgYW5kIDUxMCBJUCBjb3Jlcy4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBUQyBtZWNoYW5pc20gaXMgYmVpbmcgdXBkYXRlZCwgb3IgcGVyaGFwcyBhIG5ldyBjYXBhYmlsaXR5IGlzIGJlaW5nIGludGVncmF0ZWQgYXQgdGhhdCBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdGNfc2V0dXBfY2xzYCBhY3R1YWxseSAqZG9lcyogd2l0aGluIHRob3NlIGNvbnRleHRzLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3RlcnMgb3IgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcy4KCkZ1cnRoZXJtb3JlLCBJJiMzOTttIG5vdGluZyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBkd3hnbWFjMl9jb3JlLmNgLiBUaGlzIGZpbGUgY29udGFpbnMgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBOb3csIGEgTGV2ZWwgNCBmaWx0ZXIgY29uZmlndXJhdGlvbiBpcyBhIHByZXR0eSBzcGVjaWZpYyB0aGluZy4gVHlwaWNhbGx5LCB0aGlzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gVENQL1VEUCBwb3J0LWJhc2VkIGZpbHRlcmluZy4gVGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHRvdWNoZWQgKmFsb25nc2lkZSogdGhlIHRyYWZmaWMgY29udHJvbCBzZXR1cCBzdWdnZXN0cyB0aGVyZSBtaWdodCBiZSBhbiBpbnRlcnBsYXkgaGFwcGVuaW5nLiBNYXliZSB0aGUgTDQgZmlsdGVyIGlzIGJlaW5nIGFkanVzdGVkIGFzIHBhcnQgb2YgYSBtb3JlIGNvbXByZWhlbnNpdmUgVEMgY29uZmlndXJhdGlvbiwgb3IgcGVyaGFwcyB0aGUgTDQgZmlsdGVyaW5nIGlzIG5vdyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgYnJvYWRlciBUQyBmcmFtZXdvcmsuIEluIGFueSBjYXNlLCBJIG5lZWQgdG8gc2VlIGhvdyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgYmVpbmcgY2FsbGVkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGNhbGxzIHRvICBgdGNfc2V0dXBfY2xzYC4gSSB3YW50IHRvIHNlZSBpZiB0aGUgY2hhbmdlcyBhcmUgYWRkaW5nIG5ldyBUQyBjYXBhYmlsaXRpZXMsIG9yIGlmIHRoZXkgYXJlIGp1c3QgYWZmZWN0aW5nIGhvdyB0aGUgc3lzdGVtIGlzIG9yZ2FuaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM9MTI4OD1zdGF0aWMgaW50IGR3eGdtYWMyX2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTEzNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTM1MTpzdGF0aWMgaW50IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cdFx0XHRcdCAgICAgYm9vbCBlbiwgYm9vbCB1ZHAsIGJvb2wgc2EsIGJvb2wgaW52LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDY1LVx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjE0NjY6XHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cdC5zZXRfYXJwX29mZmxvYWQgPSBkd3hnbWFjMl9zZXRfYXJwX29mZmxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTUyMC1cdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNTIxOlx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY4MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWVzc2luZyB3aXRoIGNvcmUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYHN0bW1hY19vcHNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLiBUaGUga2V5IGNoYW5nZXMgYXJlIGluIGB0Y19hZGRfYmFzaWNfZmxvd2Agd2l0aCBhZGRlZCB2YWxpZGF0aW9uIGFuZCBiaXR3aXNlIG9wZXJhdGlvbiBmaXhlcyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlJiMzOTtyZSBsb29raW5nIGF0OiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBTaW5jZSBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIHN0YXRpYywgdGhhdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGxpc3QsIHRoYW5rZnVsbHkuIFdlJiMzOTtsbCBiZSBmb2N1c2luZyBvbiBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuCgpOb3csIGZvciBjb25maWcgZGVwZW5kZW5jaWVzLi4uIGBTVE1NQUNfRVRIYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBUbyBtYWtlIGZ1enppbmcgZWFzaWVyLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGBTVE1NQUNfUENJYCBsb29rcyBsaWtlIHRoZSB3YXkgdG8gZ28gZm9yIFBDSSBzdXBwb3J0LiBIYW5nIG9uLi4uIGFyZSB0aGVyZSBhbnkgc3ViLWRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGNoZWNrIGlmIGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIG9yIGBEV01BQ19NT1RPUkNPTU1gIGFyZSB0aWVkIHRvIHNwZWNpZmljIFBDSSBJRHMuIEdvdHRhIGRvdWJsZS1jaGVjayBgU1RNTUFDX1BDSWAgYWdhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIFBDSSBEcml2ZXImIzM5O3MgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBqdXN0IHRoZSBgU1RNTUFDX1BDSWAgaWRlbnRpZmllciBpcyBzdWZmaWNpZW50IGZvciB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gTGV0IG1lIGxvb2sgaW50byB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZTsgaXQgc2VlbXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgUENJIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVucy4gQWgsIHRoZXJlIGl0IGlzIOKAkyBgc3RtbWFjX2lkX3RhYmxlYC4gUmlnaHQsIHRoaXMgdXNlcyBgUENJX0RFVklDRV9EQVRBYCB3aXRoIGBTVE1NQUNgLCBhbmQgYSBzcGVjaWZpYyBkYXRhIHBvaW50ZXIgdG8gYCZhbXA7c3RtbWFjX3BjaV9pbmZvYC4gSW50ZXJlc3RpbmcuIE5vdywgdGhhdCBgU1RNTUFDYCB2ZW5kb3IgSUTigKYgaXQmIzM5O3MgYDB4MTE2NmAuIFRoYXQmIzM5O3Mgbm90IGEgQnJvYWRjb20gSUQsIHdoaWNoIGlzIHdoYXQgSSBpbml0aWFsbHkgdGhvdWdodC4gSXQgbWlnaHQgYmUgU3lub3BzeXMsIG9yIG9uZSBvZiB0aGUgb3RoZXIgdmVuZG9ycyB1c2luZyB0aGF0IGNvcmUuIFRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYFBDSV9WRU5ET1JfSURfU1RNTUFDYCB0byBjb25maXJtIG15IHN1c3BpY2lvbiBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHZlbmRvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfVkVORE9SX0lEX1NUTU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpX2lkcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MTYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgUENJIExhbmRzY2FwZSBpbiBgc3RtbWFjX3BjaS5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBDSSBkZXZpY2UgZGF0YSBpcyBoYW5kbGVkIGluIHRoZSBgc3RtbWFjX3BjaS5jYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbiBhbmQgY2hlY2sgZm9yIGBQQ0lfREVWSUNFX0RBVEFgLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGNvbmZpZ3VyZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBTVE1NQUMgRXRoZXJuZXQgY29udHJvbGxlciB3aGVuIGl0JiMzOTtzIGNvbm5lY3RlZCB0aHJvdWdoIGEgUENJIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGRyaXZlciBkZXRlY3RzIHRoZSBkZXZpY2UsIGhvdyBpdCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIHF1aXJrcywgaWYgYW55LiBJIGFudGljaXBhdGUgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhlIGBQQ0lfREVWSUNFX0RBVEFgIHVzYWdlLCBsaWtlbHkgdGllZCB0byBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBwb3RlbnRpYWxseSBsZWdhY3kgUENJIGNvbXBhdGliaWxpdHkuIFRoZXJlZm9yZSwgdGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9EQVRBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA2Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNy1cdHt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzI2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRlY2lwaGVyaW5nIHRoZSBOZWNlc3NhcnkgS2VybmVsIENvbmZpZ3VyYXRpb25zIGZvciBOZXR3b3JrIE9mZmxvYWRpbmcqKgoKUmlnaHQsIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgYFNUTU1BQ19QQ0lgIGlzIHRoZSBrZXkgdG8gZ2V0dGluZyBhIFBDSSBkZXZpY2UgdGhhdCBsZXZlcmFnZXMgdGhlIGBzdG1tYWNgIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCB3aGF0IGFib3V0IHN1cHBvcnQgZm9yIFRyYWZmaWMgQ29udHJvbCAoVEMpIGZsb3dlciBvZmZsb2FkPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGF0IGNvdmVyZWQuIEkgdGhpbmsgYE5FVF9TQ0hfRkxPV0VSYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoYXQsIHllYWg/IE9rYXksIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgYmVjYXVzZSBpZiBJIG5lZWQgaXQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGl0LiBXYWl0IGEgbWludXRlLi4uIEkgc2VlbSB0byByZWNhbGwgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBhY3R1YWxseSBjYWxsZWQgd2hlbiBkZWFsaW5nIHdpdGggYEZMT1dfQ0xTX0ZMT1dFUmAuIEFoLCB5ZXMhIExldCYjMzk7cyBjaGVjayBgdGNfYWRkX2Zsb3dgIGZvciBnb29kIG1lYXN1cmUuIFRoYXQgc2hvdWxkIGNsYXJpZnkgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlybSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGZvciB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSBJJiMzOTttIGFmdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTYwMj1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo2MTE6c3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXHRcdCAgICAgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NjgtXHRcdFx0ICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4NzI6XHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo5MTA6XHRcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNDAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGB0Y19zZXR1cF9jbHNgIENhbGxlcnMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB3aGVyZSBgdGNfc2V0dXBfY2xzYCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBzdGFjay4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20sIGFuZCB3aGF0JiMzOTtzIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIGVhY2ggY2FsbD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBJIG1pZ2h0IG1ha2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgdHJhY2luZyB0aGUgY29udHJvbCBmbG93IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19zZXR1cF9jbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0yMDk9c3RhdGljIGludCB0Y19kZWxldGVfa25vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjIxOTpzdGF0aWMgaW50IHRjX3NldHVwX2Nsc191MzIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjIwLVx0XHRcdCAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODgzPXN0YXRpYyBpbnQgdGNfZGVsX2Zsb3dfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4OTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTAwLVx0XHRcdHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTMwND1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzRfdGNfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNS1cdC5pbml0ID0gdGNfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDY6XHQuc2V0dXBfY2xzX3UzMiA9IHRjX3NldHVwX2Nsc191MzIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDg6XHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwOS1cdC5zZXR1cF90YXByaW8gPSB0Y19zZXR1cF90YXByaW9fd2l0aG91dF9mcGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTMxNT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE2LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxNzpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxOTpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzIwLVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgc3RtbWFjX3RjX29wc2AgU3RydWN0dXJlKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHN0bW1hY190Y19vcHNgIHN0cnVjdHVyZSBhZ2Fpbi4gSSBzZWUgYHRjX3NldHVwX2Nsc2AgaXMgYmVpbmcgdXNlZCB3aXRoaW4gaXQuIE5vdywgdGhlIG5hbWUgJiMzNDt0Y1xfc2V0dXBcX2NscyYjMzQ7IGlzIHRocm93aW5nIG1lLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1lYW50IHRvIHJlbGF0ZSB0byBgc2V0dXBfY2xzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIHJlbGF0ZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzZXR1cF9jbHNgIGl0c2VsZiBnZXQgaW52b2tlZD8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNldHVwIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbi4gS25vd2luZyB0aGlzIGludm9jYXRpb24gcG9pbnQgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHdob2xlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldHVwX2NscyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9NTY3PXN0cnVjdCBzdG1tYWNfdGNfb3BzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NjgtXHRpbnQgKCppbml0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU2OTpcdGludCAoKnNldHVwX2Nsc191MzIpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzAtXHRcdFx0ICAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzItXHRcdFx0IHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpxb3B0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1NzM6XHRpbnQgKCpzZXR1cF9jbHMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzQtXHRcdFx0IHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01ODYtXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0YywgaW5pdCwgX19hcmdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU4NzojZGVmaW5lIHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU4ODpcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jbHNfdTMyLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTg5LSNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NicyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01OTAtXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0Yywgc2V0dXBfY2JzLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTkxOiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NscyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1OTI6XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0Yywgc2V0dXBfY2xzLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTkzLSNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX3RhcHJpbyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzOTg9c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTAtXHRjYXNlIFRDX1NFVFVQX0NMU1UzMjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxMTpcdFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTMtXHRjYXNlIFRDX1NFVFVQX0NMU0ZMT1dFUjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxNDpcdFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTA4Mj1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3J4cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTE0MDpcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKHByaXYsIHByaXYsIFx1MDAyNmNsc191MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExNDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xMTUwLVx0Y2xzX3UzMi5jb21tYW5kID0gVENfQ0xTVTMyX0RFTEVURV9LTk9ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxMTUxOlx0c3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgXHUwMDI2Y2xzX3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTMzMD1zdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbDNmaWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGRzdCwgdTMyIHNyYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNDAxOlx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE0MDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNDA5LVx0Y2xzLVx1MDAzZWNvbW1hbmQgPSBGTE9XX0NMU19ERVNUUk9ZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjE0MTA6XHRzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIGNscyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQxMS1jbGVhbnVwX3J1bGU6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTE0NDk9c3RhdGljIGludCBfX3N0bW1hY190ZXN0X2w0ZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBkc3QsIHUzMiBzcmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTUzMjpcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNTMzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTU0MC1cdGNscy1cdTAwM2Vjb21tYW5kID0gRkxPV19DTFNfREVTVFJPWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNTQxOlx0c3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDItY2xlYW51cF9ydWxlOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXHRcdFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXHRcdFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDctXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXHQuaW5pdCA9IHRjX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3Olx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMxOC1cdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5Olx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI0NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX1NDSF9GTE9XRVJgIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmVhdHVyZSBpc24mIzM5O3Qgd29ya2luZyBhcyBleHBlY3RlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBzZWVtcyB0byBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbmFsaXR5IGZyb20gdXNlcnNwYWNlLiBCdXQsIGhhbmcgb24uLi4gSSByZW1lbWJlciBzZWVpbmcgYHN0bW1hY19zZWxmdGVzdHMuY2Agd2hpY2ggY2FsbHMgYHN0bW1hY190Y19zZXR1cF9jbHNgIGRpcmVjdGx5LCB3aGljaCBtYWtlcyBtZSB0aGluayBgTkVUX1NDSF9GTE9XRVJgIG1pZ2h0IG5vdCBiZSB0aGUgKm9ubHkqIHRyaWdnZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCB0byB2ZXJpZnkuCgpBaGEhIE5vdyBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBpcyBleHBsaWNpdGx5IG5lZWRlZCBmb3IgdXNpbmcgdGhlIGB0YyBmaWx0ZXIgYWRkYCBjb21tYW5kIHdpdGggdGhlIGBmbG93ZXJgIGNsYXNzaWZpZXIsIHNwZWNpZmljYWxseSB3aGVuIGNhbGxpbmcgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAuIE9rLCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5FVF9TQ0hfRkxPV0VSYCBpcywgaW4gZmFjdCwgYSBjb25maWd1cmFibGUgb3B0aW9uLiBZZXMsIGNvbmZpcm1lZCwgYENPTkZJR19ORVRfU0NIX0ZMT1dFUmAgZXhpc3RzLiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgZGVwZW5kZWQgb24gYENPTkZJR19ORVRfSFdfRVhBQ1RfTUFUQ0hgIG9yIHNvbWV0aGluZyByZWxhdGVkLiBOb3BlLCBpdCBsb29rcyBsaWtlIGBORVRfU0NIX0ZMT1dFUmAgaXMgdGhlIG1haW4gZW5hYmxlci4gSSBzaG91bGQgY29uZmlybSB0aGlzIGluIHRoZSBLY29uZmlnIGZpbGUgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0IG1lIGxvb2sgYXQgYG5ldC9zY2hlZC9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9GTE9XRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzU4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlY29kaW5nIHRoZSBDbHVlOiBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIGEgYml0IG9mIGEgbWVudGFsIHNocnVnLiBBbm90aGVyIG9uZSBvZiB0aGVzZSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdhaXQgYSBzZWNvbmQuLi4gaXQmIzM5O3MgYENPTkZJR19ORVRfQ0xTX0ZMT1dFUmAuIEFoLCAqbm93KiBJIHNlZS4gVGhpcyBpc24mIzM5O3QganVzdCBhbnkgY29uZmlndXJhdGlvbiBvcHRpb247IGl0JiMzOTtzIHRoZSBrZXJuZWwmIzM5O3MgZmxhZyBmb3IgRmxvd2VyIGNsYXNzaWZpZXIgc3VwcG9ydCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBmbGV4aWJsZSBmbG93IGNsYXNzaWZpY2F0aW9uLCBpc24mIzM5O3QgaXQ/IEZpbmUtZ3JhaW5lZCB0cmFmZmljIHN0ZWVyaW5nIGJhc2VkIG9uIGEgcmljaCBzZXQgb2YgbWF0Y2ggY3JpdGVyaWEuIFRoaXMgaXMgZ29vZCwgdGhpcyBpcyBnb29kLiBUaGUgcG9zc2liaWxpdGllcyBhcmUgc3VkZGVubHkgcG9wcGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9DTFNfRkxPV0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcbm5ldC9zY2hlZC9LY29uZmlnLTU3My1cdHRyaXN0YXRlIFwmIzM0O0Zsb3dlciBjbGFzc2lmaWVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDU2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgTmV0d29yayBEZXZpY2UgRHJpdmVycyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yay1yZWxhdGVkIGRldmljZSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYE5FVF9DTFNfRkxPV0VSYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgbmV0d29yayBjbGFzc2lmaWVyLiBCdXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBkcml2ZXJzLiBUaGV5IGFyZSBpbXBvcnRhbnQgYW5kIEkgd2FudCB0byBjb3ZlciBhbGwgYmFzZXMuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfRVRIYC4gSSYjMzk7bSBjdXJpb3VzIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGluIHBsYWNlIGFuZCB1bmRlcnN0YW5kIGFsbCB0aGUgaW50ZXJhY3Rpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgZGVwZW5kZW5jaWVzIGlzIGFsd2F5cyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzI1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFNUTU1BQ19QQ0kgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX1BDSWAuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB3aGF0IG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIHRoaXMgbGlrZWx5IGRlcGVuZHMgb24uIEkmIzM5O20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzOyBpdCYjMzk7cyBjcnVjaWFsIHRvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGVjb3N5c3RlbS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgUENJZS10by1FdGhlcm5ldCBicmlkZ2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBETUEgZW5naW5lcywgZGVzY3JpcHRvciByaW5ncywgYW5kIGludGVycnVwdCBoYW5kbGluZyBhbGwgdGlnaHRseSBpbnRlZ3JhdGVkPwoKSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBtb2R1bGUuIElzIGl0IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjaywgb3IgYSBtb3JlIGlzb2xhdGVkIGRyaXZlcj8gS25vd2luZyB0aGlzIHdpbGwgaW5mbHVlbmNlIHRoZSBhcHByb2FjaCBJIHRha2UgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGhlYWRlcnMsIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGBLY29uZmlnYCwgYE1ha2VmaWxlYCksIGFuZCBrZXJuZWwgbW9kdWxlcyBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIGxpa2VseSBzdGFydCB3aXRoIGEgYGdyZXBgIG9yIGBmaW5kYCB0byBnZXQgYSBwcmVsaW1pbmFyeSBsaXN0LiBUaGUgZ29hbCBpcyB0byByYXBpZGx5IGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0IGBTVE1NQUNfUENJYCB0b3VjaGVzIGFuZCwgaW4gdHVybiwgd2hhdCB0b3VjaGVzIGl0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHdoYXQmIzM5O3MgKnJlcXVpcmVkKiwgYnV0IGFsc28gd2hhdCYjMzk7cyAqYWZmZWN0ZWQqIGJ5IGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUuIFBlcmZvcm1hbmNlIGltcGFjdHM/IFBvdGVudGlhbCBjb25mbGljdHM/IE1lbW9yeSBtYXBwaW5nIGNvbnNpZGVyYXRpb25zPyBJdCYjMzk7cyBhbGwgaW50ZXJjb25uZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzg4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gZW1iZWRkZWQgbmV0d29ya2luZyBhbmQgTGludXggZGV2aWNlIGRyaXZlcnM6CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDIFBDSSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYXNwZWN0cy4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRoZSBmb2N1cywgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyBhcm91bmQgdGhlIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCB3aGVuIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIFBDSSBpbnRlcmZhY2UuCgpJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yOgoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYFNUTU1BQ19QQ0lgIHRvIGJlIGF2YWlsYWJsZT8KKiAgICoqRGVwZW5kZW5jaWVzIG9mIHRoZSBEZXZpY2U6KiogSG93IGlzIHRoZSBjb25maWd1cmF0aW9uIG9mIGBTVE1NQUNfUENJYCBkZXBlbmRhbnQgb24gb3RoZXIgZmVhdHVyZXMgb2YgdGhlIGRldmljZT8KKiAgICoqRGVmYXVsdCBTZXR0aW5nczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgYW5kIHNldHRpbmdzIHdoZW4gYSBTVE1NQUMgaXMgY29uZmlndXJlZCBvbiBhIFBDSSBkZXZpY2U/CiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb3IgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgb3B0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBQQ0kgc3VwcG9ydCBmb3IgdGhlIFNUTU1BQy4KClRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGJ1cy4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgZGlmZmVyZW50IGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGRlcGVuZGluZyBvbiB3aGV0aGVyIGBTVE1NQUNfUENJYCBpcyBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nIFBDSS1yZWxhdGVkIGlzc3VlcyBhbmQgdGFpbG9yaW5nIHRoZSBkcml2ZXIgdG8gc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUzNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIGJ1YmJsaW5nIHVwIGluIG15IG1pbmQuIGBTVE1NQUNfUENJYCDigJMgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZS4gVGhlbiB0aGVyZSYjMzk7cyBgU1RNTUFDX0VUSGAsIHdoaWNoIGlzIHRoZSBjb3JlIGRyaXZlciwgcmlnaHQ/IEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0JiMzOTtzIGFjdHVhbGx5IGVuYWJsZWQgaGVyZS4gSSYjMzk7dmUgZ290IHRvIHN1bW1hcml6ZSB0aGUga2V5IGNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gQnV0LCBoYW5nIG9uLi4uIGRpZG4mIzM5O3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IGhhcmR3YXJlIG9mZmxvYWQ/CgpSaWdodCwgdGhlIGhhcmR3YXJlIG9mZmxvYWQsIHRoYXQmIzM5O3MgZG9uZSB3aXRoIGBldGh0b29sIC1LIGV0aDAgaHctdGMtb2ZmbG9hZCBvbmAuIElzIHRoZXJlIGFjdHVhbGx5IGEgY29uZmlnIG9wdGlvbiAqZXhwbGljaXRseSogZm9yIFRDIGhhcmR3YXJlIG9mZmxvYWQ/IEkgbmVlZCB0byB0cmFjayB0aGF0IGRvd24uIE15IG5leHQgbW92ZSBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBgSFdfVENfT0ZGTE9BRGAgb3B0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGVuYWJsZWQgdGhyb3VnaCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBpZiB0aGlzIGlzIGFsbCBpbXBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hXX1RDX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5ODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDIEhhcmR3YXJlIE9mZmxvYWQgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gaGFyZHdhcmUgb2ZmbG9hZCBmb3IgVHJhZmZpYyBDb250cm9sLCBvciBUQywgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIHRoZSBrZXJuZWwsIHByb3ZpZGVkIHRoZSBkcml2ZXIgaGFzIHRoZSBgTkVUSUZfRl9IV19UQ2AgZmxhZyBzZXQuIFRoYXQmIzM5O3MgZ29vZCwgaXQgbWVhbnMgdGhhdCBieSBlbmFibGluZyBgTkVUX0NMU19GTE9XRVJgIEkgc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2UgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgZHJpdmVyIHN1cHBvcnRzIGl0LiBBIHNpbXBsZSBmbG93ZXIgY2xhc3NpZmljYXRpb24gc2hvdWxkIGJlIGVub3VnaCB0byBzdGFydC4KCk5vdywgbXkgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIHNvIEkmIzM5O20gd29uZGVyaW5nIGlmIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgdG8gZnV6ei4gVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIG1vZGlmaWVzIGJvdGggYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBCdXQgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSBgdGNfYWRkX2Zsb3dgLCB3aGljaCBpcyB0aGUgY29ycmVjdCBlbnRyeSBmdW5jdGlvbi4gSG93ZXZlciwgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgIGlzIG5vdCBjYWxsZWQgZnJvbSB0aGUgb3RoZXIgZnVuY3Rpb24gSSB0aG91Z2h0IHdhcyBjb25uZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgc3RtbWFjX29wc2AsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoYXQgaXMgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgY29uZmlnX2w0X2ZpbHRlcmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWdfbDRfZmlsdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Nzk4PXN0YXRpYyBpbnQgZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjg1MjpzdGF0aWMgaW50IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy04NTMtXHRcdFx0XHQgICBib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYz04OTg9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHdtYWM0X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMC1cdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjkzMTpcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTM0PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNDEwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2Ny1cdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjk2ODpcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2OS1cdC5mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MgPSBkd21hYzVfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTcyPWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNTEwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTEwMDktXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzoxMDEwOlx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd21hYzRfY29uZmlnX2w0X2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAxMS1cdC5mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MgPSBkd21hYzVfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUyLVx0XHRcdFx0ICAgICBib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0Mjk9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4Z21hYzIxMF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTQ2NjpcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDY3LVx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM9MTQ4NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjE1MjE6XHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTUyMi1cdC5zZXRfYXJwX29mZmxvYWQgPSBkd3hnbWFjMl9zZXRfYXJwX29mZmxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTMwNz1zdHJ1Y3Qgc3RtbWFjX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwMi1cdFx0XHRcdHUzMiBtYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NDAzOlx0aW50ICgqY29uZmlnX2w0X2ZpbHRlcikoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNDA0LVx0XHRcdFx0Ym9vbCBlbiwgYm9vbCB1ZHAsIGJvb2wgc2EsIGJvb2wgaW52LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC00ODctXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBtYWMsIGNvbmZpZ19sM19maWx0ZXIsIF9fYXJncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODg6I2RlZmluZSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODk6XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBtYWMsIGNvbmZpZ19sNF9maWx0ZXIsIF9fYXJncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC00OTAtI2RlZmluZSBzdG1tYWNfc2V0X2FycF9vZmZsb2FkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTUzNT1zdGF0aWMgaW50IHRjX2FkZF9wb3J0c19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NjUtXHRpZiAoaHdfbWF0Y2gpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjU2NjpcdFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cdTAwM2VodywgZW50cnktXHUwMDNlaWR4LCB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNTY3LVx0XHRcdFx0XHQgICAgICBpc191ZHAsIHRydWUsIGludiwgaHdfbWF0Y2gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU3My1cdGlmIChod19tYXRjaCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NTc0Olx0XHRyZXQgPSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihwcml2LCBwcml2LVx1MDAzZWh3LCBlbnRyeS1cdTAwM2VpZHgsIHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NzUtXHRcdFx0XHRcdCAgICAgIGlzX3VkcCwgZmFsc2UsIGludiwgaHdfbWF0Y2gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTY0ND1zdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02NTMtXHRpZiAoZW50cnktXHUwMDNlaXNfbDQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjY1NDpcdFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cdTAwM2VodywgZW50cnktXHUwMDNlaWR4LCBmYWxzZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTY1NS1cdFx0XHRcdFx0ICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjMzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEMgRmxvd2VyIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBob3cgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCB0aGUgVHJhZmZpYyBDb250cm9sIChUQykgZmxvd2VyIG9mZmxvYWQuIEkgc2VlIHRoYXQgYHN0bW1hY19jb25maWdfbDRfZmlsdGVyYCBpcyBpbnZva2VkIGZyb20gYHRjX2FkZF9wb3J0c19mbG93YCBhbmQgYHRjX2RlbF9mbG93YC4gIGB0Y19hZGRfcG9ydHNfZmxvd2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGB0Y19hZGRfZmxvd2AuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGRyaXZlbiBieSB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgbWVjaGFuaXNtLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSW5pdGlhbGx5LCBJIGhhZCBicm9hZGVuZWQgdGhlIGZvY3VzIHN5bWJvbHMuIEhvd2V2ZXIsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlzICptb2RpZmllZCouIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgYXJlOgoKKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2AKKiAgIGB0Y19hZGRfZmxvd2AKKiAgIGB0Y19kZWxfZmxvd2AKKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYAoKSSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IGB0Y19hZGRfcG9ydHNfZmxvd2AgaXNuJiMzOTt0IHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhbmQgaXMgdGhlcmVmb3JlIG5vdCB0aGUgZm9jdXMgb2YgdGhpcyB3b3JrLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIHNlZWluZyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXMgdGhlIG1vc3QgcmVsZXZhbnQuIEkgd2FzIGFsc28gY3VyaW91cyBhYm91dCBgRFdNQUNfSU5URUxgLCBhbmQgdGhhdCBvbmUgaXMgZm9yIEludGVsIFF1YXJrL0VITC9UR0wgc3lzdGVtcy4gYFNUTU1BQ19QQ0lgIGlzIHRoZSBzdGFuZGFyZCBmb3IgZ2VuZXJpYyBQQ0ktYmFzZWQgc2V0dXBzLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgY29ubmVjdGlvbiB0byBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFNpbmNlIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBsaXZlcyBpbiBgZHd4Z21hYzJfY29yZS5jYCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpZiBgU1RNTUFDX1BDSWAgYWN0dWFsbHkgdHJpZ2dlcnMgb3IgdXNlcyB0aGF0IGZpbGUuIEkgbmVlZCB0byBleGFtaW5lIGBzdG1tYWNfcGNpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NjgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBkd3hnbWFjYCBEcml2ZXIgVXNhZ2UqKgoKUmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRob3NlIGBkd3hnbWFjYCBvcGVyYXRpb25zIHN0cnVjdHVyZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBjb25jZXJuZWQgd2l0aCB0aGUgdXNhZ2Ugb2YgYm90aCBgZHd4Z21hYzIxMF9vcHNgIGFuZCBgZHd4bGdtYWMyX29wc2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2Ugc3RydWN0dXJlcyBhcmUgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IHNpbXBsZSBncmVwLWFuZC1maW5kOyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiAqaG93KiB0aGVzZSBhcmUgYmVpbmcgdXNlZCDigJMgd2hldGhlciBpdCYjMzk7cyBkaXJlY3RseSBpbiBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdpdGhpbiBpbnRlcnJ1cHQgaGFuZGxlcnMsIGZvciBETUEgY29uZmlndXJhdGlvbiwgb3Igd2hhdGV2ZXIuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgY3JpdGljYWxpdHkgYW5kIHBvdGVudGlhbCBpbXBhY3QuIEFyZSB0aGV5IHVzZWQgc2ltaWxhcmx5LCBvciBhcmUgdGhlcmUgZGlzdGluY3QgZGlmZmVyZW5jZXMgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IFRoZSBnb2FsIGlzIHRvIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1vbiBkZXNpZ24gcGF0dGVybiBiZXR3ZWVuIHRoZSBkcml2ZXJzLCBvciB0aGUgZGlmZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyBvbiBoYXJkd2FyZSB2ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDYzOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hnbWFjMjEwX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDY0LWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDEzPXN0YXRpYyB2b2lkIGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgYm9vbCBlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDI5OmNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0MzAtXHQuY29yZV9pbml0ID0gZHd4Z21hYzJfY29yZV9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNjAtXHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MDQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgaHdpZi5jYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaHdpZi5jYC4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgdGhlIGNvcmUgaW50ZXJmYWNlIGZpbGUgZm9yIGhhcmR3YXJlIGludGVyYWN0aW9uLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgbG93LWxldmVsIHN0dWZmIGxpdmVzLCB0aGUgYml0IHR3aWRkbGluZywgdGhlIHJlZ2lzdGVyIGFjY2VzcywgdGhlIGludGVycnVwdCBoYW5kbGluZyDigJMgYWxsIHRoZSBuaXR0eS1ncml0dHkgdGhhdCBhY3R1YWxseSAqbWFrZXMqIHRoaW5ncyBoYXBwZW4uIEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN1c3BlY3RzIEkgZXhwZWN0IHRvIHNlZTogaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGRldmljZSBkcml2ZXIgZW50cnkgcG9pbnRzLCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIGRvc2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHBvc3NpYmx5IHNvbWUgZGVidWdnaW5nIG1hY3Jvcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGNvbmZpZ3VyYXRpb25zLCBjbG9jayBzZXR0aW5ncywgYW5kIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb25zLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBpZGVudGlmeSB0aGUga2V5IGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbiwgbWF5YmUgc3BvdCBzb21lIG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBqdXN0IG9uIGEgZmlyc3QgcGFzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyMTBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNjAtXHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NjIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZSBpbiBgaHdpZi5jYCwgYWltZWQgYXQgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE9wZXJhdGlvbiBTZWxlY3Rpb24gTG9naWMgaW4gYGh3aWYuY2AqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgaHdpZi5jYCBmaWxlIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBvcGVyYXRpb24gc2VsZWN0aW9uIG1lY2hhbmlzbSB3b3Jrcy4gTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHRoZSBkZWNpc2lvbiBwYXRoIHRoYXQgdGhlIGNvZGUgdXNlcyB0byBjaG9vc2UgdGhlIGNvcnJlY3Qgc2V0IG9mIG9wZXJhdGlvbnMgb3IgaGFuZGxlcnMuIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1pbmcsIHRoYXQgJiMzNDtod2lmJiMzNDsgcHJvYmFibHkgc3RhbmRzIGZvciAmIzM0O0hhcmR3YXJlIEludGVyZmFjZSYjMzQ7LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3RseSBmcm9tIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuIEkgd2FudCB0byBwaW5wb2ludCB0aGUga2V5IHZhcmlhYmxlcyBhbmQgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IGRyaXZlIHRoaXMgc2VsZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBsaWtlbHkgdG8gYmUgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGlzIHRoaXMgaGVhdmlseSBjb21waWxlLXRpbWUgZGVmaW5lZD8gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhbmFseXplIHRoZSBsb2dpYy4KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBmdW5jdGlvbiBwb2ludGVycywgYSBqdW1wIHRhYmxlLCBvciBwZXJoYXBzIHNvbWUgZm9ybSBvZiBsb29rLXVwIGJhc2VkIG9uIGRldmljZSBJRCBvciBjYXBhYmlsaXRpZXM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvciBldmlkZW5jZSBvZiBwb2x5bW9ycGhpc20sIHNpbmNlIGl0IHdvdWxkIGJlIGxpa2VseSBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIG1vZHVsZXMgdG8gcHJvdmlkZSB0aGVpciBvd24gaW50ZXJmYWNlcy4gQXJlIHRoZXJlIGFueSBhYnN0cmFjdGlvbiBsYXllcnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29kZSBhZGFwdHMgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIEFyZSB0aGVyZSBtdWx0aXBsZSBgaHdpZmAgaW5zdGFuY2VzIHBvc3NpYmxlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciwgY29udmVyc2VseSwgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoYXQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIG1pZ2h0IGNyZWF0ZT8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IHN3aXRjaCBzdGF0ZW1lbnRzIG9yIGBpZi9lbHNlYCBjaGFpbnMgdGhhdCBhcmUgdXNlZCB0byBkaXNwYXRjaCB0aGUgY2FsbHMsIGFuZCBhc3Nlc3MgdGhlaXIgZWZmaWNpZW5jeSBhbmQgY2xhcml0eS4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGNoZWNrIGZvciBlcnJvciBoYW5kbGluZywgb3IgYW55IGZhbGxiYWNrIG1lY2hhbmlzbXMgaWYgbm8gYXBwcm9wcmlhdGUgb3BlcmF0aW9uIGlzIGZvdW5kLiBBbnkgdW51c3VhbCBvciBjbGV2ZXIgdGVjaG5pcXVlcyBhcmUgd29ydGggbXkgYXR0ZW50aW9uLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgYmVoaW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaHdpZl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTAwPWludCBzdG1tYWNfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MTExOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMi1cdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTQtc3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMxOS1cdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzIwOlx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMjEtXHRzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gdmVyc2lvbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MTkKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBzdG1tYWNfcGNpYCYjMzk7cyBDb3JlIFR5cGUqKgoKQWxyaWdodCwgSSBzZWUgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlzIGJhc2VkIG9uIGJvdGggYGNvcmVfdHlwZWAgYW5kIGBzbnBzdmVyYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciB0aGVzZSBzb3J0cyBvZiBkcml2ZXIgY29uZmlndXJhdGlvbnMuIE5vdywgdGhlIGBTVE1NQUNfUENJYCBkZWZpbml0aW9uLCB3aGljaCBJIGFzc3VtZSByZWZlcnMgdG8gdGhlIFN5bm9wc3lzIGRyaXZlciBvdmVyIFBDSSwgcmVsaWVzIG9uIGBzdG1tYWNfcGNpX2luZm9gLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhhdCBzdHJ1Y3R1cmUsIGBzdG1tYWNfcGNpX2luZm9gLCBhY3R1YWxseSBjb250YWluIHRoZSBgY29yZV90eXBlYCBJJiMzOTttIGxvb2tpbmcgZm9yPyBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIGlzbiYjMzk7dCBpdD8gSWYgaXQgZG9lcywgdGhlbiB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBJZiBub3QsIHRoZW4gdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBicm9rZW4uIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYHN0bW1hY19wY2kuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGBzdG1tYWNfcGNpX2luZm9gIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmlsZSByZXZlYWxzLiBOZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGhvdyBgY29yZV90eXBlYCBpcyBwb3B1bGF0ZWQgd2l0aGluIHRoZSBgc3RtbWFjX3BjaV9pbmZvYCBzdHJ1Y3R1cmUsIGFuZCBjb25maXJtIHRoYXQgaXMgaW5kZWVkIHRoZSBpbnRlbmRlZCBtZXRob2Qgb2YgdGhlIHNlbGVjdGlvbiBwcm9jZWR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2lfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNjAKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgRGVmYXVsdCBEYXRhIGZvciBOZXR3b3JrIERyaXZlcnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgZGVmYXVsdCBkYXRhIGNvbmZpZ3VyYXRpb25zIGZvciBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgIGFuZCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY29uc2lkZXJlZCB0aGUgYmFzZWxpbmUgZm9yIGVhY2ggb2YgdGhlc2UgZHJpdmVycy4gQ29tcGFyaW5nIHRoZXNlIHR3byBzZXRzIG9mIGRlZmF1bHRzLCBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlaXIgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBob3cgdGhleSBtaWdodCBkaWZmZXIgaW4gdGhlaXIgaW5pdGlhbCBzZXR1cC4gVGhpcyBjb21wYXJpc29uIHdpbGwgaGVscCBtZSBwaW5wb2ludCBhbnkgcG90ZW50aWFsIHJlZHVuZGFuY2llcywgb3B0aW1pemF0aW9ucyBvciBhcmVhcyBvZiBjdXN0b21pemF0aW9uIHRoYXQgYXJlIHR5cGljYWxseSBoYW5kbGVkIGF0IHRoZSBzeXN0ZW0gbGV2ZWwgdmVyc3VzIHdoYXQgZWFjaCBzcGVjaWZpYyBkcml2ZXIgZGljdGF0ZXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnNpZ2h0cyB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGhvbGQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NucHNfZ21hYzVfZGVmYXVsdF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01MD1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjU0OnN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTUtXHRcdFx0XHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTEwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMzpcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERhdGEgRmlsZSoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyLiBMZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gVGhlIGltbWVkaWF0ZSBjdWUgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgLiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbiAtICYjMzQ7c25wcyYjMzQ7IHN1Z2dlc3RzIFNpbmdsZSBOdWNsZW90aWRlIFBvbHltb3JwaGlzbXMgZGF0YSwgJiMzNDtnbWFjNSYjMzQ7IHByb2JhYmx5IGRlbm90ZXMgYSBzcGVjaWZpYyBleHBlcmltZW50LCBtZXRob2RvbG9neSwgb3IgdmVyc2lvbiwgYW5kICYjMzQ7ZGVmYXVsdF9kYXRhJiMzNDsgbGlrZWx5IGluZGljYXRlcyBlaXRoZXIgdGhlIHJhd2VzdCBmb3JtIG9yIGEgY3VyYXRlZCBiYXNlbGluZSBkYXRhc2V0LiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIGxpa2VseSBmaWxlIGZvcm1hdCAtIGlzIGl0IGEgVkNGLCBhIHBsYWluIHRleHQgdGFibGUsIGEgYmluYXJ5IGZvcm1hdD8gVGhlICYjMzk7ZGVmYXVsdCYjMzk7IHBhcnQgaW1wbGllcyBhIHN0YXJ0aW5nIHBvaW50LCBzbyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcHJlcHJvY2Vzc2luZyBzdGVwcyB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gYXBwbGllZC4gS25vd2luZyB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgZm91bmRhdGlvbmFsIGZvciBhbnkgZG93bnN0cmVhbSBhbmFseXNpcy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgbWV0YWRhdGEsIHRoZSBkYXRhIHN0cnVjdHVyZSwgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBhc3NvY2lhdGVkIHdpdGggaXQuIEZyb20gdGhlIG5hbWUgYWxvbmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCB0aGUgYW5hbHl0aWNhbCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTQ6XHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICA1NTpcdFx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICA1NjpcdHtcbiAgNTc6XHRcdGludCBpO1xuICA1ODpcdFxuICA1OTpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbiAgNjA6XHRcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbiAgNjE6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICA2MjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4gIDYzOlx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4gIDY0Olx0XG4gIDY1Olx0XHQvKiBTZXQgZGVmYXVsdCBudW1iZXIgb2YgUlggYW5kIFRYIHF1ZXVlcyB0byB1c2UgKi9cbiAgNjY6XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XG4gIDY3Olx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xuICA2ODpcdFxuICA2OTpcdFx0cGxhdC1cdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcbiAgNzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiAgNzE6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcbiAgNzI6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLndlaWdodCA9IDI1O1xuICA3MzpcdFx0XHRpZiAoaSBcdTAwM2UgMClcbiAgNzQ6XHRcdFx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcbiAgNzU6XHRcdH1cbiAgNzY6XHRcbiAgNzc6XHRcdHBsYXQtXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcbiAgNzg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspXG4gIDc5Olx0XHRcdHBsYXQtXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDgwOlx0XG4gIDgxOlx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDgyOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgODM6XHRcbiAgODQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgODU6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xuICA4ODpcdFx0cGxhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcbiAgODk6XHRcdGlmICghcGxhdC1cdTAwM2VheGkpXG4gIDkwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA5MTpcdFxuICA5MjpcdFx0cGxhdC1cdTAwM2VheGktXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcbiAgOTM6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTg4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBBIFBvaW50IG9mIENsYXJpZmljYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvZGUmIzM5O3Mgc2V0dGluZyBgcGxhdC0mZ3Q7Y29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSB1bmRlcnN0YW5kIHRoZSBkcml2ZXIgaXMgc3BlY2lmeWluZyB0aGUgY29yZSB0eXBlIGhlcmUuIEJ1dCwgd2hhdCYjMzk7cyBpdHMgcmVsYXRpb25zaGlwIHdpdGggYHN0bW1hY19kZWZhdWx0X2RhdGFgPyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHdlIG92ZXJyaWRpbmcgc29tZXRoaW5nIHByZS1jb25maWd1cmVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgdHlwZT8gSXMgYHN0bW1hY19kZWZhdWx0X2RhdGFgIGJlaW5nIGhhbmRsZWQgYXQgYSBkaWZmZXJlbnQgcG9pbnQgaW4gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIHBvdGVudGlhbCBmb3IgY29uZmxpY3Qgb3IgaWYgdGhlcmUgaXMgYSByZWR1bmRhbnQgYXNzaWdubWVudC4gVGhpcyBjb3VsZCBiZSBjcnVjaWFsIGZvciBlbnN1cmluZyBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkIHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgY291bGQgcmVsYXRlIHRvIGNsb2NrIHNldHRpbmdzLCBETUEgcGFyYW1ldGVycywgb3IgZXZlbiByZWdpc3RlciBvZmZzZXRzIGRlcGVuZGluZyBvbiB0aGUgR01BQyB2ZXJzaW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNoZWNrIHdoYXQgYHN0bW1hY19kZWZhdWx0X2RhdGFgIHByb3ZpZGVzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGN1cnJlbnQgc2V0dGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHN0bW1hY19kZWZhdWx0X2RhdGFgIGlzIGJlaW5nIGhhbmRsZWQgYXQgYSBkaWZmZXJlbnQgcG9pbnQgaW4gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgdGhlIHF1ZXN0aW9uIHRoYXQgSSB3YW50IHRvIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMzOlx0c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICAzNDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDM1Olx0e1xuICAzNjpcdFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbiAgMzc6XHRcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG4gIDM4Olx0XG4gIDM5Olx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDQwOlx0XHRwbGF0LVx1MDAzZXBoeV9hZGRyID0gMDtcbiAgNDE6XHRcdHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuICA0MjpcdFxuICA0MzpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibCA9IDMyO1xuICA0NDpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibHg4ID0gdHJ1ZTtcbiAgNDU6XHRcdC8qIFRPRE86IEFYSSAqL1xuICA0NjpcdFxuICA0NzpcdFx0cmV0dXJuIDA7XG4gIDQ4Olx0fVxuICA0OTpcdFxuICA1MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbiAgNTE6XHRcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4gIDUyOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyMTUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYGNvbW1vbl9kZWZhdWx0X2RhdGFgIGFuZCBpdHMgUG90ZW50aWFsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgc2V0dGluZy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHNldHRpbmcgYHBsYXQtJmd0O2NvcmVfdHlwZSA9IERXTUFDX0NPUkVfTUFDO2AuIFRoYXQgZmVlbHMgbGlrZSB0aGUgbW9zdCBwcm9iYWJsZSBvdXRjb21lIGdpdmVuIHRoZSBjb250ZXh0LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBodW5jaC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgaXQsIGluIGZhY3QsIGRvZXMgd2hhdCBJIGV4cGVjdC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNvcmUgdHlwZSBhc3NpZ25tZW50IHRvIHVuZGVyc3RhbmQgaXRzIGRvd25zdHJlYW0gaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGUgZXhhY3QgbWVjaGFuaXNtIGFuZCBhbnkgc2lkZSBlZmZlY3RzLiBUaGlzIGtpbmQgb2YgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIHJvdXRpbmUgdG8gbWUgLSBJIGNhbiYjMzk7dCBsZWF2ZSBhc3N1bXB0aW9ucyB1bnZhbGlkYXRlZCwgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGZ1bmRhbWVudGFsIHNldHRpbmdzLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBiZWluZyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21tb25fZGVmYXVsdF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOT1zdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjM6c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM2LVx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzozNzpcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzg4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgRGVmYXVsdCBEYXRhKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuICYjMzQ7Y29tbW9uX2RlZmF1bHRfZGF0YSYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiwgdGhlIGNvcmUgc2V0dGluZ3MgdGhpcyBzeXN0ZW0gYXNzdW1lcyBvdXQgb2YgdGhlIGJveC4gVGhpcyBpcyB3aGVyZSB0aGUgZm91bmRhdGlvbiBpcyBsYWlkLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFzc3VtcHRpb25zIGFyZSBjb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBmaXJzdCBsaW5lIG9mIGN1c3RvbWl6YXRpb24gYmVnaW5zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYSBzb2xpZCBncmFzcCBvZiB0aGVzZSBkZWZhdWx0cyBpcyBjcnVjaWFsLiBJZiBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgcHJlLXNldCBjb25maWd1cmF0aW9ucywgSSBjYW4gbW9yZSBlZmZlY3RpdmVseSBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLCBvcHRpbWl6ZSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBhbmQgdHJvdWJsZXNob290IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0IGlzIGFsd2F5cyBiZXN0IHRvIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRlZmF1bHQgc3RhdGVzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgd2hlcmUgSSBzdGFydC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIzOlx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDI0Olx0e1xuICAyNTpcdFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xuICAyNjpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG4gIDI3Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbiAgMjg6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICAyOTpcdFxuICAzMDpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjExCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBHTUFDIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIGxvb2tpbmcgYXQgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YC4gUmlnaHQsIHN0YW5kYXJkIEdNQUMgY29yZXMuIE5vdywgd2hlcmUgYXJlIHdlIHdpdGggdGhvc2UgbG93LWxldmVsIGNvbmZpZ3VyYXRpb25zPyBBaCwgaG9sZCBvbi4gSSYjMzk7dmUgc3BvdHRlZCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCB0aGVyZSYjMzk7cyBhIGRpZmZlcmVuY2UuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGljaCBjb3JlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgdXNlcyBgZHd4Z21hYzIxMF9vcHNgPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IG9wZXJhdGlvbnMgc3RydWN0dXJlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgTDQgZmlsdGVyIGNvbmZpZ3VyYXRpb24uIFdlJiMzOTtyZSBnZXR0aW5nIGNsb3NlciB0byBtYWtpbmcgdGhpcyBtYWtlIHNlbnNlLiBHb3R0YSBsb29rIHVwIHRoYXQgY29yZSB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTgtXHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU5Olx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVx0XHQudmxhbiA9IFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzA1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZS4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gSSYjMzk7bSBub3QgZ29pbmcgdG8gYm90aGVyIHdpdGggdGhlIGVudGlyZSBmaWxlIHJpZ2h0IG5vdy4gSSYjMzk7bGwgc3RhcnQgYnkgZm9jdXNpbmcgaW4gYXJvdW5kIGxpbmUgMjU4LiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSSYjMzk7bGwgcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc29tZSBjb250ZXh0IGFuZCBmaWd1cmUgb3V0IHdoYXQgaXMgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4gMjYwOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiAyNjE6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyNjI6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI2MzpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjY0Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyNjU6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyNjY6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjY3Olx0XHRcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxuIDI2ODpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNjk6XHRcdH0sIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlZXAgRGl2ZSBvbiBgY29yZV90eXBlYCBEZXRlcm1pbmF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGVudHJ5IGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsLCB0aGUgKmNvcmUqLCBgY29yZV90eXBlYCBvZiB0aGlzIHRoaW5nPyBJIG5lZWQgdG8gZ2V0IHRoaXMgcmlnaHQgYmVjYXVzZSB0aGUgZW50aXJlIHN5c3RlbSwgZnJvbSBkYXRhIG1vZGVscyB0byBkb3duc3RyZWFtIHByb2Nlc3NpbmcsIGhpbmdlcyBvbiB0aGlzIGluaXRpYWwgY2xhc3NpZmljYXRpb24uIEkgY2FuJiMzOTt0IGp1c3QgcGljayBzb21ldGhpbmcgYXQgcmFuZG9tOyBpdCBuZWVkcyB0byBiZSBkZWZlbnNpYmxlLCBzY2FsYWJsZSwgYW5kIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgZXNzZW5jZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkLgoKQW0gSSBsb29raW5nIGF0IGEgYHRyYW5zYWN0aW9uYCwgYW4gYGV2ZW50YCwgb3IgYSBgcmVwb3J0YD8gSXMgaXQgc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgbGlrZSBgc2Vuc29yX2RhdGFgIG9yIGBhbm9tYWx5X2RldGVjdGlvbl9yZXN1bHRgPyBPciBwZXJoYXBzIGEgY29tcG9zaXRlIHRoYXQgaXMgYSBgZGVyaXZlZF9tZXRyaWNgIG9yIGFuIGBhZ2dyZWdhdGVkX3N0YXRpc3RpY2A/IEl0IGNvdWxkIGJlIGEgYG1ldGFkYXRhX3VwZGF0ZWDigKYgdGhlIG9wdGlvbnMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIHJpZ2h0IGNob2ljZSBpbXBhY3RzIGhvdyBJIGhhbmRsZSBpdHMgYXR0cmlidXRlcywgdmFsaWRhdGUgdGhlIHNjaGVtYSwgYW5kIGludGVncmF0ZSBpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNhcmVmdWxseSBhbmFseXplIGl0cyBzdHJ1Y3R1cmUsIGNvbnRleHQsIGFuZCBwdXJwb3NlLiBJIGNhbiYjMzk7dCBsZXQgdGhpcyBiZSBqdXN0IGFub3RoZXIgZGF0YSBlbnRyeS4gVGhpcyAqY29yZV90eXBlKiBuZWVkcyB0byBiZSB0aGUgUm9zZXR0YSBTdG9uZSB0aGF0IHVubG9ja3MgaXRzIG1lYW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNDA6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI0MTpcdFx0XHQubW9kZSA9IFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxuIDI0MjpcdFx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG4gMjQzOlx0XHRcdC5tbWMgPSBcdTAwMjZkd21hY19tbWNfb3BzLFxuIDI0NDpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyNDU6XHRcdFx0LnNldHVwID0gZHdtYWM0X3NldHVwLFxuIDI0NjpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNDc6XHRcdH0sIHtcbiAyNDg6XHRcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG4gMjQ5Olx0XHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbiAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTg4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqWEdNQUMgUENJIERldmljZSBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGEgYERXTUFDX0NPUkVfWEdNQUNgIGluc3RhbmNlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGl0cyBQQ0kgZGV2aWNlIHN0YXR1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlcmUgYW55IFBDSSBkZXZpY2VzIGxldmVyYWdpbmcgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBJUCBjb3JlPyBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJcyB0aGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGluIFBDSSBkZXZpY2VzLCBvciBpcyBpdCB0eXBpY2FsbHkgdXNlZCBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBsaWtlIHdpdGggYSBkaWZmZXJlbnQgYnVzIG9yIHBlcmlwaGVyYWwgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguIEkgd2lsbCBuZWVkIHRvIGRldGVybWluZSBpZiBJJiMzOTt2ZSBkZWFsdCB3aXRoIHRoaXMgYmVmb3JlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSBhIHRob3JvdWdoIGRldmljZSBkYXRhYmFzZSBhbmQgc291cmNlIGNvZGUgZGl2ZSB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDX0NPUkVfWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlx0cGxhdF9kYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNTEtXHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0ODpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVx0XHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNzA6XHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3MS1cdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwNi1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDgtXHRcdCAgICBkZXZfaWQgIT0gZW50cnktXHUwMDNlZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDM19YX09GRlNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXHRcdFx0cHJpdi1cdTAwM2Vlc3RhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgRVNUX1hHTUFDX09GRlNFVDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTU3LVx0XHRjdHJsIFx1MDAyNj0gfkVTVF9YR01BQ19QVE9WO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cdGlmIChzdGF0dXMgXHUwMDI2IEVTVF9CVFJFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUyLVx0XHRcdGJ0cmwgPSBGSUVMRF9HRVQoRVNUX1hHTUFDX0JUUkwsIHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjMwOTpcdGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cdFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzYxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dyZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXHRcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3Ny1cdFx0bWVtY3B5KFx1MDAyNnJlZ19zcGFjZVtFVEhUT09MX0RNQV9PRkZTRVRdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU2Nj1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjAxLVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYwMjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYwMy1cdFx0c2VxX3ByaW50ZihzZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYyNjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjctXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MzQtXHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfNF8wMCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjM1Olx0ICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjM2LVx0XHRzZXFfcHJpbnRmKHNlcSwgXCYjMzQ7XFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzY2PXN0YXRpYyB2b2lkIHN0bW1hY19wcmludF9hY3RwaHlpZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzgyOlx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzgzLVx0XHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzQwOD1zdGF0aWMgaW50IHN0bW1hY19od19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MzAtXHRpZiAoKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzUzMTpcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUzMi1cdCAgICAhcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJpd3Rfb2ZmKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzk3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwMDU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDA2LVx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBYR01BQ19KVU1CT19MRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVx0XHRyYXRlcyA9IHN0bW1hY19zdW44aV9jc3JfdG9fbWRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXHRcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2MjI6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cdFx0bmV3X2J1cy1cdTAwM2VyZWFkID0gXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjY2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVx0XHRzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jNDUobmV3X2J1cywgMCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O3NucHMsZHd4Z21hY1wmIzM0OykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNTQ5LVx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTg3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ292ZXJhZ2Ugb2YgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgaXMgdXNlZCBieSBgZHdtYWMtc29jZnBnYS5jYCwgYGR3bWFjLXRlZ3JhLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYCB3aGVuIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyBgc25wcyxkd3hnbWFjYC4gQnV0IGl0JiMzOTtzICpub3QqIHVzZWQgYnkgYHN0bW1hY19wY2kuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiBpdCYjMzk7cyBub3QgcHJlc2VudCBpbiB0aGUgUENJIGNvbmZpZ3VyYXRpb24sIGhvdyBhbSBJIGdvaW5nIHRvIGZ1enogaXQgZWZmZWN0aXZlbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gU3l6a2FsbGVyIG1ha2VzIGZ1enppbmcgcGxhdGZvcm0gZGV2aWNlcyBlYXNpZXIgdGhyb3VnaCBkZXZpY2V0cmVlIGluamVjdGlvbiwgYHN5el9kZXZyZXNgLCBvciBzaW1pbGFyIHRlY2huaXF1ZXMsIGJ1dCBpdCYjMzk7cyBzdGlsbCBtb3JlIGNoYWxsZW5naW5nLgoKVGhlbiwgSSByZW1lbWJlciB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBhbmQgKnRoYXQmIzM5O3MqIHVzZWQgYnkgKmFsbCogc3RtbWFjIGRldmljZXMgdGhhdCBzdXBwb3J0IFRDIG9mZmxvYWQuIEV4Y2VsbGVudC4gYHRjX2FkZF9iYXNpY19mbG93YCBpcyBpbiBgc3RtbWFjX3RjLmNgIGFuZCBpcyB1c2VkIGJ5IGBkd21hYzRfdGNfb3BzYCBhbmQgYGR3bWFjNTEwX3RjX29wc2AuIE5vdywgYGR3bWFjNF90Y19vcHNgIGlzIHVzZWQgYnkgYERXTUFDX0NPUkVfR01BQzRgLCBhbmQgKnRoYXQqICppcyogdXNlZCBieSBQQ0khIFNwZWNpZmljYWxseSwgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYCBzZXRzIGBEV01BQ19DT1JFX0dNQUM0YC4gU28sIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIHRoZSBQQ0kgcGF0aCwgd2hpY2ggaXMgbXVjaCBlYXNpZXIgdG8gZnV6ei4KCk5vdywgdGhhdCBzYWlkLCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgdXNlZC4gU28sIGlkZWFsbHksIEkmIzM5O2QgbGlrZSB0byBnZXQgdGhlIFhHTUFDIHBhdGggd29ya2luZy4gQ2FuIEkgZW5hYmxlIGBEV01BQ19TT0NGUEdBYCBvciBgRFdNQUNfVEVHUkFgPyBZZXMsIEkgY2FuLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzLCBidXQgYXQgbGVhc3QgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBicm9hZGVuIHRoZSBmdXp6aW5nIHN1cmZhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19TT0NGUEdBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwMzpjb25maWcgRFdNQUNfU09DRlBHQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDQtXHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyMDIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipBbmFseXppbmcgYERXTUFDX1NPQ0ZQR0FgIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBzZWUgYERXTUFDX1NPQ0ZQR0FgIG1lbnRpb25lZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIGl0IC0gaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBkb2VzIHRoaXMgdGhpbmcgcmVseSBvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gYXNzZXNzIGl0IHByb3Blcmx5LiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gQXJlIHdlIHRhbGtpbmcgaGFyZHdhcmUsIG90aGVyIHNvZnR3YXJlIG1vZHVsZXMsIHNwZWNpZmljIGRldmljZSBkcml2ZXJzLCBvciBhIGNvbWJpbmF0aW9uPyBUaW1lIHRvIGZpbmQgb3V0LiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIHdvcmsgYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMzpcdGNvbmZpZyBEV01BQ19TT0NGUEdBXG4gMjA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMDU6XHRcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXG4gMjA2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcbiAyMDc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjA4Olx0XHRzZWxlY3QgTURJT19SRUdNQVBcbiAyMDk6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDIxMDpcdFx0c2VsZWN0IFBDU19MWU5YXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcbiAyMTM6XHRcbiAyMTQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjE1Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXG4gMjE2Olx0XHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxuIDIxNzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYzOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHRoZSBwYXRjaCYjMzk7cyByZWFjaCBkZXBlbmRzIG9uIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbjogYE9GICZhbXA7JmFtcDsgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpYC4gU3l6a2FsbGVyIGNhbiwgb2YgY291cnNlLCBlbmFibGUgZWl0aGVyIGBDT01QSUxFX1RFU1RgIG9yIGBBUkNIX0lOVEVMX1NPQ0ZQR0FgLCBidXQsIGFuZCBoZXJlJiMzOTtzIHRoZSBjYXRjaCwgU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NC4gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4KCklmIEkganVzdCBlbmFibGUgYERXTUFDX1NPQ0ZQR0FgIGFuZCBgQ09NUElMRV9URVNUYCwgaXQgKndpbGwqIGNvbXBpbGUsIG5vIHByb2JsZW0gdGhlcmUuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBpdCBiZSAqcHJvYmVkKj8gUGxhdGZvcm0gZGV2aWNlcyB1c3VhbGx5IHJlcXVpcmUgYSBEZXZpY2UgVHJlZSBub2RlIG9yIHBsYXRmb3JtIGRhdGEuIFN5emthbGxlciBoYXMgdGhpcyBwc2V1ZG8tZGV2aWNlIGluamVjdGlvbiBtZWNoYW5pc20sIHRoaW5ncyBsaWtlIGBzeXpfZGV2cmVzYCwgYnV0IGl0cyBhIGJpdCBsaW1pdGVkLiBIb3dldmVyLCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB0aHJvdWdoIFBDSSwgYW5kIHRoYXQmIzM5O3MgZXh0cmVtZWx5IGVhc3kgdG8gZnV6ei4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4KCkkgc2hvdWxkIHJlZmluZSB0aGUgYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBpbmNsdWRlOgoKKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2AKKiAgIGB0Y19hZGRfZmxvd2AKKiAgIGB0Y19kZWxfZmxvd2AKKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYAoKTm93LCByZWdhcmRpbmcgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLCBpdCAqbWlnaHQqIG5vdCBiZSByZWFjaGFibGUgaWYgYERXTUFDX0NPUkVfWEdNQUNgIGlzbiYjMzk7dCBwcm9iZWQuIEhvd2V2ZXIsIGl0ICppcyogcGFydCBvZiB0aGUgcGF0Y2gsIHNvIEkgbmVlZCB0byBpbmNsdWRlIGl0IGFueXdheS4gSWYgU3l6a2FsbGVyICpkb2VzKiBtYW5hZ2UgdG8gcHJvYmUgYSBgZHd4Z21hY2AgZGV2aWNlLCB0aGVuIGl0IHdpbGwgZnV6eiBpdC4gVGhhdCYjMzk7cyBhIGdvb2QgdGhpbmcuCgpJIHNob3VsZCBhbHNvIGNoZWNrIGZvciBvdGhlciByZXF1aXJlZCBjb25maWdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpTbywgSSBuZWVkIHRvIGNoZWNrOgoKKiAgIGBTVE1NQUNfRVRIYAoqICAgYFNUTU1BQ19QQ0lgCiogICBgTkVUX0NMU19GTE9XRVJgCgpJcyB0aGVyZSBhbnkgY29uZmlnIHRoYXQgaXMgYSBkZXBlbmRlbmN5IGZvciBgdGNfYWRkX2Jhc2ljX2Zsb3dgPyBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBpbiBgc3RtbWFjX3RjLmNgLiBMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgdGhhdCBgc3RtbWFjX3RjLmNgIGNvbXBpbGVzIHdpdGggdGhlIGJhc2UgY29uZmlndXJhdGlvbnMgSSBoYXZlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190Yy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTktXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBzdG1tYWMgVEMgRmxvd2VyIE9mZmxvYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgVEMgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBTaW5jZSBgU1RNTUFDX0VUSGAgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNhbiBxdWlja2x5IHZlcmlmeSB0aGF0IGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgc3RhdGljLCBsaWtlIEkgdGhvdWdodCwgYW5kIGFzIGEgcmVzdWx0LCBJIGNhbiBqdXN0IGluY2x1ZGUgaXQgaW4gdGhlIGxpc3QuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFkZGluZyBwcm90b2NvbCB2YWxpZGF0aW9uLCBhbmQgYWxzbyBhZGp1c3RzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgY29kZSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlLiBDcnVjaWFsbHksIHRoZSBzdG1tYWMgZHJpdmVyIGFsc28gc3VwcG9ydHMgUENJIHZpYSBgU1RNTUFDX1BDSWAsIHdoaWNoIG1lYW5zIGl04oCZcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoaXMgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgaXRzIGF0dGFjayBzdXJmYWNlLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHRjX2FkZF9iYXNpY19mbG93YCwgYHRjX2FkZF9mbG93YCwgYHRjX2RlbF9mbG93YCwgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSnVzdCB0byBkb3VibGUtY2hlY2ssIGl0IGxvb2tzIGxpa2UgYHRjX2FkZF9mbG93YCBhbmQgYHRjX2RlbF9mbG93YCBhcmUgYWxzbyBzdGF0aWMsIHNvIEkgY2FuIGFkZCB0aGVtIHRvIHRoZSBsaXN0LgoKRmluYWxseSwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY29uZmlncy4gV2UgYWxyZWFkeSBoYXZlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHNob3VsZCBhbHNvIHZlcmlmeSB0aGF0IGBORVRfQ0xTX0ZMT1dFUmAgaXMgZW5hYmxlZCwgYXMgaXQgcHJvdmlkZXMgdGhlIGNvcmUgZmxvd2VyIGZ1bmN0aW9uYWxpdHkuIEFkZGl0aW9uYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBgQ09ORklHX05FVF9TQ0hfSU5HUkVTU2AuIEkgYmVsaWV2ZSB0aGlzIGlzIHJlcXVpcmVkIHRvIGF0dGFjaCB0aGUgZmxvd2VyIGZpbHRlciB0byB0aGUgaW50ZXJmYWNlIHZpYSBjb21tYW5kcyBsaWtlIGB0YyBxZGlzYyBhZGQgZGV2IGV0aDAgaW5ncmVzc2AgYW5kIGB0YyBmaWx0ZXIgYWRkIGRldiBldGgwIHBhcmVudCBmZmZmOiBwcm90b2NvbCBpcCBmbG93ZXIgLi4uYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfSU5HUkVTUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzgzOAoJCQkJCQkJb3V0cHV0OiAyMjUKCQkJCQkJCXRob3VnaHRzOiA1ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB3ZSBuZWVkIGBORVRfU0NIX0lOR1JFU1NgIHRvIGF0dGFjaCB0aG9zZSBpbmdyZXNzIGZpbHRlcnMsIGFuZCBJJiMzOTttIGNvbmZpZGVudCB0aGF0JiMzOTtzIGFsbCB3ZSBuZWVkIGhlcmUuIE5vIG5lZWQgZm9yIGBORVRfSFdfRVhBQ1RfTUFUQ0hgOyBgTkVUX0NMU19GTE9XRVJgIGlzIHN1ZmZpY2llbnQuIFNvLCBJJiMzOTtsbCBhZGQgYE5FVF9TQ0hfSU5HUkVTU2AgdG8gdGhlIGNvbmZpZ3MsIGVhc3kuCgpOb3csIEkgd2FudGVkIHRvIGRvdWJsZS1jaGVjayBpZiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGJlaW5nIGNhbGxlZCBmb3IgZWdyZXNzIGFzIHdlbGwuIEFoLCByaWdodCwgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAgaXMgY2FsbGVkIGZvciBib3RoIGluZ3Jlc3MgYW5kIGVncmVzcywgc28gd2UmIzM5O3JlIGNvdmVyZWQuIFRob3VnaCwgVEMgb2ZmbG9hZCBpcyAqdXN1YWxseSogaW5ncmVzcyBmb3IgZmxvd2VyIGZpbHRlcnMsIGl0ICpjYW4qIGJlIGVncmVzcyB0b28uIFRoZSBpbmNsdXNpb24gb2YgYE5FVF9TQ0hfSU5HUkVTU2AgaXMgYSBzb2xpZCwgZGVmZW5zaXZlIGFkZGl0aW9uLiBHb29kLCBnb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSB0cmlzdGF0ZSBzdGF0dXMgb2YgdGhlc2Ugb3B0aW9ucy4gYFNUTU1BQ19FVEhgIC0geWVzLCB0cmlzdGF0ZS4gYFNUTU1BQ19QQ0lgIC0geWVzLCBhbHNvIHRyaXN0YXRlLiBgTkVUX0NMU19GTE9XRVJgIC0gWWVwLCB0cmlzdGF0ZS4gQW5kIGZpbmFsbHksIGBORVRfU0NIX0lOR1JFU1NgPyBQZXJmZWN0LCB0cmlzdGF0ZSBhcyB3ZWxsLiBFeGNlbGxlbnQuCgpOb3csIGJhY2sgdG8gdGhlIHBhdGNoIGNvZGUgaXRzZWxmLiBJIHNlZSBhIGNsZWFyIGJ1ZyBmaXggaGVyZSB3aXRoIHRoZXNlIGJpdHdpc2Ugb3BlcmF0aW9ucywgY2xlYW5pbmcgdXAgcG90ZW50aWFsIGlzc3Vlcy4gVGhpcyBpcyBnb29kLiBJIHVuZGVyc3RhbmQgdGhpcyBzZWN0aW9uOgoKYGBgYwogCWlmIChzYSkgewotCQl2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTsKJiM0MzsJCXZhbHVlICZhbXA7PSB+WEdNQUNfTDRTUDA7CiYjNDM7CQl2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7CiAJfSBlbHNlIHsKLQkJdmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7Ci0KLQkJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CiYjNDM7CQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0RFAwOwomIzQzOwkJdmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpOwogCX0KYGBgCgpUaGUgYWRkZWQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBvZmZsb2FkZWQgaXMgdmVyeSBpbXBvcnRhbnQuIEkgYXBwcmVjaWF0ZSB0aGUgYWRkZWQgY2hlY2tzOgoKYGBgYwomIzQzOwkvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovCiYjNDM7CWlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gfHwgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoY2xzLSZndDtjb21tb24uZXh0YWNrLAomIzQzOwkJCQkgICAmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2wmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KYGBgCgpUaGlzIHdob2xlIHBhdGNoIGlzIGZ1bmN0aW9uYWw7IGl0IGxvb2tzIGdvb2QuIEl0JiMzOTtzIGNsZWFuLCB3ZWxsLXJlYXNvbmVkLCBhbmQgYWRkcyBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBUaW1lIHRvIHJ1biBpdCB0aHJvdWdoIGZ1enppbmcuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoxNy4wMTY4NDg0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTkwOTIyODY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX1NDSF9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfYWRkX2Jhc2ljX2Zsb3dcIixcbiAgICBcInRjX2FkZF9mbG93XCIsXG4gICAgXCJ0Y19kZWxfZmxvd1wiLFxuICAgIFwiZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJ3MgdHJhZmZpYyBjb250cm9sIChUQykgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMuIEl0IGFkZHMgdmFsaWRhdGlvbiBmb3IgbmV0d29yayBhbmQgdHJhbnNwb3J0IHByb3RvY29scyBpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGFuZCBmaXhlcyBiaXR3aXNlIG9wZXJhdGlvbnMgaW4gYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBuZXRsaW5rIFRDIGludGVyZmFjZSB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMgb24gYW4gaW50ZXJmYWNlIGJhY2tlZCBieSB0aGUgc3RtbWFjIGRyaXZlci4gVGhlIHN0bW1hYyBkcml2ZXIgaGFzIFBDSSBzdXBwb3J0IChgU1RNTUFDX1BDSWApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDM6MTcuMDE2ODU0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDY3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzU0YTJhN2NmNjNiZWZiOTI5NWQ0YWY5YTcxNDY0ZTUxZmY3Yjk3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNzowMzoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcXG5pbmRleCBmMDJiNDM0YmJkNTA1Yi4uNTIwNTRmMzEzNzZkNTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXFxuQEAgLTEzNzAsMzYgKzEzNzAsNDAgQEAgc3RhdGljIGludCBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxcbiBcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xcbiBcXHR9XFxuIFxcbi1cXHR2YWx1ZSBcXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xcbi1cXHR2YWx1ZSBcXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xcbiBcXHRpZiAoc2EpIHtcXG4gXFx0XFx0dmFsdWUgfD0gWEdNQUNfTDRTUE0wO1xcbiBcXHRcXHRpZiAoaW52KVxcbiBcXHRcXHRcXHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHZhbHVlIFxcdTAwMjY9IH5YR01BQ19MNFNQSU0wO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHR2YWx1ZSB8PSBYR01BQ19MNERQTTA7XFxuIFxcdFxcdGlmIChpbnYpXFxuIFxcdFxcdFxcdHZhbHVlIHw9IFhHTUFDX0w0RFBJTTA7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0dmFsdWUgXFx1MDAyNj0gflhHTUFDX0w0RFBJTTA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIHZhbHVlKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdGlmIChzYSkge1xcbi1cXHRcXHR2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcXG4rXFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3JlYWQoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdFxcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChzYSkge1xcbitcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDRTUDA7XFxuK1xcdFxcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XFxuLVxcbi1cXHRcXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDREUDA7XFxuK1xcdFxcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdGlmICghZW4pXFxuIFxcdFxcdHJldHVybiBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCAwKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG5pbmRleCBkNzg2NTI3MTg1OTk5ZC4uMTRjYWJlNzZlNTNlYzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC00NDYsNiArNDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiB9XFxuIFxcbiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLXFx0Y3B1X3RvX2JlMTYofjApXFxuKyNkZWZpbmUgSVBfUFJPVE9fRlVMTF9NQVNLXFx0MHhGRlxcbiBcXG4gc3RhdGljIGludCB0Y19hZGRfYmFzaWNfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcXG5AQCAtNDYxLDYgKzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFxuIFxcdGZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCBcXHUwMDI2bWF0Y2gpO1xcbiBcXG4rXFx0LyogQm90aCBuZXR3b3JrIHByb3RvIGFuZCB0cmFuc3BvcnQgcHJvdG8gbm90IHByZXNlbnQgaW4gdGhlIGtleSAqL1xcbitcXHRpZiAoIW1hdGNoLm1hc2sgfHwgIShtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIHx8IG1hdGNoLm1hc2stXFx1MDAzZWlwX3Byb3RvKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwiZmlsdGVyIG11c3Qgc3BlY2lmeSBuZXR3b3JrIG9yIHRyYW5zcG9ydCBwcm90b2NvbFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIElmIHRoZSBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBmdWxsIG1hc2sgKi9cXG4rXFx0aWYgKChtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIFxcdTAwMjZcXHUwMDI2IG1hdGNoLm1hc2stXFx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XFxuK1xcdCAgICAobWF0Y2gubWFzay1cXHUwMDNlaXBfcHJvdG8gXFx1MDAyNlxcdTAwMjYgbWF0Y2gubWFzay1cXHUwMDNlaXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib25seSBmdWxsIHByb3RvY29sIG1hc2sgaXMgc3VwcG9ydGVkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXFxuK1xcdGlmIChtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIFxcdTAwMjZcXHUwMDI2IG1hdGNoLmtleS1cXHUwMDNlbl9wcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9JUCkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cXHUwMDNlY29tbW9uLmV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgXFxcIm9ubHkgSVB2NCBuZXR3b3JrIHByb3RvY29sIGlzIHN1cHBvcnRlZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXFxuK1xcdGlmIChtYXRjaC5tYXNrLVxcdTAwM2VpcF9wcm90byBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbWF0Y2gua2V5LVxcdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1RDUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbWF0Y2gua2V5LVxcdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1VEUCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcbiBcXHRlbnRyeS1cXHUwMDNlaXBfcHJvdG8gPSBtYXRjaC5rZXktXFx1MDAzZWlwX3Byb3RvO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC01OTgsNiArNjMwLDggQEAgc3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdHJldCA9IHRjX2Zsb3dfcGFyc2Vyc1tpXS5mbihwcml2LCBjbHMsIGVudHJ5KTtcXG4gXFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdGVudHJ5LVxcdTAwM2Vpbl91c2UgPSB0cnVlO1xcbitcXHRcXHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghZW50cnktXFx1MDAzZWluX3VzZSlcXG5AQCAtNjI3LDYgKzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRlbnRyeS1cXHUwMDNlaW5fdXNlID0gZmFsc2U7XFxuIFxcdGVudHJ5LVxcdTAwM2Vjb29raWUgPSAwO1xcbiBcXHRlbnRyeS1cXHUwMDNlaXNfbDQgPSBmYWxzZTtcXG4rXFx0ZW50cnktXFx1MDAzZWFjdGlvbiA9IDA7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjE3LjQ3NTAxNTQyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNDUxMDUzMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCIsXG4gICAgXCJORVRfU0NIX0lOR1JFU1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y19hZGRfYmFzaWNfZmxvd1wiLFxuICAgIFwidGNfYWRkX2Zsb3dcIixcbiAgICBcInRjX2RlbF9mbG93XCIsXG4gICAgXCJkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIncyB0cmFmZmljIGNvbnRyb2wgKFRDKSBmbG93ZXIgaGFyZHdhcmUgb2ZmbG9hZCBsb2dpYy4gSXQgYWRkcyB2YWxpZGF0aW9uIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIGluIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGZpeGVzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlIHdoZW4gY29uZmlndXJpbmcgZmlsdGVycyBvbiBhbiBpbnRlcmZhY2UgYmFja2VkIGJ5IHRoZSBzdG1tYWMgZHJpdmVyLiBUaGUgc3RtbWFjIGRyaXZlciBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gVGhlcmVmb3JlLCBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1NGEyYTdjZjYzYmVmYjkyOTVkNGFmOWE3MTQ2NGU1MWZmN2I5NzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNzowMzoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuY1xuaW5kZXggZjAyYjQzNGJiZDUwNWIuLjUyMDU0ZjMxMzc2ZDUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcbkBAIC0xMzcwLDM2ICsxMzcwLDQwIEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbiBcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xuIFx0fVxuIFxuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xuIFx0aWYgKHNhKSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0U1BNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xuK1x0XHRlbHNlXG4rXHRcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUElNMDtcbiBcdH0gZWxzZSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0RFBNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNERQSU0wO1xuK1x0XHRlbHNlXG4rXHRcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUElNMDtcbiBcdH1cbiBcbiBcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIHZhbHVlKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpZiAoc2EpIHtcbi1cdFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7XG4rXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfcmVhZChodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCBcdTAwMjZ2YWx1ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuIFxuLVx0XHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdHJldHVybiByZXQ7XG4rXHRpZiAoc2EpIHtcbitcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUDA7XG4rXHRcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpO1xuLVxuLVx0XHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdHJldHVybiByZXQ7XG4rXHRcdHZhbHVlIFx1MDAyNj0gflhHTUFDX0w0RFAwO1xuK1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4gXHR9XG4gXG4rXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdGlmICghZW4pXG4gXHRcdHJldHVybiBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCAwKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5pbmRleCBkNzg2NTI3MTg1OTk5ZC4uMTRjYWJlNzZlNTNlYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbkBAIC00NDYsNiArNDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIH1cbiBcbiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLXHRjcHVfdG9fYmUxNih+MClcbisjZGVmaW5lIElQX1BST1RPX0ZVTExfTUFTS1x0MHhGRlxuIFxuIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcbkBAIC00NjEsNiArNDYyLDM3IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFxuIFx0Zmxvd19ydWxlX21hdGNoX2Jhc2ljKHJ1bGUsIFx1MDAyNm1hdGNoKTtcbiBcbitcdC8qIEJvdGggbmV0d29yayBwcm90byBhbmQgdHJhbnNwb3J0IHByb3RvIG5vdCBwcmVzZW50IGluIHRoZSBrZXkgKi9cbitcdGlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byB8fCBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4rXHRcdFx0XHQgICBcImZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2xcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdC8qIElmIHRoZSBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBmdWxsIG1hc2sgKi9cbitcdGlmICgobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XG4rXHQgICAgKG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gXHUwMDI2XHUwMDI2IG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4rXHRcdFx0XHQgICBcIm9ubHkgZnVsbCBwcm90b2NvbCBtYXNrIGlzIHN1cHBvcnRlZFwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXG4rXHRpZiAobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5rZXktXHUwMDNlbl9wcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9JUCkpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJvbmx5IElQdjQgbmV0d29yayBwcm90b2NvbCBpcyBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXG4rXHRpZiAobWF0Y2gubWFzay1cdTAwM2VpcF9wcm90byBcdTAwMjZcdTAwMjZcbitcdCAgICBtYXRjaC5rZXktXHUwMDNlaXBfcHJvdG8gIT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2XG4rXHQgICAgbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvICE9IElQUFJPVE9fVURQKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChjbHMtXHUwMDNlY29tbW9uLmV4dGFjayxcbitcdFx0XHRcdCAgIFwib25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbiBcdGVudHJ5LVx1MDAzZWlwX3Byb3RvID0gbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvO1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTU5OCw2ICs2MzAsOCBAQCBzdGF0aWMgaW50IHRjX2FkZF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0cmV0ID0gdGNfZmxvd19wYXJzZXJzW2ldLmZuKHByaXYsIGNscywgZW50cnkpO1xuIFx0XHRpZiAoIXJldClcbiBcdFx0XHRlbnRyeS1cdTAwM2Vpbl91c2UgPSB0cnVlO1xuK1x0XHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGlmICghZW50cnktXHUwMDNlaW5fdXNlKVxuQEAgLTYyNyw2ICs2NjEsNyBAQCBzdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGVudHJ5LVx1MDAzZWluX3VzZSA9IGZhbHNlO1xuIFx0ZW50cnktXHUwMDNlY29va2llID0gMDtcbiBcdGVudHJ5LVx1MDAzZWlzX2w0ID0gZmFsc2U7XG4rXHRlbnRyeS1cdTAwM2VhY3Rpb24gPSAwO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoxNy40NzUwMTY3OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ5Nzc2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciDigJMgdGhhdCdzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIDEwLzEwMC8xMDAwL0VRT1MgdmFyaWFudHMuIEkgY2FuIHNlZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZHd4Z21hYzJfY29yZS5jYCBhbmQgYHN0bW1hY190Yy5jYCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBhbmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHJlbGF0ZWQgZnVuY3Rpb25zOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBhbmQgYHRjX2RlbF9mbG93YC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIHRoZXkncmUgd29ya2luZyBvbiBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIG1haW4gdGFrZWF3YXkgc2VlbXMgdG8gYmUgYSBjb3VwbGUgb2Yga2V5IG1vZGlmaWNhdGlvbnMuIFRoZXkncmUgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIHdpdGhpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF0J3MgZ29vZCwgYWx3YXlzIGEgcGx1cyB0byBoYXZlIG1vcmUgcm9idXN0IGVycm9yIGNoZWNraW5nLCBhbmQgbWFrZXMgbWUgdGhpbmsgdGhleSdyZSBsaWtlbHkgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBwb3RlbnRpYWwgY29ybmVyIGNhc2UgaXNzdWVzLCBvciBwZXJoYXBzIGFkZGluZyBzdXBwb3J0IGZvciBuZXcgcHJvdG9jb2wgbWF0Y2hpbmcuIFRoZXkndmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCwgd2hpY2ggc3VnZ2VzdHMgdGhleSd2ZSBmb3VuZCBhbmQgZml4ZWQgc29tZSBwb3RlbnRpYWwgbG9naWNhbCBlcnJvcnMuXG5cbkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBzdG1tYWNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgbGluZSB0byBwcm9wZXJseSBhc3NlcyB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjI1LjAyNDc5NTE3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDcwNTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI5PWNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzQ6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1LVxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02MD1jb25maWcgRFdNQUNfQU5BUklPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjY3OlxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTc4PWNvbmZpZyBEV01BQ19JTkdFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6ODY6XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODctXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTg6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTI5LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzA6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIE1lc29uNixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cXHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQxLVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0MjpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoZSBudXZvdG9uLWR3bWFjIGRyaXZlciBpc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTItXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTUzOlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY0OlxcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzYtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTc3OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg4OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg5LVxcdCAgY29udmVydGVyIFBDUyBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5ODpcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE0LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTU6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVxcdCAgYXJyaWE1IGFuZCBjeWNsb25lNSBGUEdBIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyNS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIyNjpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzctXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjM4OlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDktXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjUwOlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjItXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNjU9Y29uZmlnIERXTUFDX1NUTTMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI3MzpcXHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzQtXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RNMzIgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI3Nz1jb25maWcgRFdNQUNfU1VOWElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4NTpcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODYtXFx0ICBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI4OD1jb25maWcgRFdNQUNfU1VOOElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5NzpcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk4LVxcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMDA9Y29uZmlnIERXTUFDX1NVTjU1SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzA5OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzEwLVxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMTI9Y29uZmlnIERXTUFDX1RIRUFEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgVC1IRUFEIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxOTpcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzIwLVxcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzMDpcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgaS5NWDggc2VyaWVzIGxpa2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0MC1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzQxOlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cXHQgIFNvQy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTItXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM1NT1jb25maWcgRFdNQUNfVEVHUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzYwLVxcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzYyLVxcdCAgZGV2aWNlcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODUtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4NjpcXHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozOTU6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTYtXFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDA3PWNvbmZpZyBTVE1NQUNfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MTM6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxNC1cXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoyNS4wODk1MDQ2NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk1Mzc3NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gYXBwZWFycyB0byBiZSBgU1RNTUFDX0VUSGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhpcyBpcyBhY3R1YWxseSBjb250cm9sbGluZy4gVGhpcyBtZWFucyB0aGUgZmlyc3QgdGhpbmcgSSdsbCBkbyBpcyBpbW1lZGlhdGVseSBqdW1wIHRvIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGltcGxpY2F0aW9ucy4gS25vd2luZyB3aGF0IGl0IGdvdmVybnMgaXMgY3J1Y2lhbCB0byB0aGUgd2hvbGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDI0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDM6MjcuNzg0ODg0ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjY5MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoyNy44NDE1NjEwMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjkyMjIzMDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVHJhZmZpYyBDb250cm9sIFBhdGNoIGZvciB0aGUgU1RNTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjX2FkZF9iYXNpY19mbG93YCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNfdGMuY2AgZmlsZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3RtbWFjX3RjLmNgIGZpbGUgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gdGhlIGBTVE1NQUNfRVRIYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgYXZhaWxhYmxlIGJlY2F1c2UgaWYgaXQgaXNuJ3QsIHRoZSBwYXRjaCdzIGltcGFjdCBiZWNvbWVzIGEgbG90IG1vcmUgbGltaXRlZCwgYW5kIG1pZ2h0IGluZGljYXRlIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZyBvcHRpb25zLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjUwLjc2Mzc5MzEzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTAxNDA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNy1cXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4OlxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzo1MC44MjI4MTMzOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjQzMTcyMTg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU1RNTUFDIE9mZmxvYWQgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGB0Y2AgYW5kIG5ldGxpbmsgdHJhZmZpYyBjb250cm9sLiBJIHNlZSB0aGF0IGBzdG1tYWNfdGMub2AgYW5kIGBkd3hnbWFjMl9jb3JlLm9gIGFyZSBpbmNsdWRlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkknbSBub3cgZGlnZ2luZyBpbnRvIHRoZSBjaGFuZ2VzIGluIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBsb2dpYyBmb3IgYWRkaW5nIHRoZXNlIGJhc2ljIGZpbHRlcnMgcmVzaWRlcy4gVGhlIGNvZGUgaXMgY2xlYXJseSBpbXBvc2luZyByZXN0cmljdGlvbnMgb24gdGhlIGtpbmRzIG9mIGZpbHRlcnMgaXQgc3VwcG9ydHMgZm9yIG9mZmxvYWQ6IGl0J3MgY2hlY2tpbmcgZm9yIGNlcnRhaW4gcHJvdG9jb2wgbWF0Y2hlcy4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBub3cgZXhwbGljaXRseSBjaGVja3MgdG8gZW5zdXJlIGVpdGhlciBhIG5ldHdvcmsgb3IgdHJhbnNwb3J0IHByb3RvY29sIGlzIHByZXNlbnQsIGFuZCBpdCAqcmVxdWlyZXMqIGEgZnVsbCBtYXNrIGlmIGEgcHJvdG9jb2wgaXMgZGVmaW5lZC4gSWYgYSBuZXR3b3JrIHByb3RvY29sIGlzIHByZXNlbnQgaW4gdGhlIGZpbHRlciwgaXQgKm11c3QqIGJlIElQdjQuIEZ1cnRoZXJtb3JlLCBpZiBhIHRyYW5zcG9ydCBwcm90b2NvbCBpcyBwcmVzZW50LCBpdCAqbXVzdCogYmUgZWl0aGVyIFRDUCBvciBVRFAuXG5cblRoaXMgd2hvbGUgYXJlYSBpcyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggdGhlIGB0Y2AgaW50ZXJmYWNlLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSB0aGVzZSBvZmZsb2FkIGZpbHRlcnMuIEJ1dCBub3cgSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBhdmFpbGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IGl0ICphbHNvKiBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCkuIFRoYXQncyBwcm9taXNpbmcuXG5cbkxldCBtZSBjb25maXJtIGlmIGBTVE1NQUNfUENJYCBpcyBlbmFibGVkLCBvciBjb3VsZCBiZSBlbmFibGVkLiBBbHJpZ2h0LCBpdCAqaXMqIGEgUENJIGRyaXZlciwgc28gdGhhdCBpbmNyZWFzZXMgdGhlIGNoYW5jZXMuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY2AgdG8gdW5kZXJzdGFuZCB0aGUgUENJIHNwZWNpZmljIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc3MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDowNy4yNTQ1MzY4ODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTc3MjE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MDcuMzEzNTM5OTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzQwNzUyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX3BjaS5jYCBDb2RlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgU1RNTUFDIGRyaXZlcidzIFBDSSBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgdGhlIGtleSBpbml0aWFsaXphdGlvbiBzdGVwcz8gSG93IGRvZXMgaXQgaGFuZGxlIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gQXJlIHRoZXJlIGFueSBub3RhYmxlIGRpZmZlcmVuY2VzIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cyBjb21wYXJlZCB0byB0aGUgZ2VuZXJpYyBTVE1NQUMgY29yZT8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIHRoZSBQQ0kgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRldmljZSBJRCB0YWJsZSwgdGhlIHByb2JlIGFuZCByZW1vdmUgZnVuY3Rpb25zIGFuZCBob3cgdGhlIGludGVycnVwdHMgYXJlIGJlaW5nIGhhbmRsZWQuIFVuZGVyc3RhbmRpbmcgdGhpcyBjb2RlIGJhc2UgaXMgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBkZWVwZXIgaW52ZXN0aWdhdGlvbiBJIG5lZWQgdG8gZG8gaGVyZSwgb3IgaW4gdGhpcyBzcGVjaWZpYyBhcmVhLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg2MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjEwLjc0NzYxNzM5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2ODgzMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjMyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzM6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM2My1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00Nzk9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0OTg6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NTc4PXN0YXRpYyB2b2lkIGxvb25nc29uX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVxcdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXFx1MDAyNmxvb25nc29uX2dtYWNfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjgtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDoxMC44MDQzMTAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc5MjE0NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIFRoYXQgYHRjX2FkZF9iYXNpY19mbG93YCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIEkgc2VlIGl0IGhhcyBQQ0kgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoZSBgZHdtYWMtaW50ZWwuY2AsIGBkd21hYy1sb29uZ3Nvbi5jYCwgYGR3bWFjLW1vdG9yY29tbS5jYCwgYW5kIGBzdG1tYWNfcGNpLmNgIGZpbGVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBiZWNhdXNlIFN5emthbGxlciBjYW4sIG9mIGNvdXJzZSwgZnV6eiBQQ0kgZGV2aWNlcywgdXNpbmcgdGhhdCB2aXJ0dWFsIFBDSSBpbmplY3Rpb24gY2FwYWJpbGl0eS4gSSBjYW4gc2VlIGl0IHdvcmtpbmcsIGZvciBleGFtcGxlLCB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgLiBTbywgdGhlIGNvZGUncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IC0gdGhhdOKAmXMga2V5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHRvdWNoaW5nIGB0Y19hZGRfYmFzaWNfZmxvd2AuIFRoYXTigJlzIGNhbGxlZCB3aGVuIGEgVEMgZmxvd2VyIGZpbHRlciBpcyBhZGRlZC4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNhbGwgY2hhaW4sIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgY2FsbGVkIGJ5IGB0Y19hZGRfZmxvd2AuIFRoZW4gYHRjX2FkZF9mbG93YCBpcyBjYWxsZWQgYnkgYHN0bW1hY19zZXR1cF90Y19jbHNfZmxvd2VyYC4gVGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2JgLCB3aGljaCwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRyaWdnZXJzIHdoZW4gY29uZmlndXJpbmcgYSBUQyBibG9jayBvbiB0aGUgaW50ZXJmYWNlLlxuXG5SaWdodCwgSSdtIGdvaW5nIHRvIGRvdWJsZSBjaGVjayB0aGF0IGNhbGwgY2hhaW4gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBzdGVwLCBidXQgdGhhdCBsb29rcyBsaWtlIGEgdmFsaWQgcGF0aCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MTUuNTgzNTI2NDk2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEyNjk1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfYWRkX2Zsb3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9NjAyPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNjEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjYxMTpzdGF0aWMgaW50IHRjX2FkZF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXFx0XFx0ICAgICAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04MzE9c3RhdGljIGludCB0Y19kZWxfZXRodHlwZV9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4Njc6c3RhdGljIGludCB0Y19hZGRfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2OC1cXHRcXHRcXHQgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg3MjpcXHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg3My1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg5OT1zdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXFx0Y2FzZSBGTE9XX0NMU19SRVBMQUNFOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjkxMDpcXHRcXHRyZXQgPSB0Y19hZGRfZmxvd19jbHMocHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MTEtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjE1LjkxNDgwMTM2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkyNDQwNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZWx2aW5nIGludG8gVHJhZmZpYyBDb250cm9sIEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgZm9yIHRoaXMgc3RtbWFjIGRyaXZlci4gTG9va3MgbGlrZSB0aGUgYHRjX3NldHVwX2Nsc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tLiBBaCwgeWVzLCBpdCdzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2JgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIFRoYXQgZnVuY3Rpb24gbXVzdCBiZSB0aGUgY2FsbGJhY2sgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRyYWZmaWMgY29udHJvbCBibG9jay4gVGhpcyBtYWtlcyBzZW5zZTsgaXQncyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIGhpZ2gtbGV2ZWwgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yayBhbmQgdGhlIGxvdy1sZXZlbCBzcGVjaWZpY3Mgb2YgdGhlIHN0bW1hYyBoYXJkd2FyZS4gU28gSSBuZWVkIHRvIGdvIGRlZXBlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGNhbGwgc2V0cyB1cCB0aGUgc3RtbWFjIGRyaXZlciBpbiBvcmRlciB0byBjb250cm9sIGVncmVzcyB0cmFmZmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyMywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjE5LjEwNzI0NDU0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4ODYzMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfc2V0dXBfY2xzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjIwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTAwLVxcdFxcdFxcdHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNS1cXHQuaW5pdCA9IHRjX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcXHQuc2V0dXBfY2xzX3UzMiA9IHRjX3NldHVwX2Nsc191MzIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNy1cXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDg6XFx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVxcdC5zZXR1cF90YXByaW8gPSB0Y19zZXR1cF90YXByaW9fd2l0aG91dF9mcGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE2LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE4LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxOTpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MTkuMTY5MTM1ODkxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTI1NjYzNTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29kZSBNb2RpZmljYXRpb25zKipcblxuUmlnaHQsIHNvIEkgc2VlIGB0Y19zZXR1cF9jbHNgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBib3RoIGBkd21hYzRfdGNfb3BzYCBhbmQgYGR3bWFjNTEwX3RjX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBub3cgZnVuZGFtZW50YWwgdG8gdGhlIHRyYWZmaWMgY29udHJvbCBzZXR1cCBmb3IgYm90aCB0aGUgRFdDIE1BQyA0IGFuZCA1MTAgSVAgY29yZXMuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgVEMgbWVjaGFuaXNtIGlzIGJlaW5nIHVwZGF0ZWQsIG9yIHBlcmhhcHMgYSBuZXcgY2FwYWJpbGl0eSBpcyBiZWluZyBpbnRlZ3JhdGVkIGF0IHRoYXQgbGV2ZWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHRjX3NldHVwX2Nsc2AgYWN0dWFsbHkgKmRvZXMqIHdpdGhpbiB0aG9zZSBjb250ZXh0cywgc3BlY2lmaWNhbGx5IGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIG9yIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMuXG5cbkZ1cnRoZXJtb3JlLCBJJ20gbm90aW5nIHRoZSBtb2RpZmljYXRpb24gdG8gYGR3eGdtYWMyX2NvcmUuY2AuIFRoaXMgZmlsZSBjb250YWlucyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIE5vdywgYSBMZXZlbCA0IGZpbHRlciBjb25maWd1cmF0aW9uIGlzIGEgcHJldHR5IHNwZWNpZmljIHRoaW5nLiBUeXBpY2FsbHksIHRoaXMgd291bGQgYmUgcmVsYXRlZCB0byBUQ1AvVURQIHBvcnQtYmFzZWQgZmlsdGVyaW5nLiBUaGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdG91Y2hlZCAqYWxvbmdzaWRlKiB0aGUgdHJhZmZpYyBjb250cm9sIHNldHVwIHN1Z2dlc3RzIHRoZXJlIG1pZ2h0IGJlIGFuIGludGVycGxheSBoYXBwZW5pbmcuIE1heWJlIHRoZSBMNCBmaWx0ZXIgaXMgYmVpbmcgYWRqdXN0ZWQgYXMgcGFydCBvZiBhIG1vcmUgY29tcHJlaGVuc2l2ZSBUQyBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIHRoZSBMNCBmaWx0ZXJpbmcgaXMgbm93IGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIFRDIGZyYW1ld29yay4gSW4gYW55IGNhc2UsIEkgbmVlZCB0byBzZWUgaG93IGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBpcyBiZWluZyBjYWxsZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY2FsbHMgdG8gIGB0Y19zZXR1cF9jbHNgLiBJIHdhbnQgdG8gc2VlIGlmIHRoZSBjaGFuZ2VzIGFyZSBhZGRpbmcgbmV3IFRDIGNhcGFiaWxpdGllcywgb3IgaWYgdGhleSBhcmUganVzdCBhZmZlY3RpbmcgaG93IHRoZSBzeXN0ZW0gaXMgb3JnYW5pemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzYyNiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjMxLjY5NDgwMjAzNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODg4NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXFx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDY2OlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTUyMTpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXFx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MzEuOTEyNjk2NTQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NTg1Njc1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWVzc2luZyB3aXRoIGNvcmUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYHN0bW1hY19vcHNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLiBUaGUga2V5IGNoYW5nZXMgYXJlIGluIGB0Y19hZGRfYmFzaWNfZmxvd2Agd2l0aCBhZGRlZCB2YWxpZGF0aW9uIGFuZCBiaXR3aXNlIG9wZXJhdGlvbiBmaXhlcyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBXZSdyZSBsb29raW5nIGF0OiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBTaW5jZSBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIHN0YXRpYywgdGhhdCBkb2Vzbid0IGNoYW5nZSB0aGUgbGlzdCwgdGhhbmtmdWxseS4gV2UnbGwgYmUgZm9jdXNpbmcgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLlxuXG5Ob3csIGZvciBjb25maWcgZGVwZW5kZW5jaWVzLi4uIGBTVE1NQUNfRVRIYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBUbyBtYWtlIGZ1enppbmcgZWFzaWVyLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGBTVE1NQUNfUENJYCBsb29rcyBsaWtlIHRoZSB3YXkgdG8gZ28gZm9yIFBDSSBzdXBwb3J0LiBIYW5nIG9uLi4uIGFyZSB0aGVyZSBhbnkgc3ViLWRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGNoZWNrIGlmIGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIG9yIGBEV01BQ19NT1RPUkNPTU1gIGFyZSB0aWVkIHRvIHNwZWNpZmljIFBDSSBJRHMuIEdvdHRhIGRvdWJsZS1jaGVjayBgU1RNTUFDX1BDSWAgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjQwLjU3MTI2NTkxN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzMxNzQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjQxLjcyODU5MTAyMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMwNDIwNjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgRHJpdmVyJ3MgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGp1c3QgdGhlIGBTVE1NQUNfUENJYCBpZGVudGlmaWVyIGlzIHN1ZmZpY2llbnQgZm9yIHdoYXQgSSdtIHdvcmtpbmcgb24uIExldCBtZSBsb29rIGludG8gdGhlIGBzdG1tYWNfcGNpLmNgIGZpbGU7IGl0IHNlZW1zIHRoYXQncyB3aGVyZSB0aGUgUENJIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVucy4gQWgsIHRoZXJlIGl0IGlzIOKAkyBgc3RtbWFjX2lkX3RhYmxlYC4gUmlnaHQsIHRoaXMgdXNlcyBgUENJX0RFVklDRV9EQVRBYCB3aXRoIGBTVE1NQUNgLCBhbmQgYSBzcGVjaWZpYyBkYXRhIHBvaW50ZXIgdG8gYFx1MDAyNnN0bW1hY19wY2lfaW5mb2AuIEludGVyZXN0aW5nLiBOb3csIHRoYXQgYFNUTU1BQ2AgdmVuZG9yIElE4oCmIGl0J3MgYDB4MTE2NmAuIFRoYXQncyBub3QgYSBCcm9hZGNvbSBJRCwgd2hpY2ggaXMgd2hhdCBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBtaWdodCBiZSBTeW5vcHN5cywgb3Igb25lIG9mIHRoZSBvdGhlciB2ZW5kb3JzIHVzaW5nIHRoYXQgY29yZS4gVG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBQQ0lfVkVORE9SX0lEX1NUTU1BQ2AgdG8gY29uZmlybSBteSBzdXNwaWNpb24gYW5kIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyB2ZW5kb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjUyLjAzMjgwMDU0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NzYzNDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfVkVORE9SX0lEX1NUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6NTIuMjIyNTcxNjU1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODUyOTYyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQQ0kgTGFuZHNjYXBlIGluIGBzdG1tYWNfcGNpLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgZGV2aWNlIGRhdGEgaXMgaGFuZGxlZCBpbiB0aGUgYHN0bW1hY19wY2kuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGNoZWNrIGZvciBgUENJX0RFVklDRV9EQVRBYC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGRyaXZlciBjb25maWd1cmVzIGFuZCBpbnRlcmFjdHMgd2l0aCB0aGUgU1RNTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIgd2hlbiBpdCdzIGNvbm5lY3RlZCB0aHJvdWdoIGEgUENJIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGRyaXZlciBkZXRlY3RzIHRoZSBkZXZpY2UsIGhvdyBpdCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIHF1aXJrcywgaWYgYW55LiBJIGFudGljaXBhdGUgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhlIGBQQ0lfREVWSUNFX0RBVEFgIHVzYWdlLCBsaWtlbHkgdGllZCB0byBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBwb3RlbnRpYWxseSBsZWdhY3kgUENJIGNvbXBhdGliaWxpdHkuIFRoZXJlZm9yZSwgdGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgxNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjU3LjQwNzg3MDU1MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDc5NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfREFUQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA2OlxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNy1cXHR7fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDo1Ny42MjczNTUyOTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE2MjE3ODA5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZWNpcGhlcmluZyB0aGUgTmVjZXNzYXJ5IEtlcm5lbCBDb25maWd1cmF0aW9ucyBmb3IgTmV0d29yayBPZmZsb2FkaW5nKipcblxuUmlnaHQsIHNvIEknbSBwcmV0dHkgc3VyZSBgU1RNTUFDX1BDSWAgaXMgdGhlIGtleSB0byBnZXR0aW5nIGEgUENJIGRldmljZSB0aGF0IGxldmVyYWdlcyB0aGUgYHN0bW1hY2AgZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCBhYm91dCBzdXBwb3J0IGZvciBUcmFmZmljIENvbnRyb2wgKFRDKSBmbG93ZXIgb2ZmbG9hZD8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhhdCBjb3ZlcmVkLiBJIHRoaW5rIGBORVRfU0NIX0ZMT1dFUmAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGF0LCB5ZWFoPyBPa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgYmVjYXVzZSBpZiBJIG5lZWQgaXQsIEknbGwgbmVlZCB0byBlbmFibGUgaXQuIFdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aGVuIGRlYWxpbmcgd2l0aCBgRkxPV19DTFNfRkxPV0VSYC4gQWgsIHllcyEgTGV0J3MgY2hlY2sgYHRjX2FkZF9mbG93YCBmb3IgZ29vZCBtZWFzdXJlLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpcm0gSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGZvciB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSBJJ20gYWZ0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzI2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MTkuMjQ5MTM4ODA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM5ODIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19hZGRfZmxvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz02MDI9c3RhdGljIHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NjExOnN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTYxMi1cXHRcXHQgICAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODY4LVxcdFxcdFxcdCAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODcyOlxcdHJldCA9IHRjX2FkZF9mbG93KHByaXYsIGNscyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTkwOS1cXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6OTEwOlxcdFxcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTkxMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MTkuMzE1NTQyOThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM1NDI3MTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBgdGNfc2V0dXBfY2xzYCBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHdoZXJlIGB0Y19zZXR1cF9jbHNgIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjYWxsIHN0YWNrLiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGludm9rZWQgZnJvbSwgYW5kIHdoYXQncyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyBlYWNoIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgSSBtaWdodCBtYWtlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNToyNy42Njk4MTgyMDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDIyMjg3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19zZXR1cF9jbHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MjA5PXN0YXRpYyBpbnQgdGNfZGVsZXRlX2tub2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoyMTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHNfdTMyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg4Mz1zdGF0aWMgaW50IHRjX2RlbF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODk5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXFx0XFx0XFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzA2OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDktXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMTU9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM1MTBfdGNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXFx0LmluaXQgPSB0Y19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMTc6XFx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXFx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5OlxcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMyMC1cXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNToyNy44NzQwNDcyNTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTIxOTAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgYHN0bW1hY190Y19vcHNgIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgc3RtbWFjX3RjX29wc2Agc3RydWN0dXJlIGFnYWluLiBJIHNlZSBgdGNfc2V0dXBfY2xzYCBpcyBiZWluZyB1c2VkIHdpdGhpbiBpdC4gTm93LCB0aGUgbmFtZSBcInRjXFxfc2V0dXBcXF9jbHNcIiBpcyB0aHJvd2luZyBtZS4gSXQgbG9va3MgbGlrZSBpdCdzIG1lYW50IHRvIHJlbGF0ZSB0byBgc2V0dXBfY2xzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIHJlbGF0ZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzZXR1cF9jbHNgIGl0c2VsZiBnZXQgaW52b2tlZD8gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZyB3aXRoaW4gdGhpcyBzZXR1cCBtZWNoYW5pc20uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgb3ZlcmFsbCBjb250ZXh0IG9mIHRoaXMgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgdGhpcyBpbnZvY2F0aW9uIHBvaW50IGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI4MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjMxLjIyMzI2ODMzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0OTEyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0dXBfY2xzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9NTY3PXN0cnVjdCBzdG1tYWNfdGNfb3BzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTY4LVxcdGludCAoKmluaXQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU2OTpcXHRpbnQgKCpzZXR1cF9jbHNfdTMyKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTU3MC1cXHRcXHRcXHQgICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTcyLVxcdFxcdFxcdCBzdHJ1Y3QgdGNfY2JzX3FvcHRfb2ZmbG9hZCAqcW9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU3MzpcXHRpbnQgKCpzZXR1cF9jbHMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTc0LVxcdFxcdFxcdCBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01ODYtXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgdGMsIGluaXQsIF9fYXJncylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTg3OiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2Nsc191MzIoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTg4OlxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jbHNfdTMyLCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTU4OS0jZGVmaW5lIHN0bW1hY190Y19zZXR1cF9jYnMoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTkwLVxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jYnMsIF9fYXJncylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTkxOiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NscyhfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1OTI6XFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgdGMsIHNldHVwX2NscywgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01OTMtI2RlZmluZSBzdG1tYWNfdGNfc2V0dXBfdGFwcmlvKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzOTg9c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxMC1cXHRjYXNlIFRDX1NFVFVQX0NMU1UzMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0MTE6XFx0XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDEzLVxcdGNhc2UgVENfU0VUVVBfQ0xTRkxPV0VSOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxNDpcXHRcXHRyZXQgPSBzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTEwODI9c3RhdGljIGludCBzdG1tYWNfdGVzdF9yeHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjExNDA6XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgXFx1MDAyNmNsc191MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xMTQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1MC1cXHRjbHNfdTMyLmNvbW1hbmQgPSBUQ19DTFNVMzJfREVMRVRFX0tOT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxMTUxOlxcdHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKHByaXYsIHByaXYsIFxcdTAwMjZjbHNfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xMzMwPXN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sM2ZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgZHN0LCB1MzIgc3JjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE0MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjE0MDE6XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNDAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQwOS1cXHRjbHMtXFx1MDAzZWNvbW1hbmQgPSBGTE9XX0NMU19ERVNUUk9ZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNDEwOlxcdHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQxMS1jbGVhbnVwX3J1bGU6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTQ0OT1zdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbDRmaWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGRzdCwgdTMyIHNyYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNTMyOlxcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTUzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDAtXFx0Y2xzLVxcdTAwM2Vjb21tYW5kID0gRkxPV19DTFNfREVTVFJPWTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTU0MTpcXHRzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIGNscyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDItY2xlYW51cF9ydWxlOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MjA5PXN0YXRpYyBpbnQgdGNfZGVsZXRlX2tub2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoyMTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHNfdTMyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg4Mz1zdGF0aWMgaW50IHRjX2RlbF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODk5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXFx0XFx0XFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzA2OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDktXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMTU9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM1MTBfdGNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXFx0LmluaXQgPSB0Y19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMTc6XFx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXFx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5OlxcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMyMC1cXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozMS4yODQ3NjQ2MTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2ODU2NTk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX1NDSF9GTE9XRVJgIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBmZWF0dXJlIGlzbid0IHdvcmtpbmcgYXMgZXhwZWN0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBORVRfU0NIX0ZMT1dFUmAgc2VlbXMgdG8gYmUgdGhlIGtleSB0byB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSBmcm9tIHVzZXJzcGFjZS4gQnV0LCBoYW5nIG9uLi4uIEkgcmVtZW1iZXIgc2VlaW5nIGBzdG1tYWNfc2VsZnRlc3RzLmNgIHdoaWNoIGNhbGxzIGBzdG1tYWNfdGNfc2V0dXBfY2xzYCBkaXJlY3RseSwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgYE5FVF9TQ0hfRkxPV0VSYCBtaWdodCBub3QgYmUgdGhlICpvbmx5KiB0cmlnZ2VyLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwgdG8gdmVyaWZ5LlxuXG5BaGEhIE5vdyBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBpcyBleHBsaWNpdGx5IG5lZWRlZCBmb3IgdXNpbmcgdGhlIGB0YyBmaWx0ZXIgYWRkYCBjb21tYW5kIHdpdGggdGhlIGBmbG93ZXJgIGNsYXNzaWZpZXIsIHNwZWNpZmljYWxseSB3aGVuIGNhbGxpbmcgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAuIE9rLCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuIExldCdzIG1ha2Ugc3VyZSBgTkVUX1NDSF9GTE9XRVJgIGlzLCBpbiBmYWN0LCBhIGNvbmZpZ3VyYWJsZSBvcHRpb24uIFllcywgY29uZmlybWVkLCBgQ09ORklHX05FVF9TQ0hfRkxPV0VSYCBleGlzdHMuIEkgd2FzIHdvbmRlcmluZyBpZiBpdCBkZXBlbmRlZCBvbiBgQ09ORklHX05FVF9IV19FWEFDVF9NQVRDSGAgb3Igc29tZXRoaW5nIHJlbGF0ZWQuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYE5FVF9TQ0hfRkxPV0VSYCBpcyB0aGUgbWFpbiBlbmFibGVyLiBJIHNob3VsZCBjb25maXJtIHRoaXMgaW4gdGhlIEtjb25maWcgZmlsZSB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUgbG9vayBhdCBgbmV0L3NjaGVkL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozNi4yNTMzMzI3MDZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzIwMTY1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfRkxPV0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozNi40MzA1NDA3MjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODIzNjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBDbHVlOiBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBhIGJpdCBvZiBhIG1lbnRhbCBzaHJ1Zy4gQW5vdGhlciBvbmUgb2YgdGhlc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBXYWl0IGEgc2Vjb25kLi4uIGl0J3MgYENPTkZJR19ORVRfQ0xTX0ZMT1dFUmAuIEFoLCAqbm93KiBJIHNlZS4gVGhpcyBpc24ndCBqdXN0IGFueSBjb25maWd1cmF0aW9uIG9wdGlvbjsgaXQncyB0aGUga2VybmVsJ3MgZmxhZyBmb3IgRmxvd2VyIGNsYXNzaWZpZXIgc3VwcG9ydCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIGZsZXhpYmxlIGZsb3cgY2xhc3NpZmljYXRpb24sIGlzbid0IGl0PyBGaW5lLWdyYWluZWQgdHJhZmZpYyBzdGVlcmluZyBiYXNlZCBvbiBhIHJpY2ggc2V0IG9mIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGlzIGdvb2QsIHRoaXMgaXMgZ29vZC4gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIHN1ZGRlbmx5IHBvcHBpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzU4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MzkuNzU4Nzc5OTA2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjU4ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19GTE9XRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozOS44NDEzNzQzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyODQ4MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgZGV2aWNlIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGBORVRfQ0xTX0ZMT1dFUmAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgbmV0d29yayBjbGFzc2lmaWVyLiBCdXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBkcml2ZXJzLiBUaGV5IGFyZSBpbXBvcnRhbnQgYW5kIEkgd2FudCB0byBjb3ZlciBhbGwgYmFzZXMuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX0VUSGAuIEknbSBjdXJpb3VzIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGluIHBsYWNlIGFuZCB1bmRlcnN0YW5kIGFsbCB0aGUgaW50ZXJhY3Rpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgZGVwZW5kZW5jaWVzIGlzIGFsd2F5cyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwNTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo0My40NDQyMjUwNTNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTM2MjY1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjQzLjUwODc3MjYzOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEzMDg0NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgU1RNTUFDX1BDSSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX1BDSWAuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB3aGF0IG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIHRoaXMgbGlrZWx5IGRlcGVuZHMgb24uIEknbSB0aGlua2luZyBiZXlvbmQgdGhlIG9idmlvdXM7IGl0J3MgY3J1Y2lhbCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBlY29zeXN0ZW0uIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIFBDSWUtdG8tRXRoZXJuZXQgYnJpZGdlLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IHdpdGggRE1BIGVuZ2luZXMsIGRlc2NyaXB0b3IgcmluZ3MsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgYWxsIHRpZ2h0bHkgaW50ZWdyYXRlZD9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBtb2R1bGUuIElzIGl0IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjaywgb3IgYSBtb3JlIGlzb2xhdGVkIGRyaXZlcj8gS25vd2luZyB0aGlzIHdpbGwgaW5mbHVlbmNlIHRoZSBhcHByb2FjaCBJIHRha2UgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGhlYWRlcnMsIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGBLY29uZmlnYCwgYE1ha2VmaWxlYCksIGFuZCBrZXJuZWwgbW9kdWxlcyBJJ2xsIG5lZWQgdG8gZXhhbWluZS4gSSdsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBgZmluZGAgdG8gZ2V0IGEgcHJlbGltaW5hcnkgbGlzdC4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hhdCBgU1RNTUFDX1BDSWAgdG91Y2hlcyBhbmQsIGluIHR1cm4sIHdoYXQgdG91Y2hlcyBpdC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHdoYXQncyAqcmVxdWlyZWQqLCBidXQgYWxzbyB3aGF0J3MgKmFmZmVjdGVkKiBieSBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLiBQZXJmb3JtYW5jZSBpbXBhY3RzPyBQb3RlbnRpYWwgY29uZmxpY3RzPyBNZW1vcnkgbWFwcGluZyBjb25zaWRlcmF0aW9ucz8gSXQncyBhbGwgaW50ZXJjb25uZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6NDcuMzIxODYwNTQ2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg0OTc0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjQ3LjM4NDcxNzA4MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU1NjczNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBuZXR3b3JraW5nIGFuZCBMaW51eCBkZXZpY2UgZHJpdmVyczpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYXNwZWN0cy4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gIGRpcmVjdG9yeS4gVGhlIGZvY3VzLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIGFyb3VuZCB0aGUgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIHdoZW4gaXQncyBvcGVyYXRpbmcgb24gYSBQQ0kgaW50ZXJmYWNlLlxuXG5JJ20gcHJvYmFibHkgbG9va2luZyBmb3I6XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYFNUTU1BQ19QQ0lgIHRvIGJlIGF2YWlsYWJsZT9cbiogICAqKkRlcGVuZGVuY2llcyBvZiB0aGUgRGV2aWNlOioqIEhvdyBpcyB0aGUgY29uZmlndXJhdGlvbiBvZiBgU1RNTUFDX1BDSWAgZGVwZW5kYW50IG9uIG90aGVyIGZlYXR1cmVzIG9mIHRoZSBkZXZpY2U/XG4qICAgKipEZWZhdWx0IFNldHRpbmdzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgc2V0dGluZ3Mgd2hlbiBhIFNUTU1BQyBpcyBjb25maWd1cmVkIG9uIGEgUENJIGRldmljZT9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb3IgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgb3B0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBQQ0kgc3VwcG9ydCBmb3IgdGhlIFNUTU1BQy5cblxuVGhlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGludGVyYWN0aW9ucyB3aXRoIHRoZSBQQ0kgYnVzLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgaG93IGRpZmZlcmVudCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBkZXBlbmRpbmcgb24gd2hldGhlciBgU1RNTUFDX1BDSWAgaXMgc2V0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZyBQQ0ktcmVsYXRlZCBpc3N1ZXMgYW5kIHRhaWxvcmluZyB0aGUgZHJpdmVyIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3Jtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3ODgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo1MS4zNDAzOTQ0NDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjUxLjM0MDUwMjUwOVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgwNTgxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaGVyZSdzIHdoYXQncyBidWJibGluZyB1cCBpbiBteSBtaW5kLiBgU1RNTUFDX1BDSWAg4oCTIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZS4gVGhlbiB0aGVyZSdzIGBTVE1NQUNfRVRIYCwgd2hpY2ggaXMgdGhlIGNvcmUgZHJpdmVyLCByaWdodD8gR290IGl0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0J3MgYWN0dWFsbHkgZW5hYmxlZCBoZXJlLiBJJ3ZlIGdvdCB0byBzdW1tYXJpemUgdGhlIGtleSBjb25maWdzOiBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuIEJ1dCwgaGFuZyBvbi4uLiBkaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IGhhcmR3YXJlIG9mZmxvYWQ/XG5cblJpZ2h0LCB0aGUgaGFyZHdhcmUgb2ZmbG9hZCwgdGhhdCdzIGRvbmUgd2l0aCBgZXRodG9vbCAtSyBldGgwIGh3LXRjLW9mZmxvYWQgb25gLiBJcyB0aGVyZSBhY3R1YWxseSBhIGNvbmZpZyBvcHRpb24gKmV4cGxpY2l0bHkqIGZvciBUQyBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gdHJhY2sgdGhhdCBkb3duLiBNeSBuZXh0IG1vdmUgaXMgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgYEhXX1RDX09GRkxPQURgIG9wdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBlbmFibGVkIHRocm91Z2ggYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgaWYgdGhpcyBpcyBhbGwgaW1wbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MzQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo1Ni43MjEwODY3NloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNDU5NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhXX1RDX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6NTYuODE0MzQ1MjQzWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTQzOTA0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDIEhhcmR3YXJlIE9mZmxvYWQgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBoYXJkd2FyZSBvZmZsb2FkIGZvciBUcmFmZmljIENvbnRyb2wsIG9yIFRDLCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGtlcm5lbCwgcHJvdmlkZWQgdGhlIGRyaXZlciBoYXMgdGhlIGBORVRJRl9GX0hXX1RDYCBmbGFnIHNldC4gVGhhdCdzIGdvb2QsIGl0IG1lYW5zIHRoYXQgYnkgZW5hYmxpbmcgYE5FVF9DTFNfRkxPV0VSYCBJIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGRyaXZlciBzdXBwb3J0cyBpdC4gQSBzaW1wbGUgZmxvd2VyIGNsYXNzaWZpY2F0aW9uIHNob3VsZCBiZSBlbm91Z2ggdG8gc3RhcnQuXG5cbk5vdywgbXkgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIHNvIEknbSB3b25kZXJpbmcgaWYgYHRjX2FkZF9iYXNpY19mbG93YCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmdXp6LiBUaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBtb2RpZmllcyBib3RoIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gQnV0IGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHRjX2FkZF9mbG93YCwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgZW50cnkgZnVuY3Rpb24uIEhvd2V2ZXIsIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBpcyBub3QgY2FsbGVkIGZyb20gdGhlIG90aGVyIGZ1bmN0aW9uIEkgdGhvdWdodCB3YXMgY29ubmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHN0bW1hY19vcHNgLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGF0IGlzIHVzZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgY29uZmlnX2w0X2ZpbHRlcmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk4MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjowMS4yMDg3MzgwODhaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTc2Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ19sNF9maWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Nzk4PXN0YXRpYyBpbnQgZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTg1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjg1MjpzdGF0aWMgaW50IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtODUzLVxcdFxcdFxcdFxcdCAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9ODk4PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMC1cXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6OTMxOlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy05MzItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTM0PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNDEwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtOTY3LVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo5Njg6XFx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd21hYzRfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2OS1cXHQuZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzID0gZHdtYWM1X2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTcyPWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNTEwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAwOS1cXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6MTAxMDpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAxMS1cXHQuZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzID0gZHdtYWM1X2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXFx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDY2OlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTUyMTpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXFx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaD0zMDc9c3RydWN0IHN0bW1hY19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwMi1cXHRcXHRcXHRcXHR1MzIgbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0MDM6XFx0aW50ICgqY29uZmlnX2w0X2ZpbHRlcikoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwNC1cXHRcXHRcXHRcXHRib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNDg3LVxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgY29uZmlnX2wzX2ZpbHRlciwgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODg6I2RlZmluZSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODk6XFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBjb25maWdfbDRfZmlsdGVyLCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQ5MC0jZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTUzNT1zdGF0aWMgaW50IHRjX2FkZF9wb3J0c19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU2NS1cXHRpZiAoaHdfbWF0Y2gpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo1NjY6XFx0XFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cXHUwMDNlaHcsIGVudHJ5LVxcdTAwM2VpZHgsIHRydWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNTY3LVxcdFxcdFxcdFxcdFxcdCAgICAgIGlzX3VkcCwgdHJ1ZSwgaW52LCBod19tYXRjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NzMtXFx0aWYgKGh3X21hdGNoKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NTc0OlxcdFxcdHJldCA9IHN0bW1hY19jb25maWdfbDRfZmlsdGVyKHByaXYsIHByaXYtXFx1MDAzZWh3LCBlbnRyeS1cXHUwMDNlaWR4LCB0cnVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU3NS1cXHRcXHRcXHRcXHRcXHQgICAgICBpc191ZHAsIGZhbHNlLCBpbnYsIGh3X21hdGNoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTY0ND1zdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTY1My1cXHRpZiAoZW50cnktXFx1MDAzZWlzX2w0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NjU0OlxcdFxcdHJldCA9IHN0bW1hY19jb25maWdfbDRfZmlsdGVyKHByaXYsIHByaXYtXFx1MDAzZWh3LCBlbnRyeS1cXHUwMDNlaWR4LCBmYWxzZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02NTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjAxLjI3MjkxOTQ4M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzM2MTk1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEMgRmxvd2VyIE9mZmxvYWQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGZvY3VzZWQgb24gaG93IHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhlIFRyYWZmaWMgQ29udHJvbCAoVEMpIGZsb3dlciBvZmZsb2FkLiBJIHNlZSB0aGF0IGBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcmAgaXMgaW52b2tlZCBmcm9tIGB0Y19hZGRfcG9ydHNfZmxvd2AgYW5kIGB0Y19kZWxfZmxvd2AuICBgdGNfYWRkX3BvcnRzX2Zsb3dgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgdGNfYWRkX2Zsb3dgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBkcml2ZW4gYnkgdGhlIFRDIGZsb3dlciBvZmZsb2FkIG1lY2hhbmlzbS5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSW5pdGlhbGx5LCBJIGhhZCBicm9hZGVuZWQgdGhlIGZvY3VzIHN5bWJvbHMuIEhvd2V2ZXIsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlzICptb2RpZmllZCouIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgYXJlOlxuXG4qICAgYHRjX2FkZF9iYXNpY19mbG93YFxuKiAgIGB0Y19hZGRfZmxvd2BcbiogICBgdGNfZGVsX2Zsb3dgXG4qICAgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgXG5cbkkgcXVpY2tseSBjb25maXJtZWQgdGhhdCBgdGNfYWRkX3BvcnRzX2Zsb3dgIGlzbid0IHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhbmQgaXMgdGhlcmVmb3JlIG5vdCB0aGUgZm9jdXMgb2YgdGhpcyB3b3JrLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIHNlZWluZyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXMgdGhlIG1vc3QgcmVsZXZhbnQuIEkgd2FzIGFsc28gY3VyaW91cyBhYm91dCBgRFdNQUNfSU5URUxgLCBhbmQgdGhhdCBvbmUgaXMgZm9yIEludGVsIFF1YXJrL0VITC9UR0wgc3lzdGVtcy4gYFNUTU1BQ19QQ0lgIGlzIHRoZSBzdGFuZGFyZCBmb3IgZ2VuZXJpYyBQQ0ktYmFzZWQgc2V0dXBzLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgY29ubmVjdGlvbiB0byBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFNpbmNlIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBsaXZlcyBpbiBgZHd4Z21hYzJfY29yZS5jYCwgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGBTVE1NQUNfUENJYCBhY3R1YWxseSB0cmlnZ2VycyBvciB1c2VzIHRoYXQgZmlsZS4gSSBuZWVkIHRvIGV4YW1pbmUgYHN0bW1hY19wY2kuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjMzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjA4LjYwOTExNzZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTU3MjQ1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd3hnbWFjMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjA4LjY2OTI4NDA3NVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDUwNTg0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBkd3hnbWFjYCBEcml2ZXIgVXNhZ2UqKlxuXG5SaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhvc2UgYGR3eGdtYWNgIG9wZXJhdGlvbnMgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBJJ20gY29uY2VybmVkIHdpdGggdGhlIHVzYWdlIG9mIGJvdGggYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZXNlIHN0cnVjdHVyZXMgYXJlIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHNpbXBsZSBncmVwLWFuZC1maW5kOyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiAqaG93KiB0aGVzZSBhcmUgYmVpbmcgdXNlZCDigJMgd2hldGhlciBpdCdzIGRpcmVjdGx5IGluIGRyaXZlciBpbml0aWFsaXphdGlvbiwgd2l0aGluIGludGVycnVwdCBoYW5kbGVycywgZm9yIERNQSBjb25maWd1cmF0aW9uLCBvciB3aGF0ZXZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGVpciBjcml0aWNhbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC4gQXJlIHRoZXkgdXNlZCBzaW1pbGFybHksIG9yIGFyZSB0aGVyZSBkaXN0aW5jdCBkaWZmZXJlbmNlcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbj8gVGhlIGdvYWwgaXMgdG8gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tbW9uIGRlc2lnbiBwYXR0ZXJuIGJldHdlZW4gdGhlIGRyaXZlcnMsIG9yIHRoZSBkaWZmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIG9uIGhhcmR3YXJlIHZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjY4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MTYuMTE5ODcwOTY0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkyMzYzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDYzOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hnbWFjMjEwX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2NC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDEzPXN0YXRpYyB2b2lkIGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgYm9vbCBlbixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDI5OmNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDMwLVxcdC5jb3JlX2luaXQgPSBkd3hnbWFjMl9jb3JlX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU5OlxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2MC1cXHRcXHQudmxhbiA9IFxcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjoxNi4yNTkxMTM4NjRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI1ODU5NDIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGh3aWYuY2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBod2lmLmNgLlwiIEl0J3MgbGlrZWx5IHRoZSBjb3JlIGludGVyZmFjZSBmaWxlIGZvciBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGxvdy1sZXZlbCBzdHVmZiBsaXZlcywgdGhlIGJpdCB0d2lkZGxpbmcsIHRoZSByZWdpc3RlciBhY2Nlc3MsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGFsbCB0aGUgbml0dHktZ3JpdHR5IHRoYXQgYWN0dWFsbHkgKm1ha2VzKiB0aGluZ3MgaGFwcGVuLiBJJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN1c3BlY3RzIEkgZXhwZWN0IHRvIHNlZTogaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGRldmljZSBkcml2ZXIgZW50cnkgcG9pbnRzLCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIGRvc2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHBvc3NpYmx5IHNvbWUgZGVidWdnaW5nIG1hY3Jvcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSkgY29uZmlndXJhdGlvbnMsIGNsb2NrIHNldHRpbmdzLCBhbmQgcG93ZXIgbWFuYWdlbWVudCBpbnRlcmFjdGlvbnMuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGlkZW50aWZ5IHRoZSBrZXkgYXJlYXMgSSBuZWVkIHRvIGZvY3VzIG9uLCBtYXliZSBzcG90IHNvbWUgb2J2aW91cyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGp1c3Qgb24gYSBmaXJzdCBwYXNzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDA0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MjUuNTE3NzEwMDE4WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg0NTI4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU4LVxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjI1LjcyNjE2Nzc4M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMxNjU4MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGUgaW4gYGh3aWYuY2AsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE9wZXJhdGlvbiBTZWxlY3Rpb24gTG9naWMgaW4gYGh3aWYuY2AqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgb3BlcmF0aW9uIHNlbGVjdGlvbiBtZWNoYW5pc20gd29ya3MuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgZGVjaXNpb24gcGF0aCB0aGF0IHRoZSBjb2RlIHVzZXMgdG8gY2hvb3NlIHRoZSBjb3JyZWN0IHNldCBvZiBvcGVyYXRpb25zIG9yIGhhbmRsZXJzLiBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1pbmcsIHRoYXQgXCJod2lmXCIgcHJvYmFibHkgc3RhbmRzIGZvciBcIkhhcmR3YXJlIEludGVyZmFjZVwiLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3RseSBmcm9tIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuIEkgd2FudCB0byBwaW5wb2ludCB0aGUga2V5IHZhcmlhYmxlcyBhbmQgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IGRyaXZlIHRoaXMgc2VsZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBsaWtlbHkgdG8gYmUgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGlzIHRoaXMgaGVhdmlseSBjb21waWxlLXRpbWUgZGVmaW5lZD8gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhbmFseXplIHRoZSBsb2dpYy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBBcmUgd2UgZGVhbGluZyB3aXRoIGZ1bmN0aW9uIHBvaW50ZXJzLCBhIGp1bXAgdGFibGUsIG9yIHBlcmhhcHMgc29tZSBmb3JtIG9mIGxvb2stdXAgYmFzZWQgb24gZGV2aWNlIElEIG9yIGNhcGFiaWxpdGllcz8gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb3IgZXZpZGVuY2Ugb2YgcG9seW1vcnBoaXNtLCBzaW5jZSBpdCB3b3VsZCBiZSBsaWtlbHkgZm9yIGRpZmZlcmVudCBoYXJkd2FyZSBtb2R1bGVzIHRvIHByb3ZpZGUgdGhlaXIgb3duIGludGVyZmFjZXMuIEFyZSB0aGVyZSBhbnkgYWJzdHJhY3Rpb24gbGF5ZXJzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvZGUgYWRhcHRzIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgbXVsdGlwbGUgYGh3aWZgIGluc3RhbmNlcyBwb3NzaWJsZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb3IsIGNvbnZlcnNlbHksIHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGF0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBtaWdodCBjcmVhdGU/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IHN3aXRjaCBzdGF0ZW1lbnRzIG9yIGBpZi9lbHNlYCBjaGFpbnMgdGhhdCBhcmUgdXNlZCB0byBkaXNwYXRjaCB0aGUgY2FsbHMsIGFuZCBhc3Nlc3MgdGhlaXIgZWZmaWNpZW5jeSBhbmQgY2xhcml0eS4gSSdtIGFsc28gZ29pbmcgdG8gY2hlY2sgZm9yIGVycm9yIGhhbmRsaW5nLCBvciBhbnkgZmFsbGJhY2sgbWVjaGFuaXNtcyBpZiBubyBhcHByb3ByaWF0ZSBvcGVyYXRpb24gaXMgZm91bmQuIEFueSB1bnVzdWFsIG9yIGNsZXZlciB0ZWNobmlxdWVzIGFyZSB3b3J0aCBteSBhdHRlbnRpb24uIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY2hvaWNlcyBiZWhpbmQgaG93IHRoaXMgc3lzdGVtIGlzIHN0cnVjdHVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODYyLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MjkuODU3ODI4NDU3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU4MDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfaHdpZl9lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTEwMD1pbnQgc3RtbWFjX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjExMTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEyLVxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk0LXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMTktXFx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjA6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzIxLVxcdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjoyOS45NDk0MTU1M1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzM3Njg2OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGBzdG1tYWNfcGNpYCdzIENvcmUgVHlwZSoqXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpcyBiYXNlZCBvbiBib3RoIGBjb3JlX3R5cGVgIGFuZCBgc25wc3ZlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhlc2Ugc29ydHMgb2YgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRoZSBgU1RNTUFDX1BDSWAgZGVmaW5pdGlvbiwgd2hpY2ggSSBhc3N1bWUgcmVmZXJzIHRvIHRoZSBTeW5vcHN5cyBkcml2ZXIgb3ZlciBQQ0ksIHJlbGllcyBvbiBgc3RtbWFjX3BjaV9pbmZvYC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoYXQgc3RydWN0dXJlLCBgc3RtbWFjX3BjaV9pbmZvYCwgYWN0dWFsbHkgY29udGFpbiB0aGUgYGNvcmVfdHlwZWAgSSdtIGxvb2tpbmcgZm9yPyBJdCdzIHRoZSBseW5jaHBpbiwgaXNuJ3QgaXQ/IElmIGl0IGRvZXMsIHRoZW4gd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBJZiBub3QsIHRoZW4gdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBicm9rZW4uIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYHN0bW1hY19wY2kuY2AuIFRoYXQncyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgYHN0bW1hY19wY2lfaW5mb2Agc2hvdWxkIGJlLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy4gTmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgYGNvcmVfdHlwZWAgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgYHN0bW1hY19wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgY29uZmlybSB0aGF0IGlzIGluZGVlZCB0aGUgaW50ZW5kZWQgbWV0aG9kIG9mIHRoZSBzZWxlY3Rpb24gcHJvY2VkdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgxOSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjM5LjY4NzEwNDcyOVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjEwMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjozOS43OTY3MjAyNzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ5NTE1MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlZmF1bHQgRGF0YSBmb3IgTmV0d29yayBEcml2ZXJzKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgZGVmYXVsdCBkYXRhIGNvbmZpZ3VyYXRpb25zIGZvciBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgIGFuZCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb25zaWRlcmVkIHRoZSBiYXNlbGluZSBmb3IgZWFjaCBvZiB0aGVzZSBkcml2ZXJzLiBDb21wYXJpbmcgdGhlc2UgdHdvIHNldHMgb2YgZGVmYXVsdHMsIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZWlyIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgaG93IHRoZXkgbWlnaHQgZGlmZmVyIGluIHRoZWlyIGluaXRpYWwgc2V0dXAuIFRoaXMgY29tcGFyaXNvbiB3aWxsIGhlbHAgbWUgcGlucG9pbnQgYW55IHBvdGVudGlhbCByZWR1bmRhbmNpZXMsIG9wdGltaXphdGlvbnMgb3IgYXJlYXMgb2YgY3VzdG9taXphdGlvbiB0aGF0IGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBhdCB0aGUgc3lzdGVtIGxldmVsIHZlcnN1cyB3aGF0IGVhY2ggc3BlY2lmaWMgZHJpdmVyIGRpY3RhdGVzLiBMZXQncyBzZWUgd2hhdCBpbnNpZ2h0cyB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGhvbGQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDYwLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NDYuMjkxODczMzVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTIxMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNucHNfZ21hYzVfZGVmYXVsdF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1NDpzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMzpcXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjQ2LjM1NjAwMzAxNVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY0MjcxMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyLiBMZXQncyBkaXZlIHJpZ2h0IGluLiBUaGUgaW1tZWRpYXRlIGN1ZSBpcyB0byBleGFtaW5lIHRoZSBmaWxlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gLSBcInNucHNcIiBzdWdnZXN0cyBTaW5nbGUgTnVjbGVvdGlkZSBQb2x5bW9ycGhpc21zIGRhdGEsIFwiZ21hYzVcIiBwcm9iYWJseSBkZW5vdGVzIGEgc3BlY2lmaWMgZXhwZXJpbWVudCwgbWV0aG9kb2xvZ3ksIG9yIHZlcnNpb24sIGFuZCBcImRlZmF1bHRfZGF0YVwiIGxpa2VseSBpbmRpY2F0ZXMgZWl0aGVyIHRoZSByYXdlc3QgZm9ybSBvciBhIGN1cmF0ZWQgYmFzZWxpbmUgZGF0YXNldC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgZmlsZSBmb3JtYXQgLSBpcyBpdCBhIFZDRiwgYSBwbGFpbiB0ZXh0IHRhYmxlLCBhIGJpbmFyeSBmb3JtYXQ/IFRoZSAnZGVmYXVsdCcgcGFydCBpbXBsaWVzIGEgc3RhcnRpbmcgcG9pbnQsIHNvIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHByZXByb2Nlc3Npbmcgc3RlcHMgdGhhdCBoYXZlIGxpa2VseSBiZWVuIGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGZvdW5kYXRpb25hbCBmb3IgYW55IGRvd25zdHJlYW0gYW5hbHlzaXMuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG1ldGFkYXRhLCB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgYXNzb2NpYXRlZCB3aXRoIGl0LiBGcm9tIHRoZSBuYW1lIGFsb25lLCBJIGNhbiBzdGFydCBmb3JtaW5nIGh5cG90aGVzZXMgYWJvdXQgdGhlIGFuYWx5dGljYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1OTMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjo1MS4xMjAyNzY4MjNaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU0OlxcdHN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuICA1NTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICA1NjpcXHR7XFxuICA1NzpcXHRcXHRpbnQgaTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XFxuICA2MDpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbiAgNjE6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgNjI6XFx0XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbiAgNjM6XFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXFxuICA2NjpcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRwbGF0LVxcdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcXG4gIDcwOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4gIDcxOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xcbiAgNzI6XFx0XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcXG4gIDczOlxcdFxcdFxcdGlmIChpIFxcdTAwM2UgMClcXG4gIDc0OlxcdFxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcXG4gIDc1OlxcdFxcdH1cXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0cGxhdC1cXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcXG4gIDc4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlOyBpKyspXFxuICA3OTpcXHRcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDgyOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA4NTpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdC8qIEF4aSBDb25maWd1cmF0aW9uICovXFxuICA4ODpcXHRcXHRwbGF0LVxcdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpwbGF0LVxcdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcXG4gIDg5OlxcdFxcdGlmICghcGxhdC1cXHUwMDNlYXhpKVxcbiAgOTA6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA5MTpcXHRcXG4gIDkyOlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcXG4gIDkzOlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX3JkX29zcl9sbXQgPSAzMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTEuMTIwMzYzMjMzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzAxNTU3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQSBQb2ludCBvZiBDbGFyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBzZXR0aW5nIGBwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7YC4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSB1bmRlcnN0YW5kIHRoZSBkcml2ZXIgaXMgc3BlY2lmeWluZyB0aGUgY29yZSB0eXBlIGhlcmUuIEJ1dCwgd2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgc3RtbWFjX2RlZmF1bHRfZGF0YWA/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2Ugb3ZlcnJpZGluZyBzb21ldGhpbmcgcHJlLWNvbmZpZ3VyZWQ/IElzIHRoaXMgYSBzdGFuZGFyZCB0eXBlPyBJcyBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgYmVpbmcgaGFuZGxlZCBhdCBhIGRpZmZlcmVudCBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBjb25mbGljdCBvciBpZiB0aGVyZSBpcyBhIHJlZHVuZGFudCBhc3NpZ25tZW50LiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBJdCBjb3VsZCByZWxhdGUgdG8gY2xvY2sgc2V0dGluZ3MsIERNQSBwYXJhbWV0ZXJzLCBvciBldmVuIHJlZ2lzdGVyIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBHTUFDIHZlcnNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgd2hhdCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgcHJvdmlkZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY3VycmVudCBzZXR0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgaXMgYmVpbmcgaGFuZGxlZCBhdCBhIGRpZmZlcmVudCBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGhpcyBpcyB0aGUgcXVlc3Rpb24gdGhhdCBJIHdhbnQgdG8gYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU4OCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTUuMDkwNTIxMjQ5WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMzpcXHRzdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuICAzNDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgMzU6XFx0e1xcbiAgMzY6XFx0XFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cXG4gIDM3OlxcdFxcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA0MDpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfYWRkciA9IDA7XFxuICA0MTpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgNDQ6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgNDU6XFx0XFx0LyogVE9ETzogQVhJICovXFxuICA0NjpcXHRcXG4gIDQ3OlxcdFxcdHJldHVybiAwO1xcbiAgNDg6XFx0fVxcbiAgNDk6XFx0XFxuICA1MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuICA1MTpcXHRcXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbiAgNTI6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTUuMDkwNTkxNDg5WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDQ3ODk4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIGl0cyBQb3RlbnRpYWwgSW1wYWN0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgc2V0dGluZy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQncyBsaWtlbHkgc2V0dGluZyBgcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX01BQztgLiBUaGF0IGZlZWxzIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgb3V0Y29tZSBnaXZlbiB0aGUgY29udGV4dCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgaHVuY2guIEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgaXQsIGluIGZhY3QsIGRvZXMgd2hhdCBJIGV4cGVjdC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNvcmUgdHlwZSBhc3NpZ25tZW50IHRvIHVuZGVyc3RhbmQgaXRzIGRvd25zdHJlYW0gaW1wbGljYXRpb25zLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBleGFjdCBtZWNoYW5pc20gYW5kIGFueSBzaWRlIGVmZmVjdHMuIFRoaXMga2luZCBvZiBxdWljayB2ZXJpZmljYXRpb24gaXMgcm91dGluZSB0byBtZSAtIEkgY2FuJ3QgbGVhdmUgYXNzdW1wdGlvbnMgdW52YWxpZGF0ZWQsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBmdW5kYW1lbnRhbCBzZXR0aW5ncy4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBiZWluZyBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIxNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTguODM1MzgzMTcyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTAzODY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21tb25fZGVmYXVsdF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTk9c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIzOnN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM2LVxcdC8qIFNldCBjb21tb24gZGVmYXVsdCBkYXRhIGZpcnN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjM3OlxcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjo1OC45MDY0Mjg1NTZaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMzYwMTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEZWZhdWx0IERhdGEqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiY29tbW9uX2RlZmF1bHRfZGF0YVwiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiwgdGhlIGNvcmUgc2V0dGluZ3MgdGhpcyBzeXN0ZW0gYXNzdW1lcyBvdXQgb2YgdGhlIGJveC4gVGhpcyBpcyB3aGVyZSB0aGUgZm91bmRhdGlvbiBpcyBsYWlkLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFzc3VtcHRpb25zIGFyZSBjb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBmaXJzdCBsaW5lIG9mIGN1c3RvbWl6YXRpb24gYmVnaW5zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYSBzb2xpZCBncmFzcCBvZiB0aGVzZSBkZWZhdWx0cyBpcyBjcnVjaWFsLiBJZiBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgcHJlLXNldCBjb25maWd1cmF0aW9ucywgSSBjYW4gbW9yZSBlZmZlY3RpdmVseSBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLCBvcHRpbWl6ZSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBhbmQgdHJvdWJsZXNob290IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0IGlzIGFsd2F5cyBiZXN0IHRvIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRlZmF1bHQgc3RhdGVzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgd2hlcmUgSSBzdGFydC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzg4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MDIuNDMwMDMxOTg2WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMzpcXHRzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4gIDI0OlxcdHtcXG4gIDI1OlxcdFxcdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFxcdTAwMjYgTURDID0gY2xrX2Nzcl9pLzE2ICovXFxuICAyNjpcXHRcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XFxuICAyNzpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuICAyODpcXHRcXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gIDMxOlxcdH1cXG4gIDMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzowMi40MzAxMDI1NjZaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MTM4Mjg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgR01BQyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSBsb29raW5nIGF0IGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIFJpZ2h0LCBzdGFuZGFyZCBHTUFDIGNvcmVzLiBOb3csIHdoZXJlIGFyZSB3ZSB3aXRoIHRob3NlIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucz8gQWgsIGhvbGQgb24uIEkndmUgc3BvdHRlZCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHRoZXJlJ3MgYSBkaWZmZXJlbmNlLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGljaCBjb3JlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgdXNlcyBgZHd4Z21hYzIxMF9vcHNgPyBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB0aGUgY29yZSBhcmNoaXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoYXQgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBMNCBmaWx0ZXIgY29uZmlndXJhdGlvbi4gV2UncmUgZ2V0dGluZyBjbG9zZXIgdG8gbWFraW5nIHRoaXMgbWFrZSBzZW5zZS4gR290dGEgbG9vayB1cCB0aGF0IGNvcmUgdHlwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMTEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjA1LjkwMTQ4OTI1OFoiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3MzEyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU4LVxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjA1Ljk2NzIzMjE3M1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDAxMzcwNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZS4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gSSdtIG5vdCBnb2luZyB0byBib3RoZXIgd2l0aCB0aGUgZW50aXJlIGZpbGUgcmlnaHQgbm93LiBJJ2xsIHN0YXJ0IGJ5IGZvY3VzaW5nIGluIGFyb3VuZCBsaW5lIDI1OC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSSdsbCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpcyBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MDUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzoxMi4zNjg2MDU0M1oiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbiAyNTE6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI1MjpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI1MzpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI1NDpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI1NTpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNTY6XFx0XFx0XFx0fSxcXG4gMjU3OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI1ODpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjU5OlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuIDI2MDpcXHRcXHRcXHQudmxhbiA9IFxcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxcbiAyNjE6XFx0XFx0XFx0Lmh3dGltZXN0YW1wID0gXFx1MDAyNnN0bW1hY19wdHAsXFxuIDI2MjpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyNjM6XFx0XFx0XFx0Lm1vZGUgPSBOVUxMLFxcbiAyNjQ6XFx0XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG4gMjY1OlxcdFxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbiAyNjY6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyNjc6XFx0XFx0XFx0LnNldHVwID0gZHd4Z21hYzJfc2V0dXAsXFxuIDI2ODpcXHRcXHRcXHQucXVpcmtzID0gTlVMTCxcXG4gMjY5OlxcdFxcdH0sIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MTIuMzY4NzAxMzFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NTM1MjI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWVwIERpdmUgb24gYGNvcmVfdHlwZWAgRGV0ZXJtaW5hdGlvbioqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgZW50cnkgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogV2hhdCdzIHRoZSBmdW5kYW1lbnRhbCwgdGhlICpjb3JlKiwgYGNvcmVfdHlwZWAgb2YgdGhpcyB0aGluZz8gSSBuZWVkIHRvIGdldCB0aGlzIHJpZ2h0IGJlY2F1c2UgdGhlIGVudGlyZSBzeXN0ZW0sIGZyb20gZGF0YSBtb2RlbHMgdG8gZG93bnN0cmVhbSBwcm9jZXNzaW5nLCBoaW5nZXMgb24gdGhpcyBpbml0aWFsIGNsYXNzaWZpY2F0aW9uLiBJIGNhbid0IGp1c3QgcGljayBzb21ldGhpbmcgYXQgcmFuZG9tOyBpdCBuZWVkcyB0byBiZSBkZWZlbnNpYmxlLCBzY2FsYWJsZSwgYW5kIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgZXNzZW5jZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkLlxuXG5BbSBJIGxvb2tpbmcgYXQgYSBgdHJhbnNhY3Rpb25gLCBhbiBgZXZlbnRgLCBvciBhIGByZXBvcnRgPyBJcyBpdCBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGBzZW5zb3JfZGF0YWAgb3IgYGFub21hbHlfZGV0ZWN0aW9uX3Jlc3VsdGA/IE9yIHBlcmhhcHMgYSBjb21wb3NpdGUgdGhhdCBpcyBhIGBkZXJpdmVkX21ldHJpY2Agb3IgYW4gYGFnZ3JlZ2F0ZWRfc3RhdGlzdGljYD8gSXQgY291bGQgYmUgYSBgbWV0YWRhdGFfdXBkYXRlYOKApiB0aGUgb3B0aW9ucyBhcmUgbnVtZXJvdXMsIGFuZCB0aGUgcmlnaHQgY2hvaWNlIGltcGFjdHMgaG93IEkgaGFuZGxlIGl0cyBhdHRyaWJ1dGVzLCB2YWxpZGF0ZSB0aGUgc2NoZW1hLCBhbmQgaW50ZWdyYXRlIGl0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjYXJlZnVsbHkgYW5hbHl6ZSBpdHMgc3RydWN0dXJlLCBjb250ZXh0LCBhbmQgcHVycG9zZS4gSSBjYW4ndCBsZXQgdGhpcyBiZSBqdXN0IGFub3RoZXIgZGF0YSBlbnRyeS4gVGhpcyAqY29yZV90eXBlKiBuZWVkcyB0byBiZSB0aGUgUm9zZXR0YSBTdG9uZSB0aGF0IHVubG9ja3MgaXRzIG1lYW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjY2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzoxNi40MjQwNTcwMTlaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyNDE6XFx0XFx0XFx0Lm1vZGUgPSBcXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXFxuIDI0MjpcXHRcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbiAyNDM6XFx0XFx0XFx0Lm1tYyA9IFxcdTAwMjZkd21hY19tbWNfb3BzLFxcbiAyNDQ6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyNDU6XFx0XFx0XFx0LnNldHVwID0gZHdtYWM0X3NldHVwLFxcbiAyNDY6XFx0XFx0XFx0LnF1aXJrcyA9IE5VTEwsXFxuIDI0NzpcXHRcXHR9LCB7XFxuIDI0ODpcXHRcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG4gMjQ5OlxcdFxcdFxcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcXG4gMjUwOlxcdFxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbiAyNTE6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI1MjpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI1MzpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI1NDpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI1NTpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNTY6XFx0XFx0XFx0fSxcXG4gMjU3OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI1ODpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjU5OlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjE2LjQyNDE0MzY1OVoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY4OTk0Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipYR01BQyBQQ0kgRGV2aWNlIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBhIGBEV01BQ19DT1JFX1hHTUFDYCBpbnN0YW5jZS4gSSBuZWVkIHRvIGRldGVybWluZSBpdHMgUENJIGRldmljZSBzdGF0dXMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYXJlIHRoZXJlIGFueSBQQ0kgZGV2aWNlcyBsZXZlcmFnaW5nIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgSVAgY29yZT8gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJcyB0aGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGluIFBDSSBkZXZpY2VzLCBvciBpcyBpdCB0eXBpY2FsbHkgdXNlZCBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBsaWtlIHdpdGggYSBkaWZmZXJlbnQgYnVzIG9yIHBlcmlwaGVyYWwgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguIEkgd2lsbCBuZWVkIHRvIGRldGVybWluZSBpZiBJJ3ZlIGRlYWx0IHdpdGggdGhpcyBiZWZvcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIGEgdGhvcm91Z2ggZGV2aWNlIGRhdGFiYXNlIGFuZCBzb3VyY2UgY29kZSBkaXZlIHRvIGNvbmZpcm0gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5ODgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjIwLjQ5MzE0MDI3OFoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzM0NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRXTUFDX0NPUkVfWEdNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XFx0cmV0dXJuIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0IHx8IGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3MzpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yMT1zdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cXHRcXHR2ZXItXFx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4OlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cXHRcXHQgICAgZGV2X2lkICE9IGVudHJ5LVxcdTAwM2VkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXFx0XFx0cHJpdi1cXHUwMDNlbW1jYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIE1NQ19HTUFDM19YX09GRlNFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzM5OlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQwLVxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfWEdNQUNfT0ZGU0VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTI4PXN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXFx0Y3RybCA9IHJlYWRsKGVzdF9hZGRyICsgRVNUX0NPTlRST0wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzo1NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXFx0XFx0Y3RybCBcXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9ODM9c3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgRVNUX0JUUkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXFx0XFx0XFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzAxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dldGRydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5OlxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTUtXFx0XFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc1LVxcdFxcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozNzY6XFx0fSBlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgIT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVxcdFxcdG1lbWNweShcXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY1NjY9c3RhdGljIGludCBzdG1tYWNfZG1hX2NhcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjAxLVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjAyOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYwMy1cXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyNS1cXHRcXHQgICAocHJpdi1cXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkgPyBcXFwiWVxcXCIgOiBcXFwiTlxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYyNjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI3LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYzNC1cXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjM1OlxcdCAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYzNi1cXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlxcXFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNjY9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczODI6XFx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM4My1cXHRcXHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NDA4PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTMwLVxcdGlmICgocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV8zXzUwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTMxOlxcdCAgICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTMyLVxcdCAgICAhcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcml3dF9vZmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Nz1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDA1OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDYtXFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTM2PXN0YXRpYyB1MzIgc3RtbWFjX2Nsa19jc3Jfc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVxcdFxcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU2LVxcdFxcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cXHRcXHRuZXdfYnVzLVxcdTAwM2VyZWFkID0gXFx1MDAyNnN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVxcdC8qIExvb2tzIGxpa2Ugd2UgbmVlZCBhIGR1bW15IHJlYWQgZm9yIFhHTUFDIG9ubHkgYW5kIEM0NSBQSFlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVxcdFxcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxNj1zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwic25wcyxkd3hnbWFjXFxcIikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo1NDg6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MjAuNjY4ODc5Nzg1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNDI2MzMwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb3ZlcmFnZSBvZiBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgaXMgdXNlZCBieSBgZHdtYWMtc29jZnBnYS5jYCwgYGR3bWFjLXRlZ3JhLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYCB3aGVuIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyBgc25wcyxkd3hnbWFjYC4gQnV0IGl0J3MgKm5vdCogdXNlZCBieSBgc3RtbWFjX3BjaS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIGl0J3Mgbm90IHByZXNlbnQgaW4gdGhlIFBDSSBjb25maWd1cmF0aW9uLCBob3cgYW0gSSBnb2luZyB0byBmdXp6IGl0IGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dXA/IFN5emthbGxlciBtYWtlcyBmdXp6aW5nIHBsYXRmb3JtIGRldmljZXMgZWFzaWVyIHRocm91Z2ggZGV2aWNldHJlZSBpbmplY3Rpb24sIGBzeXpfZGV2cmVzYCwgb3Igc2ltaWxhciB0ZWNobmlxdWVzLCBidXQgaXQncyBzdGlsbCBtb3JlIGNoYWxsZW5naW5nLlxuXG5UaGVuLCBJIHJlbWVtYmVyIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFuZCAqdGhhdCdzKiB1c2VkIGJ5ICphbGwqIHN0bW1hYyBkZXZpY2VzIHRoYXQgc3VwcG9ydCBUQyBvZmZsb2FkLiBFeGNlbGxlbnQuIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgaW4gYHN0bW1hY190Yy5jYCBhbmQgaXMgdXNlZCBieSBgZHdtYWM0X3RjX29wc2AgYW5kIGBkd21hYzUxMF90Y19vcHNgLiBOb3csIGBkd21hYzRfdGNfb3BzYCBpcyB1c2VkIGJ5IGBEV01BQ19DT1JFX0dNQUM0YCwgYW5kICp0aGF0KiAqaXMqIHVzZWQgYnkgUENJISBTcGVjaWZpY2FsbHksIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc2V0cyBgRFdNQUNfQ09SRV9HTUFDNGAuIFNvLCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSB0aGUgUENJIHBhdGgsIHdoaWNoIGlzIG11Y2ggZWFzaWVyIHRvIGZ1enouXG5cbk5vdywgdGhhdCBzYWlkLCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgdXNlZC4gU28sIGlkZWFsbHksIEknZCBsaWtlIHRvIGdldCB0aGUgWEdNQUMgcGF0aCB3b3JraW5nLiBDYW4gSSBlbmFibGUgYERXTUFDX1NPQ0ZQR0FgIG9yIGBEV01BQ19URUdSQWA/IFllcywgSSBjYW4uIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSBoYXZlIGFueSBkZXBlbmRlbmNpZXMsIGJ1dCBhdCBsZWFzdCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gYnJvYWRlbiB0aGUgZnV6emluZyBzdXJmYWNlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTg3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjMwLjAxMTUxNjUzM1oiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2MDM0OTE3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFdNQUNfU09DRlBHQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjAzOmNvbmZpZyBEV01BQ19TT0NGUEdBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDQtXFx0dHJpc3RhdGUgXFxcIlNPQ0ZQR0EgZHdtYWMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MzEuMjcxODcxMTJaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA3MzA4NTU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgYERXTUFDX1NPQ0ZQR0FgIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSBgRFdNQUNfU09DRlBHQWAgbWVudGlvbmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZ2V0IHJpZ2h0IHRvIHRoZSBoZWFydCBvZiBpdCAtIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgcGllY2VzIG9mIHRoZSBzeXN0ZW0gZG9lcyB0aGlzIHRoaW5nIHJlbHkgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHRvIGFzc2VzcyBpdCBwcm9wZXJseS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEFyZSB3ZSB0YWxraW5nIGhhcmR3YXJlLCBvdGhlciBzb2Z0d2FyZSBtb2R1bGVzLCBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycywgb3IgYSBjb21iaW5hdGlvbj8gVGltZSB0byBmaW5kIG91dC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyMDIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzo0MC4zNDQ5NTk2MDhaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDMsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDM6XFx0Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG4gMjA0OlxcdFxcdHRyaXN0YXRlIFxcXCJTT0NGUEdBIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIwNTpcXHRcXHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxcbiAyMDY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcXG4gMjA3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDIwODpcXHRcXHRzZWxlY3QgTURJT19SRUdNQVBcXG4gMjA5OlxcdFxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbiAyMTA6XFx0XFx0c2VsZWN0IFBDU19MWU5YXFxuIDIxMTpcXHRcXHRoZWxwXFxuIDIxMjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcXG4gMjEzOlxcdFxcbiAyMTQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFsdGVyYSBTT0NGUEdBIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjE1OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcXG4gMjE2OlxcdFxcdCAgYXJyaWE1IGFuZCBjeWNsb25lNSBGUEdBIFNvQ3MuXFxuIDIxNzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6NDAuMzQ1MDQ3MzU4WiIsIlNlcSI6NzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzEzNTg5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCdzIHJlYWNoIGRlcGVuZHMgb24gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uOiBgT0YgXHUwMDI2XHUwMDI2IChBUkNIX0lOVEVMX1NPQ0ZQR0EgfHwgQ09NUElMRV9URVNUKWAuIFN5emthbGxlciBjYW4sIG9mIGNvdXJzZSwgZW5hYmxlIGVpdGhlciBgQ09NUElMRV9URVNUYCBvciBgQVJDSF9JTlRFTF9TT0NGUEdBYCwgYnV0LCBhbmQgaGVyZSdzIHRoZSBjYXRjaCwgU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NC4gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuSWYgSSBqdXN0IGVuYWJsZSBgRFdNQUNfU09DRlBHQWAgYW5kIGBDT01QSUxFX1RFU1RgLCBpdCAqd2lsbCogY29tcGlsZSwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIGl0IGJlICpwcm9iZWQqPyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgcmVxdWlyZSBhIERldmljZSBUcmVlIG5vZGUgb3IgcGxhdGZvcm0gZGF0YS4gU3l6a2FsbGVyIGhhcyB0aGlzIHBzZXVkby1kZXZpY2UgaW5qZWN0aW9uIG1lY2hhbmlzbSwgdGhpbmdzIGxpa2UgYHN5el9kZXZyZXNgLCBidXQgaXRzIGEgYml0IGxpbWl0ZWQuIEhvd2V2ZXIsIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggUENJLCBhbmQgdGhhdCdzIGV4dHJlbWVseSBlYXN5IHRvIGZ1enouXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC5cblxuSSBzaG91bGQgcmVmaW5lIHRoZSBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgaW5jbHVkZTpcblxuKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2BcbiogICBgdGNfYWRkX2Zsb3dgXG4qICAgYHRjX2RlbF9mbG93YFxuKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYFxuXG5Ob3csIHJlZ2FyZGluZyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAsIGl0ICptaWdodCogbm90IGJlIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXNuJ3QgcHJvYmVkLiBIb3dldmVyLCBpdCAqaXMqIHBhcnQgb2YgdGhlIHBhdGNoLCBzbyBJIG5lZWQgdG8gaW5jbHVkZSBpdCBhbnl3YXkuIElmIFN5emthbGxlciAqZG9lcyogbWFuYWdlIHRvIHByb2JlIGEgYGR3eGdtYWNgIGRldmljZSwgdGhlbiBpdCB3aWxsIGZ1enogaXQuIFRoYXQncyBhIGdvb2QgdGhpbmcuXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIG90aGVyIHJlcXVpcmVkIGNvbmZpZ3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5TbywgSSBuZWVkIHRvIGNoZWNrOlxuXG4qICAgYFNUTU1BQ19FVEhgXG4qICAgYFNUTU1BQ19QQ0lgXG4qICAgYE5FVF9DTFNfRkxPV0VSYFxuXG5JcyB0aGVyZSBhbnkgY29uZmlnIHRoYXQgaXMgYSBkZXBlbmRlbmN5IGZvciBgdGNfYWRkX2Jhc2ljX2Zsb3dgPyBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBpbiBgc3RtbWFjX3RjLmNgLiBMZXQncyBqdXN0IGRvdWJsZSBjaGVjayB0aGF0IGBzdG1tYWNfdGMuY2AgY29tcGlsZXMgd2l0aCB0aGUgYmFzZSBjb25maWd1cmF0aW9ucyBJIGhhdmUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzo0Ny40NzY0MDg2MloiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4OTA1NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY190Yy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXFx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6ODpcXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOS1cXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6NDcuODQ1MzE4OTMzWiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzE3OTY3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHN0bW1hYyBUQyBGbG93ZXIgT2ZmbG9hZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgVEMgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBTaW5jZSBgU1RNTUFDX0VUSGAgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHksIGl0J3MgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgY2FuIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBzdGF0aWMsIGxpa2UgSSB0aG91Z2h0LCBhbmQgYXMgYSByZXN1bHQsIEkgY2FuIGp1c3QgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdC5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFkZGluZyBwcm90b2NvbCB2YWxpZGF0aW9uLCBhbmQgYWxzbyBhZGp1c3RzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgY29kZSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlLiBDcnVjaWFsbHksIHRoZSBzdG1tYWMgZHJpdmVyIGFsc28gc3VwcG9ydHMgUENJIHZpYSBgU1RNTUFDX1BDSWAsIHdoaWNoIG1lYW5zIGl04oCZcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoaXMgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgaXRzIGF0dGFjayBzdXJmYWNlLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBKdXN0IHRvIGRvdWJsZS1jaGVjaywgaXQgbG9va3MgbGlrZSBgdGNfYWRkX2Zsb3dgIGFuZCBgdGNfZGVsX2Zsb3dgIGFyZSBhbHNvIHN0YXRpYywgc28gSSBjYW4gYWRkIHRoZW0gdG8gdGhlIGxpc3QuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGNvbmZpZ3MuIFdlIGFscmVhZHkgaGF2ZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gSSBzaG91bGQgYWxzbyB2ZXJpZnkgdGhhdCBgTkVUX0NMU19GTE9XRVJgIGlzIGVuYWJsZWQsIGFzIGl0IHByb3ZpZGVzIHRoZSBjb3JlIGZsb3dlciBmdW5jdGlvbmFsaXR5LiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBjaGVjayBmb3IgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLiBJIGJlbGlldmUgdGhpcyBpcyByZXF1aXJlZCB0byBhdHRhY2ggdGhlIGZsb3dlciBmaWx0ZXIgdG8gdGhlIGludGVyZmFjZSB2aWEgY29tbWFuZHMgbGlrZSBgdGMgcWRpc2MgYWRkIGRldiBldGgwIGluZ3Jlc3NgIGFuZCBgdGMgZmlsdGVyIGFkZCBkZXYgZXRoMCBwYXJlbnQgZmZmZjogcHJvdG9jb2wgaXAgZmxvd2VyIC4uLmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjU1LjYxNzExNzkyOFoiLCJTZXEiOjgwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4ODYwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfSU5HUkVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVF9TQ0hfRlFfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXFxubmV0L3NjaGVkL0tjb25maWc6MzQ3OmNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjU1LjY4MjAwOTg4M1oiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMxNjg0MzI4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2guIEl0J3MgY2xlYXIgdGhhdCB3ZSBuZWVkIGBORVRfU0NIX0lOR1JFU1NgIHRvIGF0dGFjaCB0aG9zZSBpbmdyZXNzIGZpbHRlcnMsIGFuZCBJJ20gY29uZmlkZW50IHRoYXQncyBhbGwgd2UgbmVlZCBoZXJlLiBObyBuZWVkIGZvciBgTkVUX0hXX0VYQUNUX01BVENIYDsgYE5FVF9DTFNfRkxPV0VSYCBpcyBzdWZmaWNpZW50LiBTbywgSSdsbCBhZGQgYE5FVF9TQ0hfSU5HUkVTU2AgdG8gdGhlIGNvbmZpZ3MsIGVhc3kuXG5cbk5vdywgSSB3YW50ZWQgdG8gZG91YmxlLWNoZWNrIGlmIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgYmVpbmcgY2FsbGVkIGZvciBlZ3Jlc3MgYXMgd2VsbC4gQWgsIHJpZ2h0LCBgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiYCBpcyBjYWxsZWQgZm9yIGJvdGggaW5ncmVzcyBhbmQgZWdyZXNzLCBzbyB3ZSdyZSBjb3ZlcmVkLiBUaG91Z2gsIFRDIG9mZmxvYWQgaXMgKnVzdWFsbHkqIGluZ3Jlc3MgZm9yIGZsb3dlciBmaWx0ZXJzLCBpdCAqY2FuKiBiZSBlZ3Jlc3MgdG9vLiBUaGUgaW5jbHVzaW9uIG9mIGBORVRfU0NIX0lOR1JFU1NgIGlzIGEgc29saWQsIGRlZmVuc2l2ZSBhZGRpdGlvbi4gR29vZCwgZ29vZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhlIHRyaXN0YXRlIHN0YXR1cyBvZiB0aGVzZSBvcHRpb25zLiBgU1RNTUFDX0VUSGAgLSB5ZXMsIHRyaXN0YXRlLiBgU1RNTUFDX1BDSWAgLSB5ZXMsIGFsc28gdHJpc3RhdGUuIGBORVRfQ0xTX0ZMT1dFUmAgLSBZZXAsIHRyaXN0YXRlLiBBbmQgZmluYWxseSwgYE5FVF9TQ0hfSU5HUkVTU2A/IFBlcmZlY3QsIHRyaXN0YXRlIGFzIHdlbGwuIEV4Y2VsbGVudC5cblxuTm93LCBiYWNrIHRvIHRoZSBwYXRjaCBjb2RlIGl0c2VsZi4gSSBzZWUgYSBjbGVhciBidWcgZml4IGhlcmUgd2l0aCB0aGVzZSBiaXR3aXNlIG9wZXJhdGlvbnMsIGNsZWFuaW5nIHVwIHBvdGVudGlhbCBpc3N1ZXMuIFRoaXMgaXMgZ29vZC4gSSB1bmRlcnN0YW5kIHRoaXMgc2VjdGlvbjpcblxuYGBgY1xuIFx0aWYgKHNhKSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuK1x0XHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19MNFNQMDtcbitcdFx0dmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuIFx0fSBlbHNlIHtcbi1cdFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4tXG4tXHRcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUDA7XG4rXHRcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcbiBcdH1cbmBgYFxuXG5UaGUgYWRkZWQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBvZmZsb2FkZWQgaXMgdmVyeSBpbXBvcnRhbnQuIEkgYXBwcmVjaWF0ZSB0aGUgYWRkZWQgY2hlY2tzOlxuXG5gYGBjXG4rXHQvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovXG4rXHRpZiAoIW1hdGNoLm1hc2sgfHwgIShtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gfHwgbWF0Y2gubWFzay1cdTAwM2VpcF9wcm90bykpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJmaWx0ZXIgbXVzdCBzcGVjaWZ5IG5ldHdvcmsgb3IgdHJhbnNwb3J0IHByb3RvY29sXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG5gYGBcblxuVGhpcyB3aG9sZSBwYXRjaCBpcyBmdW5jdGlvbmFsOyBpdCBsb29rcyBnb29kLiBJdCdzIGNsZWFuLCB3ZWxsLXJlYXNvbmVkLCBhbmQgYWRkcyBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBUaW1lIHRvIHJ1biBpdCB0aHJvdWdoIGZ1enppbmcuXG5cbkknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODM4LCJPdXRwdXRUb2tlbnMiOjIyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowOTo0OC44NTA0NDU1OTNaIiwiU2VxIjo4MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTYxNzYwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9TQ0hfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjX2FkZF9iYXNpY19mbG93XCIsXG4gICAgXCJ0Y19hZGRfZmxvd1wiLFxuICAgIFwidGNfZGVsX2Zsb3dcIixcbiAgICBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlcidzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9TQ0hfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjX2FkZF9iYXNpY19mbG93XCIsXG4gICAgXCJ0Y19hZGRfZmxvd1wiLFxuICAgIFwidGNfZGVsX2Zsb3dcIixcbiAgICBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlcidzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 06:42:30 +0000 UTC FinishedAt: 2026-07-14 07:09:51 +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": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "NET_CLS_FLOWER", "NET_SCH_INGRESS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "NET_CLS_FLOWER", "NET_SCH_INGRESS" ], "series_id": "8bc6b057-2df7-4bd1-b896-16abc0252af4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tc_add_basic_flow", "tc_add_flow", "tc_del_flow", "dwxgmac2_config_l4_filter" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NTRhMmE3Y2Y2M2JlZmI5Mjk1ZDRhZjlhNzE0NjRlNTFmZjdiOTczXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDc6MDM6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXG5pbmRleCBmMDJiNDM0YmJkNTA1Yi4uNTIwNTRmMzEzNzZkNTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuY1xuQEAgLTEzNzAsMzYgJiM0MzsxMzcwLDQwIEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbiBcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xuIFx0fVxuIFxuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xuIFx0aWYgKHNhKSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0U1BNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19MNFNQSU0wO1xuIFx0fSBlbHNlIHtcbiBcdFx0dmFsdWUgfD0gWEdNQUNfTDREUE0wO1xuIFx0XHRpZiAoaW52KVxuIFx0XHRcdHZhbHVlIHw9IFhHTUFDX0w0RFBJTTA7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHZhbHVlIFx1MDAyNj0gflhHTUFDX0w0RFBJTTA7XG4gXHR9XG4gXG4gXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCB2YWx1ZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0aWYgKHNhKSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuJiM0MztcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl9yZWFkKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIFx1MDAyNnZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbi1cdFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmIChzYSkge1xuJiM0MztcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUDA7XG4mIzQzO1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcbi1cbi1cdFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUDA7XG4mIzQzO1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAoIWVuKVxuIFx0XHRyZXR1cm4gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0wzTDRfQ1RSTCwgMCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuaW5kZXggZDc4NjUyNzE4NTk5OWQuLjE0Y2FiZTc2ZTUzZWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5AQCAtNDQ2LDYgJiM0Mzs0NDYsNyBAQCBzdGF0aWMgaW50IHRjX3BhcnNlX2Zsb3dfYWN0aW9ucyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gfVxuIFxuICNkZWZpbmUgRVRIRVJfVFlQRV9GVUxMX01BU0tcdGNwdV90b19iZTE2KH4wKVxuJiM0MzsjZGVmaW5lIElQX1BST1RPX0ZVTExfTUFTS1x0MHhGRlxuIFxuIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcbkBAIC00NjEsNiAmIzQzOzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBcdGZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCBcdTAwMjZtYXRjaCk7XG4gXG4mIzQzO1x0LyogQm90aCBuZXR3b3JrIHByb3RvIGFuZCB0cmFuc3BvcnQgcHJvdG8gbm90IHByZXNlbnQgaW4gdGhlIGtleSAqL1xuJiM0MztcdGlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byB8fCBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvKSkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2xcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IGZ1bGwgbWFzayAqL1xuJiM0MztcdGlmICgobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XG4mIzQzO1x0ICAgIChtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvICE9IElQX1BST1RPX0ZVTExfTUFTSykpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChjbHMtXHUwMDNlY29tbW9uLmV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICBcJiMzNDtvbmx5IGZ1bGwgcHJvdG9jb2wgbWFzayBpcyBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXG4mIzQzO1x0aWYgKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byBcdTAwMjZcdTAwMjYgbWF0Y2gua2V5LVx1MDAzZW5fcHJvdG8gIT0gY3B1X3RvX2JlMTYoRVRIX1BfSVApKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7b25seSBJUHY0IG5ldHdvcmsgcHJvdG9jb2wgaXMgc3VwcG9ydGVkXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXG4mIzQzO1x0aWYgKG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG1hdGNoLmtleS1cdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvICE9IElQUFJPVE9fVURQKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7b25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRlbnRyeS1cdTAwM2VpcF9wcm90byA9IG1hdGNoLmtleS1cdTAwM2VpcF9wcm90bztcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01OTgsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRyZXQgPSB0Y19mbG93X3BhcnNlcnNbaV0uZm4ocHJpdiwgY2xzLCBlbnRyeSk7XG4gXHRcdGlmICghcmV0KVxuIFx0XHRcdGVudHJ5LVx1MDAzZWluX3VzZSA9IHRydWU7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRpZiAoIWVudHJ5LVx1MDAzZWluX3VzZSlcbkBAIC02MjcsNiAmIzQzOzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0ZW50cnktXHUwMDNlaW5fdXNlID0gZmFsc2U7XG4gXHRlbnRyeS1cdTAwM2Vjb29raWUgPSAwO1xuIFx0ZW50cnktXHUwMDNlaXNfbDQgPSBmYWxzZTtcbiYjNDM7XHRlbnRyeS1cdTAwM2VhY3Rpb24gPSAwO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX2FkZF9iYXNpY19mbG93JiMzNDssCiAgICAmIzM0O3RjX2FkZF9mbG93JiMzNDssCiAgICAmIzM0O3RjX2RlbF9mbG93JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXImIzM5O3MgdHJhZmZpYyBjb250cm9sIChUQykgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMuIEl0IGFkZHMgdmFsaWRhdGlvbiBmb3IgbmV0d29yayBhbmQgdHJhbnNwb3J0IHByb3RvY29scyBpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGFuZCBmaXhlcyBiaXR3aXNlIG9wZXJhdGlvbnMgaW4gYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBuZXRsaW5rIFRDIGludGVyZmFjZSB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMgb24gYW4gaW50ZXJmYWNlIGJhY2tlZCBieSB0aGUgc3RtbWFjIGRyaXZlci4gVGhlIHN0bW1hYyBkcml2ZXIgaGFzIFBDSSBzdXBwb3J0IChgU1RNTUFDX1BDSWApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzU0YTJhN2NmNjNiZWZiOTI5NWQ0YWY5YTcxNDY0ZTUxZmY3Yjk3MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA3OjAzOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jCmluZGV4IGYwMmI0MzRiYmQ1MDViLi41MjA1NGYzMTM3NmQ1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYwpAQCAtMTM3MCwzNiAmIzQzOzEzNzAsNDAgQEAgc3RhdGljIGludCBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLAogCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0UEVOMDsKIAl9CiAKLQl2YWx1ZSAmYW1wOz0gfihYR01BQ19MNFNQTTAgfCBYR01BQ19MNFNQSU0wKTsKLQl2YWx1ZSAmYW1wOz0gfihYR01BQ19MNERQTTAgfCBYR01BQ19MNERQSU0wKTsKIAlpZiAoc2EpIHsKIAkJdmFsdWUgfD0gWEdNQUNfTDRTUE0wOwogCQlpZiAoaW52KQogCQkJdmFsdWUgfD0gWEdNQUNfTDRTUElNMDsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0U1BJTTA7CiAJfSBlbHNlIHsKIAkJdmFsdWUgfD0gWEdNQUNfTDREUE0wOwogCQlpZiAoaW52KQogCQkJdmFsdWUgfD0gWEdNQUNfTDREUElNMDsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0RFBJTTA7CiAJfQogCiAJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0wzTDRfQ1RSTCwgdmFsdWUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoc2EpIHsKLQkJdmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7CiYjNDM7CXJldCA9IGR3eGdtYWMyX2ZpbHRlcl9yZWFkKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsICZhbXA7dmFsdWUpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKIAotCQlyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKJiM0MzsJaWYgKHNhKSB7CiYjNDM7CQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0U1AwOwomIzQzOwkJdmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpOwogCX0gZWxzZSB7Ci0JCXZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpOwotCi0JCXJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJdmFsdWUgJmFtcDs9IH5YR01BQ19MNERQMDsKJiM0MzsJCXZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTsKIAl9CiAKJiM0MzsJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiAJaWYgKCFlbikKIAkJcmV0dXJuIGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIDApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jCmluZGV4IGQ3ODY1MjcxODU5OTlkLi4xNGNhYmU3NmU1M2VjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMKQEAgLTQ0Niw2ICYjNDM7NDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogfQogCiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLCWNwdV90b19iZTE2KH4wKQomIzQzOyNkZWZpbmUgSVBfUFJPVE9fRlVMTF9NQVNLCTB4RkYKIAogc3RhdGljIGludCB0Y19hZGRfYmFzaWNfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkgICAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMsCkBAIC00NjEsNiAmIzQzOzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogCWZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCAmYW1wO21hdGNoKTsKIAomIzQzOwkvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovCiYjNDM7CWlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gfHwgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoY2xzLSZndDtjb21tb24uZXh0YWNrLAomIzQzOwkJCQkgICAmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2wmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogSWYgdGhlIHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IGZ1bGwgbWFzayAqLwomIzQzOwlpZiAoKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gJmFtcDsmYW1wOyBtYXRjaC5tYXNrLSZndDtuX3Byb3RvICE9IEVUSEVSX1RZUEVfRlVMTF9NQVNLKSB8fAomIzQzOwkgICAgKG1hdGNoLm1hc2stJmd0O2lwX3Byb3RvICZhbXA7JmFtcDsgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IGZ1bGwgcHJvdG9jb2wgbWFzayBpcyBzdXBwb3J0ZWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovCiYjNDM7CWlmIChtYXRjaC5tYXNrLSZndDtuX3Byb3RvICZhbXA7JmFtcDsgbWF0Y2gua2V5LSZndDtuX3Byb3RvICE9IGNwdV90b19iZTE2KEVUSF9QX0lQKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IElQdjQgbmV0d29yayBwcm90b2NvbCBpcyBzdXBwb3J0ZWQmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogVHJhbnNwb3J0IHByb3RvIGlzIHByZXNlbnQgaW4gdGhlIGtleSBhbmQgaXMgbm90IFRDUCBvciBVRFAgKi8KJiM0MzsJaWYgKG1hdGNoLm1hc2stJmd0O2lwX3Byb3RvICZhbXA7JmFtcDsKJiM0MzsJICAgIG1hdGNoLmtleS0mZ3Q7aXBfcHJvdG8gIT0gSVBQUk9UT19UQ1AgJmFtcDsmYW1wOwomIzQzOwkgICAgbWF0Y2gua2V5LSZndDtpcF9wcm90byAhPSBJUFBST1RPX1VEUCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGNscy0mZ3Q7Y29tbW9uLmV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDtvbmx5IFRDUCBhbmQgVURQIHRyYW5zcG9ydCBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwogCWVudHJ5LSZndDtpcF9wcm90byA9IG1hdGNoLmtleS0mZ3Q7aXBfcHJvdG87CiAJcmV0dXJuIDA7CiB9CkBAIC01OTgsNiAmIzQzOzYzMCw4IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlyZXQgPSB0Y19mbG93X3BhcnNlcnNbaV0uZm4ocHJpdiwgY2xzLCBlbnRyeSk7CiAJCWlmICghcmV0KQogCQkJZW50cnktJmd0O2luX3VzZSA9IHRydWU7CiYjNDM7CQllbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApCiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlpZiAoIWVudHJ5LSZndDtpbl91c2UpCkBAIC02MjcsNiAmIzQzOzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCWVudHJ5LSZndDtpbl91c2UgPSBmYWxzZTsKIAllbnRyeS0mZ3Q7Y29va2llID0gMDsKIAllbnRyeS0mZ3Q7aXNfbDQgPSBmYWxzZTsKJiM0MzsJZW50cnktJmd0O2FjdGlvbiA9IDA7CiAJcmV0dXJuIHJldDsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIGFmZmVjdGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIDEwLzEwMC8xMDAwL0VRT1MgdmFyaWFudHMuIEkgY2FuIHNlZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZHd4Z21hYzJfY29yZS5jYCBhbmQgYHN0bW1hY190Yy5jYCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBhbmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHJlbGF0ZWQgZnVuY3Rpb25zOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBhbmQgYHRjX2RlbF9mbG93YC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHdvcmtpbmcgb24gaGFyZHdhcmUgb2ZmbG9hZCBmb3IgVEMgZmlsdGVycywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpUaGUgbWFpbiB0YWtlYXdheSBzZWVtcyB0byBiZSBhIGNvdXBsZSBvZiBrZXkgbW9kaWZpY2F0aW9ucy4gVGhleSYjMzk7cmUgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIHdpdGhpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF0JiMzOTtzIGdvb2QsIGFsd2F5cyBhIHBsdXMgdG8gaGF2ZSBtb3JlIHJvYnVzdCBlcnJvciBjaGVja2luZywgYW5kIG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O3JlIGxpa2VseSB0cnlpbmcgdG8gcHJldmVudCBzb21lIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBpc3N1ZXMsIG9yIHBlcmhhcHMgYWRkaW5nIHN1cHBvcnQgZm9yIG5ldyBwcm90b2NvbCBtYXRjaGluZy4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCwgd2hpY2ggc3VnZ2VzdHMgdGhleSYjMzk7dmUgZm91bmQgYW5kIGZpeGVkIHNvbWUgcG90ZW50aWFsIGxvZ2ljYWwgZXJyb3JzLgoKQmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBzdG1tYWNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgbGluZSB0byBwcm9wZXJseSBhc3NlcyB0aGUgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjk9Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0Olx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUtXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29Dczpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTYwPWNvbmZpZyBEV01BQ19BTkFSSU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Njc6XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz03OD1jb25maWcgRFdNQUNfSU5HRU5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjg2Olx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04Ny1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIEluZ2VuaWMgU29Dc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9OTA9Y29uZmlnIERXTUFDX0lQUTgwNlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5ODpcdCAgVGhpcyBzZWxlY3RzIHRoZSBJUFE4MDZ4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcdCAgVGhpcyBzZWxlY3RzIHRoZSBNVDI3MTIgU29DIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyOS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzMDpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cdCAgTWVzb244LCBNZXNvbjhiIGFuZCBHWEJCIFNvQ3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0MS1cdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQyOlx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVx0ICB1c2VkIGZvciBNQTM1IHNlcmllcyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTUyLVx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTM6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE1NT1jb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjQ6XHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc2LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNzc6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNzk9Y29uZmlnIERXTUFDX1JaTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE4ODpcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xODktXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTk4Olx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0Fcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxNC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxNTpcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjUtXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI2Olx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjM3LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMzg6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQ5LVx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNTA6XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjY1PWNvbmZpZyBEV01BQ19TVE0zMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNzM6XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3NC1cdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODU6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ni1cdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjg4PWNvbmZpZyBEV01BQ19TVU44SVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTc6XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOTgtXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMwMD1jb25maWcgRFdNQUNfU1VONTVJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwOTpcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTAtXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMxMj1jb25maWcgRFdNQUNfVEhFQURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTk6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjAtXHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMjI9Y29uZmlnIERXTUFDX0lNWDhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzMwOlx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDAtXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDE6XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cdCAgU29DLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUyLVx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNTU9Y29uZmlnIERXTUFDX1RFR1JBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjAtXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Mi1cdCAgZGV2aWNlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3Mz1jb25maWcgU1RNTUFDX0xJQlBDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzg1LVx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg2Olx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM4OD1jb25maWcgRFdNQUNfTE9PTkdTT05cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk1Olx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ni1cdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00MDc9Y29uZmlnIFNUTU1BQ19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDEzOlx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE0LVx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDI0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaXRlbSBhcHBlYXJzIHRvIGJlIGBTVE1NQUNfRVRIYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGlzIGFjdHVhbGx5IGNvbnRyb2xsaW5nLiBUaGlzIG1lYW5zIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtsbCBkbyBpcyBpbW1lZGlhdGVseSBqdW1wIHRvIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGltcGxpY2F0aW9ucy4gS25vd2luZyB3aGF0IGl0IGdvdmVybnMgaXMgY3J1Y2lhbCB0byB0aGUgd2hvbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyODAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgYSBUcmFmZmljIENvbnRyb2wgUGF0Y2ggZm9yIHRoZSBTVE1NQUMgRHJpdmVyKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjX2FkZF9iYXNpY19mbG93YCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNfdGMuY2AgZmlsZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3RtbWFjX3RjLmNgIGZpbGUgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gdGhlIGBTVE1NQUNfRVRIYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgYXZhaWxhYmxlIGJlY2F1c2UgaWYgaXQgaXNuJiMzOTt0LCB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IGJlY29tZXMgYSBsb3QgbW9yZSBsaW1pdGVkLCBhbmQgbWlnaHQgaW5kaWNhdGUgc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHN5c3RlbSBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlnIG9wdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1x0XFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS03LVx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6ODpcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVx0ICAgICAgc3RtbWFjX3hkcC5vIHN0bW1hY19lc3QubyBzdG1tYWNfZnBlLm8gc3RtbWFjX3ZsYW4ubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NzAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNUTU1BQyBPZmZsb2FkIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGB0Y2AgYW5kIG5ldGxpbmsgdHJhZmZpYyBjb250cm9sLiBJIHNlZSB0aGF0IGBzdG1tYWNfdGMub2AgYW5kIGBkd3hnbWFjMl9jb3JlLm9gIGFyZSBpbmNsdWRlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpJJiMzOTttIG5vdyBkaWdnaW5nIGludG8gdGhlIGNoYW5nZXMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBsb2dpYyBmb3IgYWRkaW5nIHRoZXNlIGJhc2ljIGZpbHRlcnMgcmVzaWRlcy4gVGhlIGNvZGUgaXMgY2xlYXJseSBpbXBvc2luZyByZXN0cmljdGlvbnMgb24gdGhlIGtpbmRzIG9mIGZpbHRlcnMgaXQgc3VwcG9ydHMgZm9yIG9mZmxvYWQ6IGl0JiMzOTtzIGNoZWNraW5nIGZvciBjZXJ0YWluIHByb3RvY29sIG1hdGNoZXMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRvIGVuc3VyZSBlaXRoZXIgYSBuZXR3b3JrIG9yIHRyYW5zcG9ydCBwcm90b2NvbCBpcyBwcmVzZW50LCBhbmQgaXQgKnJlcXVpcmVzKiBhIGZ1bGwgbWFzayBpZiBhIHByb3RvY29sIGlzIGRlZmluZWQuIElmIGEgbmV0d29yayBwcm90b2NvbCBpcyBwcmVzZW50IGluIHRoZSBmaWx0ZXIsIGl0ICptdXN0KiBiZSBJUHY0LiBGdXJ0aGVybW9yZSwgaWYgYSB0cmFuc3BvcnQgcHJvdG9jb2wgaXMgcHJlc2VudCwgaXQgKm11c3QqIGJlIGVpdGhlciBUQ1Agb3IgVURQLgoKVGhpcyB3aG9sZSBhcmVhIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgYHRjYCBpbnRlcmZhY2UsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCB3YXkgdG8gY29uZmlndXJlIHRoZXNlIG9mZmxvYWQgZmlsdGVycy4gQnV0IG5vdyBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBhdmFpbGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IGl0ICphbHNvKiBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCkuIFRoYXQmIzM5O3MgcHJvbWlzaW5nLgoKTGV0IG1lIGNvbmZpcm0gaWYgYFNUTU1BQ19QQ0lgIGlzIGVuYWJsZWQsIG9yIGNvdWxkIGJlIGVuYWJsZWQuIEFscmlnaHQsIGl0ICppcyogYSBQQ0kgZHJpdmVyLCBzbyB0aGF0IGluY3JlYXNlcyB0aGUgY2hhbmNlcy4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYCB0byB1bmRlcnN0YW5kIHRoZSBQQ0kgc3BlY2lmaWMgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODYyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBzdG1tYWNfcGNpLmNgIENvZGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFNUTU1BQyBkcml2ZXImIzM5O3MgUENJIGltcGxlbWVudGF0aW9uLiBXaGF0IGFyZSB0aGUga2V5IGluaXRpYWxpemF0aW9uIHN0ZXBzPyBIb3cgZG9lcyBpdCBoYW5kbGUgUENJIGRldmljZSBwcm9iaW5nIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBcmUgdGhlcmUgYW55IG5vdGFibGUgZGlmZmVyZW5jZXMgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQQ0kgYnVzIGNvbXBhcmVkIHRvIHRoZSBnZW5lcmljIFNUTU1BQyBjb3JlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIHRoZSBQQ0kgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkZXZpY2UgSUQgdGFibGUsIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZSBpbnRlcnJ1cHRzIGFyZSBiZWluZyBoYW5kbGVkLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29kZSBiYXNlIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24gSSBuZWVkIHRvIGRvIGhlcmUsIG9yIGluIHRoaXMgc3BlY2lmaWMgYXJlYS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTIzMj1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzM6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTIzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzYzLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDc5PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDk4OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU3OD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcdTAwMjZsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5Olx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBUaGF0IGB0Y19hZGRfYmFzaWNfZmxvd2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIEkgc2VlIGl0IGhhcyBQQ0kgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdGluZyB0aGUgYGR3bWFjLWludGVsLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGFuZCBgc3RtbWFjX3BjaS5jYCBmaWxlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJlY2F1c2UgU3l6a2FsbGVyIGNhbiwgb2YgY291cnNlLCBmdXp6IFBDSSBkZXZpY2VzLCB1c2luZyB0aGF0IHZpcnR1YWwgUENJIGluamVjdGlvbiBjYXBhYmlsaXR5LiBJIGNhbiBzZWUgaXQgd29ya2luZywgZm9yIGV4YW1wbGUsIHRocm91Z2ggYHN5el9wY2lfZGV2aWNlX2FkZGAuIFNvLCB0aGUgY29kZSYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IC0gdGhhdOKAmXMga2V5LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF04oCZcyBjYWxsZWQgd2hlbiBhIFRDIGZsb3dlciBmaWx0ZXIgaXMgYWRkZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBjaGFpbiwgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBjYWxsZWQgYnkgYHRjX2FkZF9mbG93YC4gVGhlbiBgdGNfYWRkX2Zsb3dgIGlzIGNhbGxlZCBieSBgc3RtbWFjX3NldHVwX3RjX2Nsc19mbG93ZXJgLiBUaGF0LCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAsIHdoaWNoLCBmcm9tIHdoYXQgSSBjYW4gdGVsbCwgdHJpZ2dlcnMgd2hlbiBjb25maWd1cmluZyBhIFRDIGJsb2NrIG9uIHRoZSBpbnRlcmZhY2UuCgpSaWdodCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhhdCBjYWxsIGNoYWluIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIHN0ZXAsIGJ1dCB0aGF0IGxvb2tzIGxpa2UgYSB2YWxpZCBwYXRoIHRvIGludmVzdGlnYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTYwMj1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo2MTE6c3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXHRcdCAgICAgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NjgtXHRcdFx0ICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4NzI6XHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo5MTA6XHRcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVsdmluZyBpbnRvIFRyYWZmaWMgQ29udHJvbCBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgZm9yIHRoaXMgc3RtbWFjIGRyaXZlci4gTG9va3MgbGlrZSB0aGUgYHRjX3NldHVwX2Nsc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tLiBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiYCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBUaGF0IGZ1bmN0aW9uIG11c3QgYmUgdGhlIGNhbGxiYWNrIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgYmxvY2suIFRoaXMgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgaGlnaC1sZXZlbCB0cmFmZmljIGNvbnRyb2wgZnJhbWV3b3JrIGFuZCB0aGUgbG93LWxldmVsIHNwZWNpZmljcyBvZiB0aGUgc3RtbWFjIGhhcmR3YXJlLiBTbyBJIG5lZWQgdG8gZ28gZGVlcGVyIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgY2FsbCBzZXRzIHVwIHRoZSBzdG1tYWMgZHJpdmVyIGluIG9yZGVyIHRvIGNvbnRyb2wgZWdyZXNzIHRyYWZmaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX3NldHVwX2NscyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXHRcdFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXHRcdFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDctXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXHQuaW5pdCA9IHRjX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3Olx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMxOC1cdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5Olx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYyNgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvZGUgTW9kaWZpY2F0aW9ucyoqCgpSaWdodCwgc28gSSBzZWUgYHRjX3NldHVwX2Nsc2AgaXMgYmVpbmcgY2FsbGVkIGZyb20gd2l0aGluIGJvdGggYGR3bWFjNF90Y19vcHNgIGFuZCBgZHdtYWM1MTBfdGNfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdyBmdW5kYW1lbnRhbCB0byB0aGUgdHJhZmZpYyBjb250cm9sIHNldHVwIGZvciBib3RoIHRoZSBEV0MgTUFDIDQgYW5kIDUxMCBJUCBjb3Jlcy4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBUQyBtZWNoYW5pc20gaXMgYmVpbmcgdXBkYXRlZCwgb3IgcGVyaGFwcyBhIG5ldyBjYXBhYmlsaXR5IGlzIGJlaW5nIGludGVncmF0ZWQgYXQgdGhhdCBsZXZlbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdGNfc2V0dXBfY2xzYCBhY3R1YWxseSAqZG9lcyogd2l0aGluIHRob3NlIGNvbnRleHRzLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3RlcnMgb3IgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBpcy4KCkZ1cnRoZXJtb3JlLCBJJiMzOTttIG5vdGluZyB0aGUgbW9kaWZpY2F0aW9uIHRvIGBkd3hnbWFjMl9jb3JlLmNgLiBUaGlzIGZpbGUgY29udGFpbnMgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBOb3csIGEgTGV2ZWwgNCBmaWx0ZXIgY29uZmlndXJhdGlvbiBpcyBhIHByZXR0eSBzcGVjaWZpYyB0aGluZy4gVHlwaWNhbGx5LCB0aGlzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gVENQL1VEUCBwb3J0LWJhc2VkIGZpbHRlcmluZy4gVGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHRvdWNoZWQgKmFsb25nc2lkZSogdGhlIHRyYWZmaWMgY29udHJvbCBzZXR1cCBzdWdnZXN0cyB0aGVyZSBtaWdodCBiZSBhbiBpbnRlcnBsYXkgaGFwcGVuaW5nLiBNYXliZSB0aGUgTDQgZmlsdGVyIGlzIGJlaW5nIGFkanVzdGVkIGFzIHBhcnQgb2YgYSBtb3JlIGNvbXByZWhlbnNpdmUgVEMgY29uZmlndXJhdGlvbiwgb3IgcGVyaGFwcyB0aGUgTDQgZmlsdGVyaW5nIGlzIG5vdyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgYnJvYWRlciBUQyBmcmFtZXdvcmsuIEluIGFueSBjYXNlLCBJIG5lZWQgdG8gc2VlIGhvdyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgYmVpbmcgY2FsbGVkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGNhbGxzIHRvICBgdGNfc2V0dXBfY2xzYC4gSSB3YW50IHRvIHNlZSBpZiB0aGUgY2hhbmdlcyBhcmUgYWRkaW5nIG5ldyBUQyBjYXBhYmlsaXRpZXMsIG9yIGlmIHRoZXkgYXJlIGp1c3QgYWZmZWN0aW5nIGhvdyB0aGUgc3lzdGVtIGlzIG9yZ2FuaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM9MTI4OD1zdGF0aWMgaW50IGR3eGdtYWMyX2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTEzNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTM1MTpzdGF0aWMgaW50IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cdFx0XHRcdCAgICAgYm9vbCBlbiwgYm9vbCB1ZHAsIGJvb2wgc2EsIGJvb2wgaW52LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDY1LVx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjE0NjY6XHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cdC5zZXRfYXJwX29mZmxvYWQgPSBkd3hnbWFjMl9zZXRfYXJwX29mZmxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTUyMC1cdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNTIxOlx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY4MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWVzc2luZyB3aXRoIGNvcmUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYHN0bW1hY19vcHNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLiBUaGUga2V5IGNoYW5nZXMgYXJlIGluIGB0Y19hZGRfYmFzaWNfZmxvd2Agd2l0aCBhZGRlZCB2YWxpZGF0aW9uIGFuZCBiaXR3aXNlIG9wZXJhdGlvbiBmaXhlcyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlJiMzOTtyZSBsb29raW5nIGF0OiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBTaW5jZSBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIHN0YXRpYywgdGhhdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGxpc3QsIHRoYW5rZnVsbHkuIFdlJiMzOTtsbCBiZSBmb2N1c2luZyBvbiBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuCgpOb3csIGZvciBjb25maWcgZGVwZW5kZW5jaWVzLi4uIGBTVE1NQUNfRVRIYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBUbyBtYWtlIGZ1enppbmcgZWFzaWVyLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGBTVE1NQUNfUENJYCBsb29rcyBsaWtlIHRoZSB3YXkgdG8gZ28gZm9yIFBDSSBzdXBwb3J0LiBIYW5nIG9uLi4uIGFyZSB0aGVyZSBhbnkgc3ViLWRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGNoZWNrIGlmIGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIG9yIGBEV01BQ19NT1RPUkNPTU1gIGFyZSB0aWVkIHRvIHNwZWNpZmljIFBDSSBJRHMuIEdvdHRhIGRvdWJsZS1jaGVjayBgU1RNTUFDX1BDSWAgYWdhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDQyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIFBDSSBEcml2ZXImIzM5O3MgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBqdXN0IHRoZSBgU1RNTUFDX1BDSWAgaWRlbnRpZmllciBpcyBzdWZmaWNpZW50IGZvciB3aGF0IEkmIzM5O20gd29ya2luZyBvbi4gTGV0IG1lIGxvb2sgaW50byB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZTsgaXQgc2VlbXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgUENJIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVucy4gQWgsIHRoZXJlIGl0IGlzIOKAkyBgc3RtbWFjX2lkX3RhYmxlYC4gUmlnaHQsIHRoaXMgdXNlcyBgUENJX0RFVklDRV9EQVRBYCB3aXRoIGBTVE1NQUNgLCBhbmQgYSBzcGVjaWZpYyBkYXRhIHBvaW50ZXIgdG8gYCZhbXA7c3RtbWFjX3BjaV9pbmZvYC4gSW50ZXJlc3RpbmcuIE5vdywgdGhhdCBgU1RNTUFDYCB2ZW5kb3IgSUTigKYgaXQmIzM5O3MgYDB4MTE2NmAuIFRoYXQmIzM5O3Mgbm90IGEgQnJvYWRjb20gSUQsIHdoaWNoIGlzIHdoYXQgSSBpbml0aWFsbHkgdGhvdWdodC4gSXQgbWlnaHQgYmUgU3lub3BzeXMsIG9yIG9uZSBvZiB0aGUgb3RoZXIgdmVuZG9ycyB1c2luZyB0aGF0IGNvcmUuIFRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYFBDSV9WRU5ET1JfSURfU1RNTUFDYCB0byBjb25maXJtIG15IHN1c3BpY2lvbiBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHZlbmRvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfVkVORE9SX0lEX1NUTU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpX2lkcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MTYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgUENJIExhbmRzY2FwZSBpbiBgc3RtbWFjX3BjaS5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBDSSBkZXZpY2UgZGF0YSBpcyBoYW5kbGVkIGluIHRoZSBgc3RtbWFjX3BjaS5jYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbiBhbmQgY2hlY2sgZm9yIGBQQ0lfREVWSUNFX0RBVEFgLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGNvbmZpZ3VyZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBTVE1NQUMgRXRoZXJuZXQgY29udHJvbGxlciB3aGVuIGl0JiMzOTtzIGNvbm5lY3RlZCB0aHJvdWdoIGEgUENJIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGRyaXZlciBkZXRlY3RzIHRoZSBkZXZpY2UsIGhvdyBpdCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIHF1aXJrcywgaWYgYW55LiBJIGFudGljaXBhdGUgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhlIGBQQ0lfREVWSUNFX0RBVEFgIHVzYWdlLCBsaWtlbHkgdGllZCB0byBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBwb3RlbnRpYWxseSBsZWdhY3kgUENJIGNvbXBhdGliaWxpdHkuIFRoZXJlZm9yZSwgdGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9EQVRBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA2Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNy1cdHt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzI2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRlY2lwaGVyaW5nIHRoZSBOZWNlc3NhcnkgS2VybmVsIENvbmZpZ3VyYXRpb25zIGZvciBOZXR3b3JrIE9mZmxvYWRpbmcqKgoKUmlnaHQsIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgYFNUTU1BQ19QQ0lgIGlzIHRoZSBrZXkgdG8gZ2V0dGluZyBhIFBDSSBkZXZpY2UgdGhhdCBsZXZlcmFnZXMgdGhlIGBzdG1tYWNgIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCB3aGF0IGFib3V0IHN1cHBvcnQgZm9yIFRyYWZmaWMgQ29udHJvbCAoVEMpIGZsb3dlciBvZmZsb2FkPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGF0IGNvdmVyZWQuIEkgdGhpbmsgYE5FVF9TQ0hfRkxPV0VSYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoYXQsIHllYWg/IE9rYXksIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSwgYmVjYXVzZSBpZiBJIG5lZWQgaXQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGl0LiBXYWl0IGEgbWludXRlLi4uIEkgc2VlbSB0byByZWNhbGwgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBhY3R1YWxseSBjYWxsZWQgd2hlbiBkZWFsaW5nIHdpdGggYEZMT1dfQ0xTX0ZMT1dFUmAuIEFoLCB5ZXMhIExldCYjMzk7cyBjaGVjayBgdGNfYWRkX2Zsb3dgIGZvciBnb29kIG1lYXN1cmUuIFRoYXQgc2hvdWxkIGNsYXJpZnkgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlybSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGZvciB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSBJJiMzOTttIGFmdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTYwMj1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo2MTE6c3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXHRcdCAgICAgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NjgtXHRcdFx0ICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4NzI6XHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo5MTA6XHRcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNDAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGB0Y19zZXR1cF9jbHNgIENhbGxlcnMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB3aGVyZSBgdGNfc2V0dXBfY2xzYCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBzdGFjay4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20sIGFuZCB3aGF0JiMzOTtzIHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIGVhY2ggY2FsbD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBJIG1pZ2h0IG1ha2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgYWJvdXQgdHJhY2luZyB0aGUgY29udHJvbCBmbG93IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19zZXR1cF9jbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0yMDk9c3RhdGljIGludCB0Y19kZWxldGVfa25vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjIxOTpzdGF0aWMgaW50IHRjX3NldHVwX2Nsc191MzIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjIwLVx0XHRcdCAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODgzPXN0YXRpYyBpbnQgdGNfZGVsX2Zsb3dfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4OTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTAwLVx0XHRcdHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTMwND1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzRfdGNfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNS1cdC5pbml0ID0gdGNfaW5pdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDY6XHQuc2V0dXBfY2xzX3UzMiA9IHRjX3NldHVwX2Nsc191MzIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDg6XHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwOS1cdC5zZXR1cF90YXByaW8gPSB0Y19zZXR1cF90YXByaW9fd2l0aG91dF9mcGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MTMxNT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX3RjX29wcyBkd21hYzUxMF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE2LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxNzpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxOTpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzIwLVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgc3RtbWFjX3RjX29wc2AgU3RydWN0dXJlKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHN0bW1hY190Y19vcHNgIHN0cnVjdHVyZSBhZ2Fpbi4gSSBzZWUgYHRjX3NldHVwX2Nsc2AgaXMgYmVpbmcgdXNlZCB3aXRoaW4gaXQuIE5vdywgdGhlIG5hbWUgJiMzNDt0Y1xfc2V0dXBcX2NscyYjMzQ7IGlzIHRocm93aW5nIG1lLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1lYW50IHRvIHJlbGF0ZSB0byBgc2V0dXBfY2xzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIHJlbGF0ZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzZXR1cF9jbHNgIGl0c2VsZiBnZXQgaW52b2tlZD8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNldHVwIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbi4gS25vd2luZyB0aGlzIGludm9jYXRpb24gcG9pbnQgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHdob2xlIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldHVwX2NscyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9NTY3PXN0cnVjdCBzdG1tYWNfdGNfb3BzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NjgtXHRpbnQgKCppbml0KShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU2OTpcdGludCAoKnNldHVwX2Nsc191MzIpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzAtXHRcdFx0ICAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzItXHRcdFx0IHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpxb3B0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1NzM6XHRpbnQgKCpzZXR1cF9jbHMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01NzQtXHRcdFx0IHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01ODYtXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0YywgaW5pdCwgX19hcmdzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU4NzojZGVmaW5lIHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU4ODpcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jbHNfdTMyLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTg5LSNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NicyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01OTAtXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0Yywgc2V0dXBfY2JzLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTkxOiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NscyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1OTI6XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCB0Yywgc2V0dXBfY2xzLCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTkzLSNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX3RhcHJpbyhfX3ByaXYsIF9fYXJncy4uLikgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzOTg9c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTAtXHRjYXNlIFRDX1NFVFVQX0NMU1UzMjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxMTpcdFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTMtXHRjYXNlIFRDX1NFVFVQX0NMU0ZMT1dFUjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxNDpcdFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTA4Mj1zdGF0aWMgaW50IHN0bW1hY190ZXN0X3J4cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTE0MDpcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKHByaXYsIHByaXYsIFx1MDAyNmNsc191MzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExNDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xMTUwLVx0Y2xzX3UzMi5jb21tYW5kID0gVENfQ0xTVTMyX0RFTEVURV9LTk9ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxMTUxOlx0c3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgXHUwMDI2Y2xzX3UzMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTMzMD1zdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbDNmaWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGRzdCwgdTMyIHNyYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNDAxOlx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE0MDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNDA5LVx0Y2xzLVx1MDAzZWNvbW1hbmQgPSBGTE9XX0NMU19ERVNUUk9ZO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjE0MTA6XHRzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIGNscyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQxMS1jbGVhbnVwX3J1bGU6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTE0NDk9c3RhdGljIGludCBfX3N0bW1hY190ZXN0X2w0ZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBkc3QsIHUzMiBzcmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTUzMjpcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNTMzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTU0MC1cdGNscy1cdTAwM2Vjb21tYW5kID0gRkxPV19DTFNfREVTVFJPWTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNTQxOlx0c3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDItY2xlYW51cF9ydWxlOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXHRcdFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXHRcdFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVx0LmluaXQgPSB0Y19pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDctXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXHQuaW5pdCA9IHRjX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3Olx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMxOC1cdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5Olx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI0NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX1NDSF9GTE9XRVJgIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgZmVhdHVyZSBpc24mIzM5O3Qgd29ya2luZyBhcyBleHBlY3RlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBzZWVtcyB0byBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbmFsaXR5IGZyb20gdXNlcnNwYWNlLiBCdXQsIGhhbmcgb24uLi4gSSByZW1lbWJlciBzZWVpbmcgYHN0bW1hY19zZWxmdGVzdHMuY2Agd2hpY2ggY2FsbHMgYHN0bW1hY190Y19zZXR1cF9jbHNgIGRpcmVjdGx5LCB3aGljaCBtYWtlcyBtZSB0aGluayBgTkVUX1NDSF9GTE9XRVJgIG1pZ2h0IG5vdCBiZSB0aGUgKm9ubHkqIHRyaWdnZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCB0byB2ZXJpZnkuCgpBaGEhIE5vdyBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBpcyBleHBsaWNpdGx5IG5lZWRlZCBmb3IgdXNpbmcgdGhlIGB0YyBmaWx0ZXIgYWRkYCBjb21tYW5kIHdpdGggdGhlIGBmbG93ZXJgIGNsYXNzaWZpZXIsIHNwZWNpZmljYWxseSB3aGVuIGNhbGxpbmcgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAuIE9rLCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5FVF9TQ0hfRkxPV0VSYCBpcywgaW4gZmFjdCwgYSBjb25maWd1cmFibGUgb3B0aW9uLiBZZXMsIGNvbmZpcm1lZCwgYENPTkZJR19ORVRfU0NIX0ZMT1dFUmAgZXhpc3RzLiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgZGVwZW5kZWQgb24gYENPTkZJR19ORVRfSFdfRVhBQ1RfTUFUQ0hgIG9yIHNvbWV0aGluZyByZWxhdGVkLiBOb3BlLCBpdCBsb29rcyBsaWtlIGBORVRfU0NIX0ZMT1dFUmAgaXMgdGhlIG1haW4gZW5hYmxlci4gSSBzaG91bGQgY29uZmlybSB0aGlzIGluIHRoZSBLY29uZmlnIGZpbGUgdGhvdWdoLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gTGV0IG1lIGxvb2sgYXQgYG5ldC9zY2hlZC9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9GTE9XRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzU4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlY29kaW5nIHRoZSBDbHVlOiBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIGEgYml0IG9mIGEgbWVudGFsIHNocnVnLiBBbm90aGVyIG9uZSBvZiB0aGVzZSBjb25maWd1cmF0aW9uIHN5bWJvbHMuIFdhaXQgYSBzZWNvbmQuLi4gaXQmIzM5O3MgYENPTkZJR19ORVRfQ0xTX0ZMT1dFUmAuIEFoLCAqbm93KiBJIHNlZS4gVGhpcyBpc24mIzM5O3QganVzdCBhbnkgY29uZmlndXJhdGlvbiBvcHRpb247IGl0JiMzOTtzIHRoZSBrZXJuZWwmIzM5O3MgZmxhZyBmb3IgRmxvd2VyIGNsYXNzaWZpZXIgc3VwcG9ydCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBmbGV4aWJsZSBmbG93IGNsYXNzaWZpY2F0aW9uLCBpc24mIzM5O3QgaXQ/IEZpbmUtZ3JhaW5lZCB0cmFmZmljIHN0ZWVyaW5nIGJhc2VkIG9uIGEgcmljaCBzZXQgb2YgbWF0Y2ggY3JpdGVyaWEuIFRoaXMgaXMgZ29vZCwgdGhpcyBpcyBnb29kLiBUaGUgcG9zc2liaWxpdGllcyBhcmUgc3VkZGVubHkgcG9wcGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9DTFNfRkxPV0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcbm5ldC9zY2hlZC9LY29uZmlnLTU3My1cdHRyaXN0YXRlIFwmIzM0O0Zsb3dlciBjbGFzc2lmaWVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDU2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRlcGVuZGVuY2llcyBhbmQgTmV0d29yayBEZXZpY2UgRHJpdmVycyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yay1yZWxhdGVkIGRldmljZSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYE5FVF9DTFNfRkxPV0VSYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgbmV0d29yayBjbGFzc2lmaWVyLiBCdXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBkcml2ZXJzLiBUaGV5IGFyZSBpbXBvcnRhbnQgYW5kIEkgd2FudCB0byBjb3ZlciBhbGwgYmFzZXMuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTVE1NQUNfRVRIYC4gSSYjMzk7bSBjdXJpb3VzIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGluIHBsYWNlIGFuZCB1bmRlcnN0YW5kIGFsbCB0aGUgaW50ZXJhY3Rpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgZGVwZW5kZW5jaWVzIGlzIGFsd2F5cyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzI1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFNUTU1BQ19QQ0kgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX1BDSWAuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB3aGF0IG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIHRoaXMgbGlrZWx5IGRlcGVuZHMgb24uIEkmIzM5O20gdGhpbmtpbmcgYmV5b25kIHRoZSBvYnZpb3VzOyBpdCYjMzk7cyBjcnVjaWFsIHRvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGVjb3N5c3RlbS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgUENJZS10by1FdGhlcm5ldCBicmlkZ2UsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBETUEgZW5naW5lcywgZGVzY3JpcHRvciByaW5ncywgYW5kIGludGVycnVwdCBoYW5kbGluZyBhbGwgdGlnaHRseSBpbnRlZ3JhdGVkPwoKSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBtb2R1bGUuIElzIGl0IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjaywgb3IgYSBtb3JlIGlzb2xhdGVkIGRyaXZlcj8gS25vd2luZyB0aGlzIHdpbGwgaW5mbHVlbmNlIHRoZSBhcHByb2FjaCBJIHRha2UgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGhlYWRlcnMsIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGBLY29uZmlnYCwgYE1ha2VmaWxlYCksIGFuZCBrZXJuZWwgbW9kdWxlcyBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIGxpa2VseSBzdGFydCB3aXRoIGEgYGdyZXBgIG9yIGBmaW5kYCB0byBnZXQgYSBwcmVsaW1pbmFyeSBsaXN0LiBUaGUgZ29hbCBpcyB0byByYXBpZGx5IGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGF0IGBTVE1NQUNfUENJYCB0b3VjaGVzIGFuZCwgaW4gdHVybiwgd2hhdCB0b3VjaGVzIGl0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHdoYXQmIzM5O3MgKnJlcXVpcmVkKiwgYnV0IGFsc28gd2hhdCYjMzk7cyAqYWZmZWN0ZWQqIGJ5IGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUuIFBlcmZvcm1hbmNlIGltcGFjdHM/IFBvdGVudGlhbCBjb25mbGljdHM/IE1lbW9yeSBtYXBwaW5nIGNvbnNpZGVyYXRpb25zPyBJdCYjMzk7cyBhbGwgaW50ZXJjb25uZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzg4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gZW1iZWRkZWQgbmV0d29ya2luZyBhbmQgTGludXggZGV2aWNlIGRyaXZlcnM6CgoqKkFuYWx5emluZyB0aGUgU1RNTUFDIFBDSSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYXNwZWN0cy4gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRoZSBmb2N1cywgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyBhcm91bmQgdGhlIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCB3aGVuIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIFBDSSBpbnRlcmZhY2UuCgpJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yOgoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYFNUTU1BQ19QQ0lgIHRvIGJlIGF2YWlsYWJsZT8KKiAgICoqRGVwZW5kZW5jaWVzIG9mIHRoZSBEZXZpY2U6KiogSG93IGlzIHRoZSBjb25maWd1cmF0aW9uIG9mIGBTVE1NQUNfUENJYCBkZXBlbmRhbnQgb24gb3RoZXIgZmVhdHVyZXMgb2YgdGhlIGRldmljZT8KKiAgICoqRGVmYXVsdCBTZXR0aW5nczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgYW5kIHNldHRpbmdzIHdoZW4gYSBTVE1NQUMgaXMgY29uZmlndXJlZCBvbiBhIFBDSSBkZXZpY2U/CiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb3IgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgb3B0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBQQ0kgc3VwcG9ydCBmb3IgdGhlIFNUTU1BQy4KClRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGJ1cy4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgZGlmZmVyZW50IGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGRlcGVuZGluZyBvbiB3aGV0aGVyIGBTVE1NQUNfUENJYCBpcyBzZXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nIFBDSS1yZWxhdGVkIGlzc3VlcyBhbmQgdGFpbG9yaW5nIHRoZSBkcml2ZXIgdG8gc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUzNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIGJ1YmJsaW5nIHVwIGluIG15IG1pbmQuIGBTVE1NQUNfUENJYCDigJMgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZS4gVGhlbiB0aGVyZSYjMzk7cyBgU1RNTUFDX0VUSGAsIHdoaWNoIGlzIHRoZSBjb3JlIGRyaXZlciwgcmlnaHQ/IEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0JiMzOTtzIGFjdHVhbGx5IGVuYWJsZWQgaGVyZS4gSSYjMzk7dmUgZ290IHRvIHN1bW1hcml6ZSB0aGUga2V5IGNvbmZpZ3M6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gQnV0LCBoYW5nIG9uLi4uIGRpZG4mIzM5O3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IGhhcmR3YXJlIG9mZmxvYWQ/CgpSaWdodCwgdGhlIGhhcmR3YXJlIG9mZmxvYWQsIHRoYXQmIzM5O3MgZG9uZSB3aXRoIGBldGh0b29sIC1LIGV0aDAgaHctdGMtb2ZmbG9hZCBvbmAuIElzIHRoZXJlIGFjdHVhbGx5IGEgY29uZmlnIG9wdGlvbiAqZXhwbGljaXRseSogZm9yIFRDIGhhcmR3YXJlIG9mZmxvYWQ/IEkgbmVlZCB0byB0cmFjayB0aGF0IGRvd24uIE15IG5leHQgbW92ZSBpcyB0byBnbyBkaWdnaW5nIHRocm91Z2ggYG5ldC9zY2hlZC9LY29uZmlnYCBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYSBgSFdfVENfT0ZGTE9BRGAgb3B0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzIGFjdHVhbGx5IGVuYWJsZWQgdGhyb3VnaCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBpZiB0aGlzIGlzIGFsbCBpbXBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hXX1RDX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5ODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDIEhhcmR3YXJlIE9mZmxvYWQgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gaGFyZHdhcmUgb2ZmbG9hZCBmb3IgVHJhZmZpYyBDb250cm9sLCBvciBUQywgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIHRoZSBrZXJuZWwsIHByb3ZpZGVkIHRoZSBkcml2ZXIgaGFzIHRoZSBgTkVUSUZfRl9IV19UQ2AgZmxhZyBzZXQuIFRoYXQmIzM5O3MgZ29vZCwgaXQgbWVhbnMgdGhhdCBieSBlbmFibGluZyBgTkVUX0NMU19GTE9XRVJgIEkgc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2UgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgZHJpdmVyIHN1cHBvcnRzIGl0LiBBIHNpbXBsZSBmbG93ZXIgY2xhc3NpZmljYXRpb24gc2hvdWxkIGJlIGVub3VnaCB0byBzdGFydC4KCk5vdywgbXkgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIHNvIEkmIzM5O20gd29uZGVyaW5nIGlmIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgdG8gZnV6ei4gVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIG1vZGlmaWVzIGJvdGggYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBCdXQgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBkaXJlY3RseSBjYWxsZWQgZnJvbSBgdGNfYWRkX2Zsb3dgLCB3aGljaCBpcyB0aGUgY29ycmVjdCBlbnRyeSBmdW5jdGlvbi4gSG93ZXZlciwgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgIGlzIG5vdCBjYWxsZWQgZnJvbSB0aGUgb3RoZXIgZnVuY3Rpb24gSSB0aG91Z2h0IHdhcyBjb25uZWN0ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgc3RtbWFjX29wc2AsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoYXQgaXMgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgY29uZmlnX2w0X2ZpbHRlcmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWdfbDRfZmlsdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Nzk4PXN0YXRpYyBpbnQgZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjg1MjpzdGF0aWMgaW50IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy04NTMtXHRcdFx0XHQgICBib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYz04OTg9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHdtYWM0X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMC1cdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjkzMTpcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMi19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTM0PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNDEwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2Ny1cdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjk2ODpcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2OS1cdC5mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MgPSBkd21hYzVfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTcyPWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNTEwX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTEwMDktXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzoxMDEwOlx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd21hYzRfY29uZmlnX2w0X2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAxMS1cdC5mcGVfbWFwX3ByZWVtcHRpb25fY2xhc3MgPSBkd21hYzVfZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUyLVx0XHRcdFx0ICAgICBib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0Mjk9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4Z21hYzIxMF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sM19maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTQ2NjpcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDY3LVx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM9MTQ4NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jOjE1MjE6XHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTUyMi1cdC5zZXRfYXJwX29mZmxvYWQgPSBkd3hnbWFjMl9zZXRfYXJwX29mZmxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oPTMwNz1zdHJ1Y3Qgc3RtbWFjX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwMi1cdFx0XHRcdHUzMiBtYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NDAzOlx0aW50ICgqY29uZmlnX2w0X2ZpbHRlcikoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNDA0LVx0XHRcdFx0Ym9vbCBlbiwgYm9vbCB1ZHAsIGJvb2wgc2EsIGJvb2wgaW52LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC00ODctXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBtYWMsIGNvbmZpZ19sM19maWx0ZXIsIF9fYXJncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODg6I2RlZmluZSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihfX3ByaXYsIF9fYXJncy4uLikgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODk6XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBtYWMsIGNvbmZpZ19sNF9maWx0ZXIsIF9fYXJncylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC00OTAtI2RlZmluZSBzdG1tYWNfc2V0X2FycF9vZmZsb2FkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTUzNT1zdGF0aWMgaW50IHRjX2FkZF9wb3J0c19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NjUtXHRpZiAoaHdfbWF0Y2gpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjU2NjpcdFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cdTAwM2VodywgZW50cnktXHUwMDNlaWR4LCB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNTY3LVx0XHRcdFx0XHQgICAgICBpc191ZHAsIHRydWUsIGludiwgaHdfbWF0Y2gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU3My1cdGlmIChod19tYXRjaCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NTc0Olx0XHRyZXQgPSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihwcml2LCBwcml2LVx1MDAzZWh3LCBlbnRyeS1cdTAwM2VpZHgsIHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NzUtXHRcdFx0XHRcdCAgICAgIGlzX3VkcCwgZmFsc2UsIGludiwgaHdfbWF0Y2gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTY0ND1zdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02NTMtXHRpZiAoZW50cnktXHUwMDNlaXNfbDQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjY1NDpcdFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cdTAwM2VodywgZW50cnktXHUwMDNlaWR4LCBmYWxzZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTY1NS1cdFx0XHRcdFx0ICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjMzCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEMgRmxvd2VyIE9mZmxvYWQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgZm9jdXNlZCBvbiBob3cgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCB0aGUgVHJhZmZpYyBDb250cm9sIChUQykgZmxvd2VyIG9mZmxvYWQuIEkgc2VlIHRoYXQgYHN0bW1hY19jb25maWdfbDRfZmlsdGVyYCBpcyBpbnZva2VkIGZyb20gYHRjX2FkZF9wb3J0c19mbG93YCBhbmQgYHRjX2RlbF9mbG93YC4gIGB0Y19hZGRfcG9ydHNfZmxvd2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGB0Y19hZGRfZmxvd2AuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIGlzIGRyaXZlbiBieSB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgbWVjaGFuaXNtLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSW5pdGlhbGx5LCBJIGhhZCBicm9hZGVuZWQgdGhlIGZvY3VzIHN5bWJvbHMuIEhvd2V2ZXIsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlzICptb2RpZmllZCouIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgYXJlOgoKKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2AKKiAgIGB0Y19hZGRfZmxvd2AKKiAgIGB0Y19kZWxfZmxvd2AKKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYAoKSSBxdWlja2x5IGNvbmZpcm1lZCB0aGF0IGB0Y19hZGRfcG9ydHNfZmxvd2AgaXNuJiMzOTt0IHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhbmQgaXMgdGhlcmVmb3JlIG5vdCB0aGUgZm9jdXMgb2YgdGhpcyB3b3JrLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIHNlZWluZyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXMgdGhlIG1vc3QgcmVsZXZhbnQuIEkgd2FzIGFsc28gY3VyaW91cyBhYm91dCBgRFdNQUNfSU5URUxgLCBhbmQgdGhhdCBvbmUgaXMgZm9yIEludGVsIFF1YXJrL0VITC9UR0wgc3lzdGVtcy4gYFNUTU1BQ19QQ0lgIGlzIHRoZSBzdGFuZGFyZCBmb3IgZ2VuZXJpYyBQQ0ktYmFzZWQgc2V0dXBzLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgY29ubmVjdGlvbiB0byBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFNpbmNlIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBsaXZlcyBpbiBgZHd4Z21hYzJfY29yZS5jYCwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpZiBgU1RNTUFDX1BDSWAgYWN0dWFsbHkgdHJpZ2dlcnMgb3IgdXNlcyB0aGF0IGZpbGUuIEkgbmVlZCB0byBleGFtaW5lIGBzdG1tYWNfcGNpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc2NjgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBkd3hnbWFjYCBEcml2ZXIgVXNhZ2UqKgoKUmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRob3NlIGBkd3hnbWFjYCBvcGVyYXRpb25zIHN0cnVjdHVyZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBjb25jZXJuZWQgd2l0aCB0aGUgdXNhZ2Ugb2YgYm90aCBgZHd4Z21hYzIxMF9vcHNgIGFuZCBgZHd4bGdtYWMyX29wc2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2Ugc3RydWN0dXJlcyBhcmUgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IHNpbXBsZSBncmVwLWFuZC1maW5kOyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiAqaG93KiB0aGVzZSBhcmUgYmVpbmcgdXNlZCDigJMgd2hldGhlciBpdCYjMzk7cyBkaXJlY3RseSBpbiBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdpdGhpbiBpbnRlcnJ1cHQgaGFuZGxlcnMsIGZvciBETUEgY29uZmlndXJhdGlvbiwgb3Igd2hhdGV2ZXIuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgY3JpdGljYWxpdHkgYW5kIHBvdGVudGlhbCBpbXBhY3QuIEFyZSB0aGV5IHVzZWQgc2ltaWxhcmx5LCBvciBhcmUgdGhlcmUgZGlzdGluY3QgZGlmZmVyZW5jZXMgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IFRoZSBnb2FsIGlzIHRvIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbW1vbiBkZXNpZ24gcGF0dGVybiBiZXR3ZWVuIHRoZSBkcml2ZXJzLCBvciB0aGUgZGlmZmVyZW5jZXMgYW5kIGRlcGVuZGVuY2llcyBvbiBoYXJkd2FyZSB2ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDYzOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hnbWFjMjEwX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDY0LWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDEzPXN0YXRpYyB2b2lkIGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgYm9vbCBlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDI5OmNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0MzAtXHQuY29yZV9pbml0ID0gZHd4Z21hYzJfY29yZV9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNjAtXHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0MDQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgaHdpZi5jYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaHdpZi5jYC4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgdGhlIGNvcmUgaW50ZXJmYWNlIGZpbGUgZm9yIGhhcmR3YXJlIGludGVyYWN0aW9uLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgbG93LWxldmVsIHN0dWZmIGxpdmVzLCB0aGUgYml0IHR3aWRkbGluZywgdGhlIHJlZ2lzdGVyIGFjY2VzcywgdGhlIGludGVycnVwdCBoYW5kbGluZyDigJMgYWxsIHRoZSBuaXR0eS1ncml0dHkgdGhhdCBhY3R1YWxseSAqbWFrZXMqIHRoaW5ncyBoYXBwZW4uIEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN1c3BlY3RzIEkgZXhwZWN0IHRvIHNlZTogaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGRldmljZSBkcml2ZXIgZW50cnkgcG9pbnRzLCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIGRvc2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHBvc3NpYmx5IHNvbWUgZGVidWdnaW5nIG1hY3Jvcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpIGNvbmZpZ3VyYXRpb25zLCBjbG9jayBzZXR0aW5ncywgYW5kIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb25zLiBUaGUgZ29hbCBpcyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBpZGVudGlmeSB0aGUga2V5IGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbiwgbWF5YmUgc3BvdCBzb21lIG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBqdXN0IG9uIGEgZmlyc3QgcGFzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyMTBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNjAtXHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NjIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZSBpbiBgaHdpZi5jYCwgYWltZWQgYXQgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE9wZXJhdGlvbiBTZWxlY3Rpb24gTG9naWMgaW4gYGh3aWYuY2AqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgaHdpZi5jYCBmaWxlIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBvcGVyYXRpb24gc2VsZWN0aW9uIG1lY2hhbmlzbSB3b3Jrcy4gTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIHRoZSBkZWNpc2lvbiBwYXRoIHRoYXQgdGhlIGNvZGUgdXNlcyB0byBjaG9vc2UgdGhlIGNvcnJlY3Qgc2V0IG9mIG9wZXJhdGlvbnMgb3IgaGFuZGxlcnMuIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1pbmcsIHRoYXQgJiMzNDtod2lmJiMzNDsgcHJvYmFibHkgc3RhbmRzIGZvciAmIzM0O0hhcmR3YXJlIEludGVyZmFjZSYjMzQ7LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3RseSBmcm9tIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuIEkgd2FudCB0byBwaW5wb2ludCB0aGUga2V5IHZhcmlhYmxlcyBhbmQgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IGRyaXZlIHRoaXMgc2VsZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBsaWtlbHkgdG8gYmUgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGlzIHRoaXMgaGVhdmlseSBjb21waWxlLXRpbWUgZGVmaW5lZD8gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhbmFseXplIHRoZSBsb2dpYy4KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZC4gQXJlIHdlIGRlYWxpbmcgd2l0aCBmdW5jdGlvbiBwb2ludGVycywgYSBqdW1wIHRhYmxlLCBvciBwZXJoYXBzIHNvbWUgZm9ybSBvZiBsb29rLXVwIGJhc2VkIG9uIGRldmljZSBJRCBvciBjYXBhYmlsaXRpZXM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvciBldmlkZW5jZSBvZiBwb2x5bW9ycGhpc20sIHNpbmNlIGl0IHdvdWxkIGJlIGxpa2VseSBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIG1vZHVsZXMgdG8gcHJvdmlkZSB0aGVpciBvd24gaW50ZXJmYWNlcy4gQXJlIHRoZXJlIGFueSBhYnN0cmFjdGlvbiBsYXllcnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29kZSBhZGFwdHMgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIEFyZSB0aGVyZSBtdWx0aXBsZSBgaHdpZmAgaW5zdGFuY2VzIHBvc3NpYmxlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciwgY29udmVyc2VseSwgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoYXQgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIG1pZ2h0IGNyZWF0ZT8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IHN3aXRjaCBzdGF0ZW1lbnRzIG9yIGBpZi9lbHNlYCBjaGFpbnMgdGhhdCBhcmUgdXNlZCB0byBkaXNwYXRjaCB0aGUgY2FsbHMsIGFuZCBhc3Nlc3MgdGhlaXIgZWZmaWNpZW5jeSBhbmQgY2xhcml0eS4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGNoZWNrIGZvciBlcnJvciBoYW5kbGluZywgb3IgYW55IGZhbGxiYWNrIG1lY2hhbmlzbXMgaWYgbm8gYXBwcm9wcmlhdGUgb3BlcmF0aW9uIGlzIGZvdW5kLiBBbnkgdW51c3VhbCBvciBjbGV2ZXIgdGVjaG5pcXVlcyBhcmUgd29ydGggbXkgYXR0ZW50aW9uLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgYmVoaW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBzdHJ1Y3R1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaHdpZl9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTAwPWludCBzdG1tYWNfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0xMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MTExOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMi1cdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTQtc3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMxOS1cdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzIwOlx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMjEtXHRzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gdmVyc2lvbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MTkKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIGBzdG1tYWNfcGNpYCYjMzk7cyBDb3JlIFR5cGUqKgoKQWxyaWdodCwgSSBzZWUgdGhlIHNlbGVjdGlvbiBwcm9jZXNzIGlzIGJhc2VkIG9uIGJvdGggYGNvcmVfdHlwZWAgYW5kIGBzbnBzdmVyYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciB0aGVzZSBzb3J0cyBvZiBkcml2ZXIgY29uZmlndXJhdGlvbnMuIE5vdywgdGhlIGBTVE1NQUNfUENJYCBkZWZpbml0aW9uLCB3aGljaCBJIGFzc3VtZSByZWZlcnMgdG8gdGhlIFN5bm9wc3lzIGRyaXZlciBvdmVyIFBDSSwgcmVsaWVzIG9uIGBzdG1tYWNfcGNpX2luZm9gLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhhdCBzdHJ1Y3R1cmUsIGBzdG1tYWNfcGNpX2luZm9gLCBhY3R1YWxseSBjb250YWluIHRoZSBgY29yZV90eXBlYCBJJiMzOTttIGxvb2tpbmcgZm9yPyBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIGlzbiYjMzk7dCBpdD8gSWYgaXQgZG9lcywgdGhlbiB3ZSYjMzk7cmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBJZiBub3QsIHRoZW4gdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBicm9rZW4uIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYHN0bW1hY19wY2kuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIGBzdG1tYWNfcGNpX2luZm9gIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmlsZSByZXZlYWxzLiBOZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGhvdyBgY29yZV90eXBlYCBpcyBwb3B1bGF0ZWQgd2l0aGluIHRoZSBgc3RtbWFjX3BjaV9pbmZvYCBzdHJ1Y3R1cmUsIGFuZCBjb25maXJtIHRoYXQgaXMgaW5kZWVkIHRoZSBpbnRlbmRlZCBtZXRob2Qgb2YgdGhlIHNlbGVjdGlvbiBwcm9jZWR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2lfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMTg9c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEwNjAKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgRGVmYXVsdCBEYXRhIGZvciBOZXR3b3JrIERyaXZlcnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgZGVmYXVsdCBkYXRhIGNvbmZpZ3VyYXRpb25zIGZvciBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgIGFuZCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY29uc2lkZXJlZCB0aGUgYmFzZWxpbmUgZm9yIGVhY2ggb2YgdGhlc2UgZHJpdmVycy4gQ29tcGFyaW5nIHRoZXNlIHR3byBzZXRzIG9mIGRlZmF1bHRzLCBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlaXIgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBob3cgdGhleSBtaWdodCBkaWZmZXIgaW4gdGhlaXIgaW5pdGlhbCBzZXR1cC4gVGhpcyBjb21wYXJpc29uIHdpbGwgaGVscCBtZSBwaW5wb2ludCBhbnkgcG90ZW50aWFsIHJlZHVuZGFuY2llcywgb3B0aW1pemF0aW9ucyBvciBhcmVhcyBvZiBjdXN0b21pemF0aW9uIHRoYXQgYXJlIHR5cGljYWxseSBoYW5kbGVkIGF0IHRoZSBzeXN0ZW0gbGV2ZWwgdmVyc3VzIHdoYXQgZWFjaCBzcGVjaWZpYyBkcml2ZXIgZGljdGF0ZXMuIExldCYjMzk7cyBzZWUgd2hhdCBpbnNpZ2h0cyB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGhvbGQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NucHNfZ21hYzVfZGVmYXVsdF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01MD1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjU0OnN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTUtXHRcdFx0XHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTEwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMzpcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERhdGEgRmlsZSoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyLiBMZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gVGhlIGltbWVkaWF0ZSBjdWUgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgLiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbiAtICYjMzQ7c25wcyYjMzQ7IHN1Z2dlc3RzIFNpbmdsZSBOdWNsZW90aWRlIFBvbHltb3JwaGlzbXMgZGF0YSwgJiMzNDtnbWFjNSYjMzQ7IHByb2JhYmx5IGRlbm90ZXMgYSBzcGVjaWZpYyBleHBlcmltZW50LCBtZXRob2RvbG9neSwgb3IgdmVyc2lvbiwgYW5kICYjMzQ7ZGVmYXVsdF9kYXRhJiMzNDsgbGlrZWx5IGluZGljYXRlcyBlaXRoZXIgdGhlIHJhd2VzdCBmb3JtIG9yIGEgY3VyYXRlZCBiYXNlbGluZSBkYXRhc2V0LiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIGxpa2VseSBmaWxlIGZvcm1hdCAtIGlzIGl0IGEgVkNGLCBhIHBsYWluIHRleHQgdGFibGUsIGEgYmluYXJ5IGZvcm1hdD8gVGhlICYjMzk7ZGVmYXVsdCYjMzk7IHBhcnQgaW1wbGllcyBhIHN0YXJ0aW5nIHBvaW50LCBzbyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgcHJlcHJvY2Vzc2luZyBzdGVwcyB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gYXBwbGllZC4gS25vd2luZyB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgZm91bmRhdGlvbmFsIGZvciBhbnkgZG93bnN0cmVhbSBhbmFseXNpcy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgbWV0YWRhdGEsIHRoZSBkYXRhIHN0cnVjdHVyZSwgYW5kIGFueSBwb3RlbnRpYWwgY2F2ZWF0cyBhc3NvY2lhdGVkIHdpdGggaXQuIEZyb20gdGhlIG5hbWUgYWxvbmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCB0aGUgYW5hbHl0aWNhbCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTQ6XHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICA1NTpcdFx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICA1NjpcdHtcbiAgNTc6XHRcdGludCBpO1xuICA1ODpcdFxuICA1OTpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbiAgNjA6XHRcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbiAgNjE6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICA2MjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4gIDYzOlx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4gIDY0Olx0XG4gIDY1Olx0XHQvKiBTZXQgZGVmYXVsdCBudW1iZXIgb2YgUlggYW5kIFRYIHF1ZXVlcyB0byB1c2UgKi9cbiAgNjY6XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XG4gIDY3Olx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xuICA2ODpcdFxuICA2OTpcdFx0cGxhdC1cdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcbiAgNzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiAgNzE6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcbiAgNzI6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLndlaWdodCA9IDI1O1xuICA3MzpcdFx0XHRpZiAoaSBcdTAwM2UgMClcbiAgNzQ6XHRcdFx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcbiAgNzU6XHRcdH1cbiAgNzY6XHRcbiAgNzc6XHRcdHBsYXQtXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcbiAgNzg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspXG4gIDc5Olx0XHRcdHBsYXQtXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDgwOlx0XG4gIDgxOlx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDgyOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgODM6XHRcbiAgODQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgODU6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xuICA4ODpcdFx0cGxhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcbiAgODk6XHRcdGlmICghcGxhdC1cdTAwM2VheGkpXG4gIDkwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA5MTpcdFxuICA5MjpcdFx0cGxhdC1cdTAwM2VheGktXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcbiAgOTM6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTg4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBBIFBvaW50IG9mIENsYXJpZmljYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvZGUmIzM5O3Mgc2V0dGluZyBgcGxhdC0mZ3Q7Y29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSB1bmRlcnN0YW5kIHRoZSBkcml2ZXIgaXMgc3BlY2lmeWluZyB0aGUgY29yZSB0eXBlIGhlcmUuIEJ1dCwgd2hhdCYjMzk7cyBpdHMgcmVsYXRpb25zaGlwIHdpdGggYHN0bW1hY19kZWZhdWx0X2RhdGFgPyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHdlIG92ZXJyaWRpbmcgc29tZXRoaW5nIHByZS1jb25maWd1cmVkPyBJcyB0aGlzIGEgc3RhbmRhcmQgdHlwZT8gSXMgYHN0bW1hY19kZWZhdWx0X2RhdGFgIGJlaW5nIGhhbmRsZWQgYXQgYSBkaWZmZXJlbnQgcG9pbnQgaW4gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIHBvdGVudGlhbCBmb3IgY29uZmxpY3Qgb3IgaWYgdGhlcmUgaXMgYSByZWR1bmRhbnQgYXNzaWdubWVudC4gVGhpcyBjb3VsZCBiZSBjcnVjaWFsIGZvciBlbnN1cmluZyBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkIHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgY291bGQgcmVsYXRlIHRvIGNsb2NrIHNldHRpbmdzLCBETUEgcGFyYW1ldGVycywgb3IgZXZlbiByZWdpc3RlciBvZmZzZXRzIGRlcGVuZGluZyBvbiB0aGUgR01BQyB2ZXJzaW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNoZWNrIHdoYXQgYHN0bW1hY19kZWZhdWx0X2RhdGFgIHByb3ZpZGVzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGN1cnJlbnQgc2V0dGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHN0bW1hY19kZWZhdWx0X2RhdGFgIGlzIGJlaW5nIGhhbmRsZWQgYXQgYSBkaWZmZXJlbnQgcG9pbnQgaW4gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgdGhlIHF1ZXN0aW9uIHRoYXQgSSB3YW50IHRvIGFuc3dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMzOlx0c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICAzNDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDM1Olx0e1xuICAzNjpcdFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbiAgMzc6XHRcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG4gIDM4Olx0XG4gIDM5Olx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDQwOlx0XHRwbGF0LVx1MDAzZXBoeV9hZGRyID0gMDtcbiAgNDE6XHRcdHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuICA0MjpcdFxuICA0MzpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibCA9IDMyO1xuICA0NDpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibHg4ID0gdHJ1ZTtcbiAgNDU6XHRcdC8qIFRPRE86IEFYSSAqL1xuICA0NjpcdFxuICA0NzpcdFx0cmV0dXJuIDA7XG4gIDQ4Olx0fVxuICA0OTpcdFxuICA1MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbiAgNTE6XHRcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4gIDUyOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyMTUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYGNvbW1vbl9kZWZhdWx0X2RhdGFgIGFuZCBpdHMgUG90ZW50aWFsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgc2V0dGluZy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHNldHRpbmcgYHBsYXQtJmd0O2NvcmVfdHlwZSA9IERXTUFDX0NPUkVfTUFDO2AuIFRoYXQgZmVlbHMgbGlrZSB0aGUgbW9zdCBwcm9iYWJsZSBvdXRjb21lIGdpdmVuIHRoZSBjb250ZXh0LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBodW5jaC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgaXQsIGluIGZhY3QsIGRvZXMgd2hhdCBJIGV4cGVjdC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNvcmUgdHlwZSBhc3NpZ25tZW50IHRvIHVuZGVyc3RhbmQgaXRzIGRvd25zdHJlYW0gaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHZlcmlmeSB0aGUgZXhhY3QgbWVjaGFuaXNtIGFuZCBhbnkgc2lkZSBlZmZlY3RzLiBUaGlzIGtpbmQgb2YgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIHJvdXRpbmUgdG8gbWUgLSBJIGNhbiYjMzk7dCBsZWF2ZSBhc3N1bXB0aW9ucyB1bnZhbGlkYXRlZCwgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGZ1bmRhbWVudGFsIHNldHRpbmdzLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBiZWluZyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21tb25fZGVmYXVsdF9kYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOT1zdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjM6c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM2LVx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzozNzpcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzg4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byB0aGUgRGVmYXVsdCBEYXRhKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuICYjMzQ7Y29tbW9uX2RlZmF1bHRfZGF0YSYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiwgdGhlIGNvcmUgc2V0dGluZ3MgdGhpcyBzeXN0ZW0gYXNzdW1lcyBvdXQgb2YgdGhlIGJveC4gVGhpcyBpcyB3aGVyZSB0aGUgZm91bmRhdGlvbiBpcyBsYWlkLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFzc3VtcHRpb25zIGFyZSBjb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBmaXJzdCBsaW5lIG9mIGN1c3RvbWl6YXRpb24gYmVnaW5zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYSBzb2xpZCBncmFzcCBvZiB0aGVzZSBkZWZhdWx0cyBpcyBjcnVjaWFsLiBJZiBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgcHJlLXNldCBjb25maWd1cmF0aW9ucywgSSBjYW4gbW9yZSBlZmZlY3RpdmVseSBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLCBvcHRpbWl6ZSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBhbmQgdHJvdWJsZXNob290IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0IGlzIGFsd2F5cyBiZXN0IHRvIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRlZmF1bHQgc3RhdGVzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgd2hlcmUgSSBzdGFydC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIzOlx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDI0Olx0e1xuICAyNTpcdFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xuICAyNjpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG4gIDI3Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbiAgMjg6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICAyOTpcdFxuICAzMDpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjExCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBHTUFDIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIGxvb2tpbmcgYXQgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YC4gUmlnaHQsIHN0YW5kYXJkIEdNQUMgY29yZXMuIE5vdywgd2hlcmUgYXJlIHdlIHdpdGggdGhvc2UgbG93LWxldmVsIGNvbmZpZ3VyYXRpb25zPyBBaCwgaG9sZCBvbi4gSSYjMzk7dmUgc3BvdHRlZCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCB0aGVyZSYjMzk7cyBhIGRpZmZlcmVuY2UuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGljaCBjb3JlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgdXNlcyBgZHd4Z21hYzIxMF9vcHNgPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IG9wZXJhdGlvbnMgc3RydWN0dXJlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgTDQgZmlsdGVyIGNvbmZpZ3VyYXRpb24uIFdlJiMzOTtyZSBnZXR0aW5nIGNsb3NlciB0byBtYWtpbmcgdGhpcyBtYWtlIHNlbnNlLiBHb3R0YSBsb29rIHVwIHRoYXQgY29yZSB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTgtXHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU5Olx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVx0XHQudmxhbiA9IFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzA1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZS4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gSSYjMzk7bSBub3QgZ29pbmcgdG8gYm90aGVyIHdpdGggdGhlIGVudGlyZSBmaWxlIHJpZ2h0IG5vdy4gSSYjMzk7bGwgc3RhcnQgYnkgZm9jdXNpbmcgaW4gYXJvdW5kIGxpbmUgMjU4LiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSSYjMzk7bGwgcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc29tZSBjb250ZXh0IGFuZCBmaWd1cmUgb3V0IHdoYXQgaXMgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4gMjYwOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiAyNjE6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyNjI6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI2MzpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjY0Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyNjU6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyNjY6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjY3Olx0XHRcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxuIDI2ODpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNjk6XHRcdH0sIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyNjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlZXAgRGl2ZSBvbiBgY29yZV90eXBlYCBEZXRlcm1pbmF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGVudHJ5IGFuZCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IFdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsLCB0aGUgKmNvcmUqLCBgY29yZV90eXBlYCBvZiB0aGlzIHRoaW5nPyBJIG5lZWQgdG8gZ2V0IHRoaXMgcmlnaHQgYmVjYXVzZSB0aGUgZW50aXJlIHN5c3RlbSwgZnJvbSBkYXRhIG1vZGVscyB0byBkb3duc3RyZWFtIHByb2Nlc3NpbmcsIGhpbmdlcyBvbiB0aGlzIGluaXRpYWwgY2xhc3NpZmljYXRpb24uIEkgY2FuJiMzOTt0IGp1c3QgcGljayBzb21ldGhpbmcgYXQgcmFuZG9tOyBpdCBuZWVkcyB0byBiZSBkZWZlbnNpYmxlLCBzY2FsYWJsZSwgYW5kIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgZXNzZW5jZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkLgoKQW0gSSBsb29raW5nIGF0IGEgYHRyYW5zYWN0aW9uYCwgYW4gYGV2ZW50YCwgb3IgYSBgcmVwb3J0YD8gSXMgaXQgc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgbGlrZSBgc2Vuc29yX2RhdGFgIG9yIGBhbm9tYWx5X2RldGVjdGlvbl9yZXN1bHRgPyBPciBwZXJoYXBzIGEgY29tcG9zaXRlIHRoYXQgaXMgYSBgZGVyaXZlZF9tZXRyaWNgIG9yIGFuIGBhZ2dyZWdhdGVkX3N0YXRpc3RpY2A/IEl0IGNvdWxkIGJlIGEgYG1ldGFkYXRhX3VwZGF0ZWDigKYgdGhlIG9wdGlvbnMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIHJpZ2h0IGNob2ljZSBpbXBhY3RzIGhvdyBJIGhhbmRsZSBpdHMgYXR0cmlidXRlcywgdmFsaWRhdGUgdGhlIHNjaGVtYSwgYW5kIGludGVncmF0ZSBpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNhcmVmdWxseSBhbmFseXplIGl0cyBzdHJ1Y3R1cmUsIGNvbnRleHQsIGFuZCBwdXJwb3NlLiBJIGNhbiYjMzk7dCBsZXQgdGhpcyBiZSBqdXN0IGFub3RoZXIgZGF0YSBlbnRyeS4gVGhpcyAqY29yZV90eXBlKiBuZWVkcyB0byBiZSB0aGUgUm9zZXR0YSBTdG9uZSB0aGF0IHVubG9ja3MgaXRzIG1lYW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNDA6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI0MTpcdFx0XHQubW9kZSA9IFx1MDAyNmR3bWFjNF9yaW5nX21vZGVfb3BzLFxuIDI0MjpcdFx0XHQudGMgPSBcdTAwMjZkd21hYzUxMF90Y19vcHMsXG4gMjQzOlx0XHRcdC5tbWMgPSBcdTAwMjZkd21hY19tbWNfb3BzLFxuIDI0NDpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyNDU6XHRcdFx0LnNldHVwID0gZHdtYWM0X3NldHVwLFxuIDI0NjpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNDc6XHRcdH0sIHtcbiAyNDg6XHRcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG4gMjQ5Olx0XHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbiAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTg4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqWEdNQUMgUENJIERldmljZSBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGEgYERXTUFDX0NPUkVfWEdNQUNgIGluc3RhbmNlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGl0cyBQQ0kgZGV2aWNlIHN0YXR1cy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlcmUgYW55IFBDSSBkZXZpY2VzIGxldmVyYWdpbmcgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBJUCBjb3JlPyBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJcyB0aGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGluIFBDSSBkZXZpY2VzLCBvciBpcyBpdCB0eXBpY2FsbHkgdXNlZCBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBsaWtlIHdpdGggYSBkaWZmZXJlbnQgYnVzIG9yIHBlcmlwaGVyYWwgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguIEkgd2lsbCBuZWVkIHRvIGRldGVybWluZSBpZiBJJiMzOTt2ZSBkZWFsdCB3aXRoIHRoaXMgYmVmb3JlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSBhIHRob3JvdWdoIGRldmljZSBkYXRhYmFzZSBhbmQgc291cmNlIGNvZGUgZGl2ZSB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDX0NPUkVfWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlx0cGxhdF9kYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNTEtXHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0ODpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVx0XHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNzA6XHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3MS1cdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwNi1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDgtXHRcdCAgICBkZXZfaWQgIT0gZW50cnktXHUwMDNlZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDM19YX09GRlNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXHRcdFx0cHJpdi1cdTAwM2Vlc3RhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgRVNUX1hHTUFDX09GRlNFVDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTU3LVx0XHRjdHJsIFx1MDAyNj0gfkVTVF9YR01BQ19QVE9WO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cdGlmIChzdGF0dXMgXHUwMDI2IEVTVF9CVFJFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUyLVx0XHRcdGJ0cmwgPSBGSUVMRF9HRVQoRVNUX1hHTUFDX0JUUkwsIHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjMwOTpcdGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cdFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzYxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dyZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXHRcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3Ny1cdFx0bWVtY3B5KFx1MDAyNnJlZ19zcGFjZVtFVEhUT09MX0RNQV9PRkZTRVRdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU2Nj1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjAxLVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYwMjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYwMy1cdFx0c2VxX3ByaW50ZihzZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYyNjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjctXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MzQtXHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfNF8wMCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjM1Olx0ICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjM2LVx0XHRzZXFfcHJpbnRmKHNlcSwgXCYjMzQ7XFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzY2PXN0YXRpYyB2b2lkIHN0bW1hY19wcmludF9hY3RwaHlpZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzgyOlx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzgzLVx0XHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzQwOD1zdGF0aWMgaW50IHN0bW1hY19od19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MzAtXHRpZiAoKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzUzMTpcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUzMi1cdCAgICAhcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJpd3Rfb2ZmKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzk3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwMDU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDA2LVx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBYR01BQ19KVU1CT19MRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVx0XHRyYXRlcyA9IHN0bW1hY19zdW44aV9jc3JfdG9fbWRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXHRcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2MjI6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cdFx0bmV3X2J1cy1cdTAwM2VyZWFkID0gXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjY2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVx0XHRzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jNDUobmV3X2J1cywgMCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O3NucHMsZHd4Z21hY1wmIzM0OykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNTQ5LVx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTg3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ292ZXJhZ2Ugb2YgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgaXMgdXNlZCBieSBgZHdtYWMtc29jZnBnYS5jYCwgYGR3bWFjLXRlZ3JhLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYCB3aGVuIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyBgc25wcyxkd3hnbWFjYC4gQnV0IGl0JiMzOTtzICpub3QqIHVzZWQgYnkgYHN0bW1hY19wY2kuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpZiBpdCYjMzk7cyBub3QgcHJlc2VudCBpbiB0aGUgUENJIGNvbmZpZ3VyYXRpb24sIGhvdyBhbSBJIGdvaW5nIHRvIGZ1enogaXQgZWZmZWN0aXZlbHkgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gU3l6a2FsbGVyIG1ha2VzIGZ1enppbmcgcGxhdGZvcm0gZGV2aWNlcyBlYXNpZXIgdGhyb3VnaCBkZXZpY2V0cmVlIGluamVjdGlvbiwgYHN5el9kZXZyZXNgLCBvciBzaW1pbGFyIHRlY2huaXF1ZXMsIGJ1dCBpdCYjMzk7cyBzdGlsbCBtb3JlIGNoYWxsZW5naW5nLgoKVGhlbiwgSSByZW1lbWJlciB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBhbmQgKnRoYXQmIzM5O3MqIHVzZWQgYnkgKmFsbCogc3RtbWFjIGRldmljZXMgdGhhdCBzdXBwb3J0IFRDIG9mZmxvYWQuIEV4Y2VsbGVudC4gYHRjX2FkZF9iYXNpY19mbG93YCBpcyBpbiBgc3RtbWFjX3RjLmNgIGFuZCBpcyB1c2VkIGJ5IGBkd21hYzRfdGNfb3BzYCBhbmQgYGR3bWFjNTEwX3RjX29wc2AuIE5vdywgYGR3bWFjNF90Y19vcHNgIGlzIHVzZWQgYnkgYERXTUFDX0NPUkVfR01BQzRgLCBhbmQgKnRoYXQqICppcyogdXNlZCBieSBQQ0khIFNwZWNpZmljYWxseSwgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYCBzZXRzIGBEV01BQ19DT1JFX0dNQUM0YC4gU28sIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIHRoZSBQQ0kgcGF0aCwgd2hpY2ggaXMgbXVjaCBlYXNpZXIgdG8gZnV6ei4KCk5vdywgdGhhdCBzYWlkLCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgdXNlZC4gU28sIGlkZWFsbHksIEkmIzM5O2QgbGlrZSB0byBnZXQgdGhlIFhHTUFDIHBhdGggd29ya2luZy4gQ2FuIEkgZW5hYmxlIGBEV01BQ19TT0NGUEdBYCBvciBgRFdNQUNfVEVHUkFgPyBZZXMsIEkgY2FuLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzLCBidXQgYXQgbGVhc3QgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBicm9hZGVuIHRoZSBmdXp6aW5nIHN1cmZhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19TT0NGUEdBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwMzpjb25maWcgRFdNQUNfU09DRlBHQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDQtXHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyMDIKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzOgoKKipBbmFseXppbmcgYERXTUFDX1NPQ0ZQR0FgIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBzZWUgYERXTUFDX1NPQ0ZQR0FgIG1lbnRpb25lZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIGl0IC0gaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBkb2VzIHRoaXMgdGhpbmcgcmVseSBvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gYXNzZXNzIGl0IHByb3Blcmx5LiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4gQXJlIHdlIHRhbGtpbmcgaGFyZHdhcmUsIG90aGVyIHNvZnR3YXJlIG1vZHVsZXMsIHNwZWNpZmljIGRldmljZSBkcml2ZXJzLCBvciBhIGNvbWJpbmF0aW9uPyBUaW1lIHRvIGZpbmQgb3V0LiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIHdvcmsgYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMzpcdGNvbmZpZyBEV01BQ19TT0NGUEdBXG4gMjA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMDU6XHRcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXG4gMjA2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcbiAyMDc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjA4Olx0XHRzZWxlY3QgTURJT19SRUdNQVBcbiAyMDk6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDIxMDpcdFx0c2VsZWN0IFBDU19MWU5YXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcbiAyMTM6XHRcbiAyMTQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjE1Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXG4gMjE2Olx0XHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxuIDIxNzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYzOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHRoZSBwYXRjaCYjMzk7cyByZWFjaCBkZXBlbmRzIG9uIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbjogYE9GICZhbXA7JmFtcDsgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpYC4gU3l6a2FsbGVyIGNhbiwgb2YgY291cnNlLCBlbmFibGUgZWl0aGVyIGBDT01QSUxFX1RFU1RgIG9yIGBBUkNIX0lOVEVMX1NPQ0ZQR0FgLCBidXQsIGFuZCBoZXJlJiMzOTtzIHRoZSBjYXRjaCwgU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NC4gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4KCklmIEkganVzdCBlbmFibGUgYERXTUFDX1NPQ0ZQR0FgIGFuZCBgQ09NUElMRV9URVNUYCwgaXQgKndpbGwqIGNvbXBpbGUsIG5vIHByb2JsZW0gdGhlcmUuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBpdCBiZSAqcHJvYmVkKj8gUGxhdGZvcm0gZGV2aWNlcyB1c3VhbGx5IHJlcXVpcmUgYSBEZXZpY2UgVHJlZSBub2RlIG9yIHBsYXRmb3JtIGRhdGEuIFN5emthbGxlciBoYXMgdGhpcyBwc2V1ZG8tZGV2aWNlIGluamVjdGlvbiBtZWNoYW5pc20sIHRoaW5ncyBsaWtlIGBzeXpfZGV2cmVzYCwgYnV0IGl0cyBhIGJpdCBsaW1pdGVkLiBIb3dldmVyLCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB0aHJvdWdoIFBDSSwgYW5kIHRoYXQmIzM5O3MgZXh0cmVtZWx5IGVhc3kgdG8gZnV6ei4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC4KCkkgc2hvdWxkIHJlZmluZSB0aGUgYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBpbmNsdWRlOgoKKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2AKKiAgIGB0Y19hZGRfZmxvd2AKKiAgIGB0Y19kZWxfZmxvd2AKKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYAoKTm93LCByZWdhcmRpbmcgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLCBpdCAqbWlnaHQqIG5vdCBiZSByZWFjaGFibGUgaWYgYERXTUFDX0NPUkVfWEdNQUNgIGlzbiYjMzk7dCBwcm9iZWQuIEhvd2V2ZXIsIGl0ICppcyogcGFydCBvZiB0aGUgcGF0Y2gsIHNvIEkgbmVlZCB0byBpbmNsdWRlIGl0IGFueXdheS4gSWYgU3l6a2FsbGVyICpkb2VzKiBtYW5hZ2UgdG8gcHJvYmUgYSBgZHd4Z21hY2AgZGV2aWNlLCB0aGVuIGl0IHdpbGwgZnV6eiBpdC4gVGhhdCYjMzk7cyBhIGdvb2QgdGhpbmcuCgpJIHNob3VsZCBhbHNvIGNoZWNrIGZvciBvdGhlciByZXF1aXJlZCBjb25maWdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpTbywgSSBuZWVkIHRvIGNoZWNrOgoKKiAgIGBTVE1NQUNfRVRIYAoqICAgYFNUTU1BQ19QQ0lgCiogICBgTkVUX0NMU19GTE9XRVJgCgpJcyB0aGVyZSBhbnkgY29uZmlnIHRoYXQgaXMgYSBkZXBlbmRlbmN5IGZvciBgdGNfYWRkX2Jhc2ljX2Zsb3dgPyBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBpbiBgc3RtbWFjX3RjLmNgLiBMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgdGhhdCBgc3RtbWFjX3RjLmNgIGNvbXBpbGVzIHdpdGggdGhlIGJhc2UgY29uZmlndXJhdGlvbnMgSSBoYXZlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190Yy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTktXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA3OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzk3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBzdG1tYWMgVEMgRmxvd2VyIE9mZmxvYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgVEMgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBTaW5jZSBgU1RNTUFDX0VUSGAgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGNhbiBxdWlja2x5IHZlcmlmeSB0aGF0IGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgc3RhdGljLCBsaWtlIEkgdGhvdWdodCwgYW5kIGFzIGEgcmVzdWx0LCBJIGNhbiBqdXN0IGluY2x1ZGUgaXQgaW4gdGhlIGxpc3QuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFkZGluZyBwcm90b2NvbCB2YWxpZGF0aW9uLCBhbmQgYWxzbyBhZGp1c3RzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgY29kZSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlLiBDcnVjaWFsbHksIHRoZSBzdG1tYWMgZHJpdmVyIGFsc28gc3VwcG9ydHMgUENJIHZpYSBgU1RNTUFDX1BDSWAsIHdoaWNoIG1lYW5zIGl04oCZcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoaXMgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgaXRzIGF0dGFjayBzdXJmYWNlLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHRjX2FkZF9iYXNpY19mbG93YCwgYHRjX2FkZF9mbG93YCwgYHRjX2RlbF9mbG93YCwgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSnVzdCB0byBkb3VibGUtY2hlY2ssIGl0IGxvb2tzIGxpa2UgYHRjX2FkZF9mbG93YCBhbmQgYHRjX2RlbF9mbG93YCBhcmUgYWxzbyBzdGF0aWMsIHNvIEkgY2FuIGFkZCB0aGVtIHRvIHRoZSBsaXN0LgoKRmluYWxseSwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgY29uZmlncy4gV2UgYWxyZWFkeSBoYXZlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHNob3VsZCBhbHNvIHZlcmlmeSB0aGF0IGBORVRfQ0xTX0ZMT1dFUmAgaXMgZW5hYmxlZCwgYXMgaXQgcHJvdmlkZXMgdGhlIGNvcmUgZmxvd2VyIGZ1bmN0aW9uYWxpdHkuIEFkZGl0aW9uYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBgQ09ORklHX05FVF9TQ0hfSU5HUkVTU2AuIEkgYmVsaWV2ZSB0aGlzIGlzIHJlcXVpcmVkIHRvIGF0dGFjaCB0aGUgZmxvd2VyIGZpbHRlciB0byB0aGUgaW50ZXJmYWNlIHZpYSBjb21tYW5kcyBsaWtlIGB0YyBxZGlzYyBhZGQgZGV2IGV0aDAgaW5ncmVzc2AgYW5kIGB0YyBmaWx0ZXIgYWRkIGRldiBldGgwIHBhcmVudCBmZmZmOiBwcm90b2NvbCBpcCBmbG93ZXIgLi4uYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfSU5HUkVTUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXG5uZXQvc2NoZWQvS2NvbmZpZzozNDc6Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzgzOAoJCQkJCQkJb3V0cHV0OiAyMjUKCQkJCQkJCXRob3VnaHRzOiA1ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB3ZSBuZWVkIGBORVRfU0NIX0lOR1JFU1NgIHRvIGF0dGFjaCB0aG9zZSBpbmdyZXNzIGZpbHRlcnMsIGFuZCBJJiMzOTttIGNvbmZpZGVudCB0aGF0JiMzOTtzIGFsbCB3ZSBuZWVkIGhlcmUuIE5vIG5lZWQgZm9yIGBORVRfSFdfRVhBQ1RfTUFUQ0hgOyBgTkVUX0NMU19GTE9XRVJgIGlzIHN1ZmZpY2llbnQuIFNvLCBJJiMzOTtsbCBhZGQgYE5FVF9TQ0hfSU5HUkVTU2AgdG8gdGhlIGNvbmZpZ3MsIGVhc3kuCgpOb3csIEkgd2FudGVkIHRvIGRvdWJsZS1jaGVjayBpZiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGJlaW5nIGNhbGxlZCBmb3IgZWdyZXNzIGFzIHdlbGwuIEFoLCByaWdodCwgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAgaXMgY2FsbGVkIGZvciBib3RoIGluZ3Jlc3MgYW5kIGVncmVzcywgc28gd2UmIzM5O3JlIGNvdmVyZWQuIFRob3VnaCwgVEMgb2ZmbG9hZCBpcyAqdXN1YWxseSogaW5ncmVzcyBmb3IgZmxvd2VyIGZpbHRlcnMsIGl0ICpjYW4qIGJlIGVncmVzcyB0b28uIFRoZSBpbmNsdXNpb24gb2YgYE5FVF9TQ0hfSU5HUkVTU2AgaXMgYSBzb2xpZCwgZGVmZW5zaXZlIGFkZGl0aW9uLiBHb29kLCBnb29kLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoZSB0cmlzdGF0ZSBzdGF0dXMgb2YgdGhlc2Ugb3B0aW9ucy4gYFNUTU1BQ19FVEhgIC0geWVzLCB0cmlzdGF0ZS4gYFNUTU1BQ19QQ0lgIC0geWVzLCBhbHNvIHRyaXN0YXRlLiBgTkVUX0NMU19GTE9XRVJgIC0gWWVwLCB0cmlzdGF0ZS4gQW5kIGZpbmFsbHksIGBORVRfU0NIX0lOR1JFU1NgPyBQZXJmZWN0LCB0cmlzdGF0ZSBhcyB3ZWxsLiBFeGNlbGxlbnQuCgpOb3csIGJhY2sgdG8gdGhlIHBhdGNoIGNvZGUgaXRzZWxmLiBJIHNlZSBhIGNsZWFyIGJ1ZyBmaXggaGVyZSB3aXRoIHRoZXNlIGJpdHdpc2Ugb3BlcmF0aW9ucywgY2xlYW5pbmcgdXAgcG90ZW50aWFsIGlzc3Vlcy4gVGhpcyBpcyBnb29kLiBJIHVuZGVyc3RhbmQgdGhpcyBzZWN0aW9uOgoKYGBgYwogCWlmIChzYSkgewotCQl2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTsKJiM0MzsJCXZhbHVlICZhbXA7PSB+WEdNQUNfTDRTUDA7CiYjNDM7CQl2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7CiAJfSBlbHNlIHsKLQkJdmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7Ci0KLQkJcmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CiYjNDM7CQl2YWx1ZSAmYW1wOz0gflhHTUFDX0w0RFAwOwomIzQzOwkJdmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpOwogCX0KYGBgCgpUaGUgYWRkZWQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBvZmZsb2FkZWQgaXMgdmVyeSBpbXBvcnRhbnQuIEkgYXBwcmVjaWF0ZSB0aGUgYWRkZWQgY2hlY2tzOgoKYGBgYwomIzQzOwkvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovCiYjNDM7CWlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stJmd0O25fcHJvdG8gfHwgbWF0Y2gubWFzay0mZ3Q7aXBfcHJvdG8pKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoY2xzLSZndDtjb21tb24uZXh0YWNrLAomIzQzOwkJCQkgICAmIzM0O2ZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2wmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CX0KYGBgCgpUaGlzIHdob2xlIHBhdGNoIGlzIGZ1bmN0aW9uYWw7IGl0IGxvb2tzIGdvb2QuIEl0JiMzOTtzIGNsZWFuLCB3ZWxsLXJlYXNvbmVkLCBhbmQgYWRkcyBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBUaW1lIHRvIHJ1biBpdCB0aHJvdWdoIGZ1enppbmcuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y19hZGRfYmFzaWNfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19hZGRfZmxvdyYjMzQ7LAogICAgJiMzNDt0Y19kZWxfZmxvdyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoxNy4wMTY4NDg0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTkwOTIyODY4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX1NDSF9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfYWRkX2Jhc2ljX2Zsb3dcIixcbiAgICBcInRjX2FkZF9mbG93XCIsXG4gICAgXCJ0Y19kZWxfZmxvd1wiLFxuICAgIFwiZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzdG1tYWMgZHJpdmVyJ3MgdHJhZmZpYyBjb250cm9sIChUQykgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMuIEl0IGFkZHMgdmFsaWRhdGlvbiBmb3IgbmV0d29yayBhbmQgdHJhbnNwb3J0IHByb3RvY29scyBpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGFuZCBmaXhlcyBiaXR3aXNlIG9wZXJhdGlvbnMgaW4gYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBuZXRsaW5rIFRDIGludGVyZmFjZSB3aGVuIGNvbmZpZ3VyaW5nIGZpbHRlcnMgb24gYW4gaW50ZXJmYWNlIGJhY2tlZCBieSB0aGUgc3RtbWFjIGRyaXZlci4gVGhlIHN0bW1hYyBkcml2ZXIgaGFzIFBDSSBzdXBwb3J0IChgU1RNTUFDX1BDSWApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoZXJlZm9yZSwgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDM6MTcuMDE2ODU0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDY3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzU0YTJhN2NmNjNiZWZiOTI5NWQ0YWY5YTcxNDY0ZTUxZmY3Yjk3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNzowMzoxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcXG5pbmRleCBmMDJiNDM0YmJkNTA1Yi4uNTIwNTRmMzEzNzZkNTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXFxuQEAgLTEzNzAsMzYgKzEzNzAsNDAgQEAgc3RhdGljIGludCBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxcbiBcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xcbiBcXHR9XFxuIFxcbi1cXHR2YWx1ZSBcXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xcbi1cXHR2YWx1ZSBcXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xcbiBcXHRpZiAoc2EpIHtcXG4gXFx0XFx0dmFsdWUgfD0gWEdNQUNfTDRTUE0wO1xcbiBcXHRcXHRpZiAoaW52KVxcbiBcXHRcXHRcXHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHZhbHVlIFxcdTAwMjY9IH5YR01BQ19MNFNQSU0wO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHR2YWx1ZSB8PSBYR01BQ19MNERQTTA7XFxuIFxcdFxcdGlmIChpbnYpXFxuIFxcdFxcdFxcdHZhbHVlIHw9IFhHTUFDX0w0RFBJTTA7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0dmFsdWUgXFx1MDAyNj0gflhHTUFDX0w0RFBJTTA7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIHZhbHVlKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdGlmIChzYSkge1xcbi1cXHRcXHR2YWx1ZSA9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcXG4rXFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3JlYWQoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgXFx1MDAyNnZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuLVxcdFxcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7XFxuLVxcdFxcdGlmIChyZXQpXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdGlmIChzYSkge1xcbitcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDRTUDA7XFxuK1xcdFxcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XFxuLVxcbi1cXHRcXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfTDREUDA7XFxuK1xcdFxcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gZHd4Z21hYzJfZmlsdGVyX3dyaXRlKGh3LCBmaWx0ZXJfbm8sIFhHTUFDX0w0X0FERFIsIHZhbHVlKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuIFxcdGlmICghZW4pXFxuIFxcdFxcdHJldHVybiBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCAwKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG5pbmRleCBkNzg2NTI3MTg1OTk5ZC4uMTRjYWJlNzZlNTNlYzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xcbkBAIC00NDYsNiArNDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiB9XFxuIFxcbiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLXFx0Y3B1X3RvX2JlMTYofjApXFxuKyNkZWZpbmUgSVBfUFJPVE9fRlVMTF9NQVNLXFx0MHhGRlxcbiBcXG4gc3RhdGljIGludCB0Y19hZGRfYmFzaWNfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcXG5AQCAtNDYxLDYgKzQ2MiwzNyBAQCBzdGF0aWMgaW50IHRjX2FkZF9iYXNpY19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFxuIFxcdGZsb3dfcnVsZV9tYXRjaF9iYXNpYyhydWxlLCBcXHUwMDI2bWF0Y2gpO1xcbiBcXG4rXFx0LyogQm90aCBuZXR3b3JrIHByb3RvIGFuZCB0cmFuc3BvcnQgcHJvdG8gbm90IHByZXNlbnQgaW4gdGhlIGtleSAqL1xcbitcXHRpZiAoIW1hdGNoLm1hc2sgfHwgIShtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIHx8IG1hdGNoLm1hc2stXFx1MDAzZWlwX3Byb3RvKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwiZmlsdGVyIG11c3Qgc3BlY2lmeSBuZXR3b3JrIG9yIHRyYW5zcG9ydCBwcm90b2NvbFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIElmIHRoZSBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBmdWxsIG1hc2sgKi9cXG4rXFx0aWYgKChtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIFxcdTAwMjZcXHUwMDI2IG1hdGNoLm1hc2stXFx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XFxuK1xcdCAgICAobWF0Y2gubWFzay1cXHUwMDNlaXBfcHJvdG8gXFx1MDAyNlxcdTAwMjYgbWF0Y2gubWFzay1cXHUwMDNlaXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib25seSBmdWxsIHByb3RvY29sIG1hc2sgaXMgc3VwcG9ydGVkXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFx0fVxcbitcXG4rXFx0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXFxuK1xcdGlmIChtYXRjaC5tYXNrLVxcdTAwM2VuX3Byb3RvIFxcdTAwMjZcXHUwMDI2IG1hdGNoLmtleS1cXHUwMDNlbl9wcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9JUCkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cXHUwMDNlY29tbW9uLmV4dGFjayxcXG4rXFx0XFx0XFx0XFx0ICAgXFxcIm9ubHkgSVB2NCBuZXR3b3JrIHByb3RvY29sIGlzIHN1cHBvcnRlZFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXFxuK1xcdGlmIChtYXRjaC5tYXNrLVxcdTAwM2VpcF9wcm90byBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbWF0Y2gua2V5LVxcdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1RDUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbWF0Y2gua2V5LVxcdTAwM2VpcF9wcm90byAhPSBJUFBST1RPX1VEUCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVxcdTAwM2Vjb21tb24uZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHR9XFxuK1xcbiBcXHRlbnRyeS1cXHUwMDNlaXBfcHJvdG8gPSBtYXRjaC5rZXktXFx1MDAzZWlwX3Byb3RvO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC01OTgsNiArNjMwLDggQEAgc3RhdGljIGludCB0Y19hZGRfZmxvdyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdHJldCA9IHRjX2Zsb3dfcGFyc2Vyc1tpXS5mbihwcml2LCBjbHMsIGVudHJ5KTtcXG4gXFx0XFx0aWYgKCFyZXQpXFxuIFxcdFxcdFxcdGVudHJ5LVxcdTAwM2Vpbl91c2UgPSB0cnVlO1xcbitcXHRcXHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghZW50cnktXFx1MDAzZWluX3VzZSlcXG5AQCAtNjI3LDYgKzY2MSw3IEBAIHN0YXRpYyBpbnQgdGNfZGVsX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRlbnRyeS1cXHUwMDNlaW5fdXNlID0gZmFsc2U7XFxuIFxcdGVudHJ5LVxcdTAwM2Vjb29raWUgPSAwO1xcbiBcXHRlbnRyeS1cXHUwMDNlaXNfbDQgPSBmYWxzZTtcXG4rXFx0ZW50cnktXFx1MDAzZWFjdGlvbiA9IDA7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjE3LjQ3NTAxNTQyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNDUxMDUzMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCIsXG4gICAgXCJORVRfU0NIX0lOR1JFU1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y19hZGRfYmFzaWNfZmxvd1wiLFxuICAgIFwidGNfYWRkX2Zsb3dcIixcbiAgICBcInRjX2RlbF9mbG93XCIsXG4gICAgXCJkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIncyB0cmFmZmljIGNvbnRyb2wgKFRDKSBmbG93ZXIgaGFyZHdhcmUgb2ZmbG9hZCBsb2dpYy4gSXQgYWRkcyB2YWxpZGF0aW9uIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIGluIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGZpeGVzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlIHdoZW4gY29uZmlndXJpbmcgZmlsdGVycyBvbiBhbiBpbnRlcmZhY2UgYmFja2VkIGJ5IHRoZSBzdG1tYWMgZHJpdmVyLiBUaGUgc3RtbWFjIGRyaXZlciBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gVGhlcmVmb3JlLCBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc1NGEyYTdjZjYzYmVmYjkyOTVkNGFmOWE3MTQ2NGU1MWZmN2I5NzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNzowMzoxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuY1xuaW5kZXggZjAyYjQzNGJiZDUwNWIuLjUyMDU0ZjMxMzc2ZDUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmNcbkBAIC0xMzcwLDM2ICsxMzcwLDQwIEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcbiBcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRQRU4wO1xuIFx0fVxuIFxuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0U1BNMCB8IFhHTUFDX0w0U1BJTTApO1xuLVx0dmFsdWUgXHUwMDI2PSB+KFhHTUFDX0w0RFBNMCB8IFhHTUFDX0w0RFBJTTApO1xuIFx0aWYgKHNhKSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0U1BNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNFNQSU0wO1xuK1x0XHRlbHNlXG4rXHRcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUElNMDtcbiBcdH0gZWxzZSB7XG4gXHRcdHZhbHVlIHw9IFhHTUFDX0w0RFBNMDtcbiBcdFx0aWYgKGludilcbiBcdFx0XHR2YWx1ZSB8PSBYR01BQ19MNERQSU0wO1xuK1x0XHRlbHNlXG4rXHRcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUElNMDtcbiBcdH1cbiBcbiBcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MM0w0X0NUUkwsIHZhbHVlKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRpZiAoc2EpIHtcbi1cdFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0U1AwLCBtYXRjaCk7XG4rXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfcmVhZChodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCBcdTAwMjZ2YWx1ZSk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuIFxuLVx0XHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdHJldHVybiByZXQ7XG4rXHRpZiAoc2EpIHtcbitcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDRTUDA7XG4rXHRcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDRTUDAsIG1hdGNoKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNERQMCwgbWF0Y2gpO1xuLVxuLVx0XHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuLVx0XHRpZiAocmV0KVxuLVx0XHRcdHJldHVybiByZXQ7XG4rXHRcdHZhbHVlIFx1MDAyNj0gflhHTUFDX0w0RFAwO1xuK1x0XHR2YWx1ZSB8PSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4gXHR9XG4gXG4rXHRyZXQgPSBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDRfQUREUiwgdmFsdWUpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdGlmICghZW4pXG4gXHRcdHJldHVybiBkd3hnbWFjMl9maWx0ZXJfd3JpdGUoaHcsIGZpbHRlcl9ubywgWEdNQUNfTDNMNF9DVFJMLCAwKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXG5pbmRleCBkNzg2NTI3MTg1OTk5ZC4uMTRjYWJlNzZlNTNlYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcbkBAIC00NDYsNiArNDQ2LDcgQEAgc3RhdGljIGludCB0Y19wYXJzZV9mbG93X2FjdGlvbnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIH1cbiBcbiAjZGVmaW5lIEVUSEVSX1RZUEVfRlVMTF9NQVNLXHRjcHVfdG9fYmUxNih+MClcbisjZGVmaW5lIElQX1BST1RPX0ZVTExfTUFTS1x0MHhGRlxuIFxuIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdCAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscyxcbkBAIC00NjEsNiArNDYyLDM3IEBAIHN0YXRpYyBpbnQgdGNfYWRkX2Jhc2ljX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFxuIFx0Zmxvd19ydWxlX21hdGNoX2Jhc2ljKHJ1bGUsIFx1MDAyNm1hdGNoKTtcbiBcbitcdC8qIEJvdGggbmV0d29yayBwcm90byBhbmQgdHJhbnNwb3J0IHByb3RvIG5vdCBwcmVzZW50IGluIHRoZSBrZXkgKi9cbitcdGlmICghbWF0Y2gubWFzayB8fCAhKG1hdGNoLm1hc2stXHUwMDNlbl9wcm90byB8fCBtYXRjaC5tYXNrLVx1MDAzZWlwX3Byb3RvKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4rXHRcdFx0XHQgICBcImZpbHRlciBtdXN0IHNwZWNpZnkgbmV0d29yayBvciB0cmFuc3BvcnQgcHJvdG9jb2xcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdC8qIElmIHRoZSBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBmdWxsIG1hc2sgKi9cbitcdGlmICgobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gIT0gRVRIRVJfVFlQRV9GVUxMX01BU0spIHx8XG4rXHQgICAgKG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gXHUwMDI2XHUwMDI2IG1hdGNoLm1hc2stXHUwMDNlaXBfcHJvdG8gIT0gSVBfUFJPVE9fRlVMTF9NQVNLKSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoY2xzLVx1MDAzZWNvbW1vbi5leHRhY2ssXG4rXHRcdFx0XHQgICBcIm9ubHkgZnVsbCBwcm90b2NvbCBtYXNrIGlzIHN1cHBvcnRlZFwiKTtcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0fVxuK1xuK1x0LyogTmV0d29yayBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBJUHY0ICovXG4rXHRpZiAobWF0Y2gubWFzay1cdTAwM2VuX3Byb3RvIFx1MDAyNlx1MDAyNiBtYXRjaC5rZXktXHUwMDNlbl9wcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9JUCkpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJvbmx5IElQdjQgbmV0d29yayBwcm90b2NvbCBpcyBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbitcdC8qIFRyYW5zcG9ydCBwcm90byBpcyBwcmVzZW50IGluIHRoZSBrZXkgYW5kIGlzIG5vdCBUQ1Agb3IgVURQICovXG4rXHRpZiAobWF0Y2gubWFzay1cdTAwM2VpcF9wcm90byBcdTAwMjZcdTAwMjZcbitcdCAgICBtYXRjaC5rZXktXHUwMDNlaXBfcHJvdG8gIT0gSVBQUk9UT19UQ1AgXHUwMDI2XHUwMDI2XG4rXHQgICAgbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvICE9IElQUFJPVE9fVURQKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChjbHMtXHUwMDNlY29tbW9uLmV4dGFjayxcbitcdFx0XHRcdCAgIFwib25seSBUQ1AgYW5kIFVEUCB0cmFuc3BvcnQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRcIik7XG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbitcdH1cbitcbiBcdGVudHJ5LVx1MDAzZWlwX3Byb3RvID0gbWF0Y2gua2V5LVx1MDAzZWlwX3Byb3RvO1xuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTU5OCw2ICs2MzAsOCBAQCBzdGF0aWMgaW50IHRjX2FkZF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0cmV0ID0gdGNfZmxvd19wYXJzZXJzW2ldLmZuKHByaXYsIGNscywgZW50cnkpO1xuIFx0XHRpZiAoIXJldClcbiBcdFx0XHRlbnRyeS1cdTAwM2Vpbl91c2UgPSB0cnVlO1xuK1x0XHRlbHNlIGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGlmICghZW50cnktXHUwMDNlaW5fdXNlKVxuQEAgLTYyNyw2ICs2NjEsNyBAQCBzdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGVudHJ5LVx1MDAzZWluX3VzZSA9IGZhbHNlO1xuIFx0ZW50cnktXHUwMDNlY29va2llID0gMDtcbiBcdGVudHJ5LVx1MDAzZWlzX2w0ID0gZmFsc2U7XG4rXHRlbnRyeS1cdTAwM2VhY3Rpb24gPSAwO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoxNy40NzUwMTY3OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ5Nzc2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciDigJMgdGhhdCdzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIDEwLzEwMC8xMDAwL0VRT1MgdmFyaWFudHMuIEkgY2FuIHNlZSB0aGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiBgZHd4Z21hYzJfY29yZS5jYCBhbmQgYHN0bW1hY190Yy5jYCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBhbmQgdGhlIHRyYWZmaWMgY29udHJvbCAoVEMpIHJlbGF0ZWQgZnVuY3Rpb25zOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBhbmQgYHRjX2RlbF9mbG93YC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhpcyBsb29rcyBsaWtlIHRoZXkncmUgd29ya2luZyBvbiBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuVGhlIG1haW4gdGFrZWF3YXkgc2VlbXMgdG8gYmUgYSBjb3VwbGUgb2Yga2V5IG1vZGlmaWNhdGlvbnMuIFRoZXkncmUgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIGZvciBuZXR3b3JrIGFuZCB0cmFuc3BvcnQgcHJvdG9jb2xzIHdpdGhpbiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLiBUaGF0J3MgZ29vZCwgYWx3YXlzIGEgcGx1cyB0byBoYXZlIG1vcmUgcm9idXN0IGVycm9yIGNoZWNraW5nLCBhbmQgbWFrZXMgbWUgdGhpbmsgdGhleSdyZSBsaWtlbHkgdHJ5aW5nIHRvIHByZXZlbnQgc29tZSBwb3RlbnRpYWwgY29ybmVyIGNhc2UgaXNzdWVzLCBvciBwZXJoYXBzIGFkZGluZyBzdXBwb3J0IGZvciBuZXcgcHJvdG9jb2wgbWF0Y2hpbmcuIFRoZXkndmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCwgd2hpY2ggc3VnZ2VzdHMgdGhleSd2ZSBmb3VuZCBhbmQgZml4ZWQgc29tZSBwb3RlbnRpYWwgbG9naWNhbCBlcnJvcnMuXG5cbkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBzdG1tYWNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgbGluZSB0byBwcm9wZXJseSBhc3NlcyB0aGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjI1LjAyNDc5NTE3N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDcwNTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI5PWNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzQ6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1LVxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz02MD1jb25maWcgRFdNQUNfQU5BUklPTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjY3OlxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTc4PWNvbmZpZyBEV01BQ19JTkdFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6ODY6XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODctXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTkwPWNvbmZpZyBEV01BQ19JUFE4MDZYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTg6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTktXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMTQ9Y29uZmlnIERXTUFDX01FRElBVEVLXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMDpcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTEyMj1jb25maWcgRFdNQUNfTUVTT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTI5LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzA6XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIE1lc29uNixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzMS1cXHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xMzM9Y29uZmlnIERXTUFDX05VVk9UT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQxLVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0MjpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoZSBudXZvdG9uLWR3bWFjIGRyaXZlciBpc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQzLVxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTQ1PWNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTItXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFF1YWxjb21tIEVUSFFPUyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTUzOlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xNTU9Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTY0OlxcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2NS1cXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTY4PWNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNzYtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTc3OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTc5PWNvbmZpZyBEV01BQ19SWk4xXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4Ny1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg4OlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIHN1cHBvcnQgY2FuIG1ha2UgdXNlIG9mIGEgY3VzdG9tIE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTg5LVxcdCAgY29udmVydGVyIFBDUyBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE5MT1jb25maWcgRFdNQUNfUzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5ODpcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTk5LVxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yMDM9Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE0LVxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTU6XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE2LVxcdCAgYXJyaWE1IGFuZCBjeWNsb25lNSBGUEdBIFNvQ3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIxOD1jb25maWcgRFdNQUNfU09QSEdPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIyNS1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIyNjpcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI3LVxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjI5PWNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzctXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjM4OlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMzktXFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjQxPWNvbmZpZyBEV01BQ19TVEFSRklWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDktXFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjUwOlxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTEtXFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjUzPWNvbmZpZyBEV01BQ19TVElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjYxOlxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNjItXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNjU9Y29uZmlnIERXTUFDX1NUTTMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI3MzpcXHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzQtXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RNMzIgc2VyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI3Nz1jb25maWcgRFdNQUNfU1VOWElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg0LVxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4NTpcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODYtXFx0ICBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI4OD1jb25maWcgRFdNQUNfU1VOOElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk2LVxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5NzpcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjk4LVxcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMDA9Y29uZmlnIERXTUFDX1NVTjU1SVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDgtXFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzA5OlxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzEwLVxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zMTI9Y29uZmlnIERXTUFDX1RIRUFEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxOC1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgVC1IRUFEIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMxOTpcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzIwLVxcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzMDpcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMxLVxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgaS5NWDggc2VyaWVzIGxpa2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzM0PWNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0MC1cXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzQxOlxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0Mi1cXHQgIFNvQy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzQ0PWNvbmZpZyBEV01BQ19MT09OR1NPTjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzUxOlxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTItXFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM1NT1jb25maWcgRFdNQUNfVEVHUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzYwLVxcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2MTpcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzYyLVxcdCAgZGV2aWNlcy5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzY6XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzc4PWNvbmZpZyBEV01BQ19JTlRFTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODUtXFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4NjpcXHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zODg9Y29uZmlnIERXTUFDX0xPT05HU09OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5NC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozOTU6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTYtXFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9NDA3PWNvbmZpZyBTVE1NQUNfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxMi1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MTM6XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQxNC1cXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoyNS4wODk1MDQ2NjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk1Mzc3NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gYXBwZWFycyB0byBiZSBgU1RNTUFDX0VUSGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhpcyBpcyBhY3R1YWxseSBjb250cm9sbGluZy4gVGhpcyBtZWFucyB0aGUgZmlyc3QgdGhpbmcgSSdsbCBkbyBpcyBpbW1lZGlhdGVseSBqdW1wIHRvIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIGltcGxpY2F0aW9ucy4gS25vd2luZyB3aGF0IGl0IGdvdmVybnMgaXMgY3J1Y2lhbCB0byB0aGUgd2hvbGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDI0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDM6MjcuNzg0ODg0ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjY5MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzoyNy44NDE1NjEwMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjkyMjIzMDMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVHJhZmZpYyBDb250cm9sIFBhdGNoIGZvciB0aGUgU1RNTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRjX2FkZF9iYXNpY19mbG93YCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNfdGMuY2AgZmlsZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBvciBub3QgdGhpcyBgc3RtbWFjX3RjLmNgIGZpbGUgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsIHdoZW4gdGhlIGBTVE1NQUNfRVRIYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgYXZhaWxhYmxlIGJlY2F1c2UgaWYgaXQgaXNuJ3QsIHRoZSBwYXRjaCdzIGltcGFjdCBiZWNvbWVzIGEgbG90IG1vcmUgbGltaXRlZCwgYW5kIG1pZ2h0IGluZGljYXRlIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZyBvcHRpb25zLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjAzOjUwLjc2Mzc5MzEzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTAxNDA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNy1cXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4OlxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowMzo1MC44MjI4MTMzOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjQzMTcyMTg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU1RNTUFDIE9mZmxvYWQgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIGl0cyBoYXJkd2FyZSBvZmZsb2FkIGNhcGFiaWxpdGllcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIGB0Y2AgYW5kIG5ldGxpbmsgdHJhZmZpYyBjb250cm9sLiBJIHNlZSB0aGF0IGBzdG1tYWNfdGMub2AgYW5kIGBkd3hnbWFjMl9jb3JlLm9gIGFyZSBpbmNsdWRlZCB3aGVuIGBTVE1NQUNfRVRIYCBpcyBlbmFibGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkknbSBub3cgZGlnZ2luZyBpbnRvIHRoZSBjaGFuZ2VzIGluIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBsb2dpYyBmb3IgYWRkaW5nIHRoZXNlIGJhc2ljIGZpbHRlcnMgcmVzaWRlcy4gVGhlIGNvZGUgaXMgY2xlYXJseSBpbXBvc2luZyByZXN0cmljdGlvbnMgb24gdGhlIGtpbmRzIG9mIGZpbHRlcnMgaXQgc3VwcG9ydHMgZm9yIG9mZmxvYWQ6IGl0J3MgY2hlY2tpbmcgZm9yIGNlcnRhaW4gcHJvdG9jb2wgbWF0Y2hlcy4gSXQgbG9va3MgbGlrZSB0aGUgY29kZSBub3cgZXhwbGljaXRseSBjaGVja3MgdG8gZW5zdXJlIGVpdGhlciBhIG5ldHdvcmsgb3IgdHJhbnNwb3J0IHByb3RvY29sIGlzIHByZXNlbnQsIGFuZCBpdCAqcmVxdWlyZXMqIGEgZnVsbCBtYXNrIGlmIGEgcHJvdG9jb2wgaXMgZGVmaW5lZC4gSWYgYSBuZXR3b3JrIHByb3RvY29sIGlzIHByZXNlbnQgaW4gdGhlIGZpbHRlciwgaXQgKm11c3QqIGJlIElQdjQuIEZ1cnRoZXJtb3JlLCBpZiBhIHRyYW5zcG9ydCBwcm90b2NvbCBpcyBwcmVzZW50LCBpdCAqbXVzdCogYmUgZWl0aGVyIFRDUCBvciBVRFAuXG5cblRoaXMgd2hvbGUgYXJlYSBpcyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggdGhlIGB0Y2AgaW50ZXJmYWNlLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSB0aGVzZSBvZmZsb2FkIGZpbHRlcnMuIEJ1dCBub3cgSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHZpcnR1YWxpemF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXZlbiBhdmFpbGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IGl0ICphbHNvKiBoYXMgUENJIHN1cHBvcnQgKGBTVE1NQUNfUENJYCkuIFRoYXQncyBwcm9taXNpbmcuXG5cbkxldCBtZSBjb25maXJtIGlmIGBTVE1NQUNfUENJYCBpcyBlbmFibGVkLCBvciBjb3VsZCBiZSBlbmFibGVkLiBBbHJpZ2h0LCBpdCAqaXMqIGEgUENJIGRyaXZlciwgc28gdGhhdCBpbmNyZWFzZXMgdGhlIGNoYW5jZXMuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY2AgdG8gdW5kZXJzdGFuZCB0aGUgUENJIHNwZWNpZmljIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc3MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDowNy4yNTQ1MzY4ODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4OTc3MjE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MDcuMzEzNTM5OTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzQwNzUyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX3BjaS5jYCBDb2RlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgU1RNTUFDIGRyaXZlcidzIFBDSSBpbXBsZW1lbnRhdGlvbi4gV2hhdCBhcmUgdGhlIGtleSBpbml0aWFsaXphdGlvbiBzdGVwcz8gSG93IGRvZXMgaXQgaGFuZGxlIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbj8gQXJlIHRoZXJlIGFueSBub3RhYmxlIGRpZmZlcmVuY2VzIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cyBjb21wYXJlZCB0byB0aGUgZ2VuZXJpYyBTVE1NQUMgY29yZT8gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIHRoZSBQQ0kgc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRldmljZSBJRCB0YWJsZSwgdGhlIHByb2JlIGFuZCByZW1vdmUgZnVuY3Rpb25zIGFuZCBob3cgdGhlIGludGVycnVwdHMgYXJlIGJlaW5nIGhhbmRsZWQuIFVuZGVyc3RhbmRpbmcgdGhpcyBjb2RlIGJhc2UgaXMgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBkZWVwZXIgaW52ZXN0aWdhdGlvbiBJIG5lZWQgdG8gZG8gaGVyZSwgb3IgaW4gdGhpcyBzcGVjaWZpYyBhcmVhLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg2MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjEwLjc0NzYxNzM5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2ODgzMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjMyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyMzM6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM2My1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00Nzk9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0OTg6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NTc4PXN0YXRpYyB2b2lkIGxvb25nc29uX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVxcdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXFx1MDAyNmxvb25nc29uX2dtYWNfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjgtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDoxMC44MDQzMTAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc5MjE0NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIFRoYXQgYHRjX2FkZF9iYXNpY19mbG93YCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYW5kIEkgc2VlIGl0IGhhcyBQQ0kgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoZSBgZHdtYWMtaW50ZWwuY2AsIGBkd21hYy1sb29uZ3Nvbi5jYCwgYGR3bWFjLW1vdG9yY29tbS5jYCwgYW5kIGBzdG1tYWNfcGNpLmNgIGZpbGVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBiZWNhdXNlIFN5emthbGxlciBjYW4sIG9mIGNvdXJzZSwgZnV6eiBQQ0kgZGV2aWNlcywgdXNpbmcgdGhhdCB2aXJ0dWFsIFBDSSBpbmplY3Rpb24gY2FwYWJpbGl0eS4gSSBjYW4gc2VlIGl0IHdvcmtpbmcsIGZvciBleGFtcGxlLCB0aHJvdWdoIGBzeXpfcGNpX2RldmljZV9hZGRgLiBTbywgdGhlIGNvZGUncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IC0gdGhhdOKAmXMga2V5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHRvdWNoaW5nIGB0Y19hZGRfYmFzaWNfZmxvd2AuIFRoYXTigJlzIGNhbGxlZCB3aGVuIGEgVEMgZmxvd2VyIGZpbHRlciBpcyBhZGRlZC4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIGNhbGwgY2hhaW4sIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgY2FsbGVkIGJ5IGB0Y19hZGRfZmxvd2AuIFRoZW4gYHRjX2FkZF9mbG93YCBpcyBjYWxsZWQgYnkgYHN0bW1hY19zZXR1cF90Y19jbHNfZmxvd2VyYC4gVGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2JgLCB3aGljaCwgZnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRyaWdnZXJzIHdoZW4gY29uZmlndXJpbmcgYSBUQyBibG9jayBvbiB0aGUgaW50ZXJmYWNlLlxuXG5SaWdodCwgSSdtIGdvaW5nIHRvIGRvdWJsZSBjaGVjayB0aGF0IGNhbGwgY2hhaW4gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBzdGVwLCBidXQgdGhhdCBsb29rcyBsaWtlIGEgdmFsaWQgcGF0aCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MTUuNTgzNTI2NDk2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEyNjk1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfYWRkX2Zsb3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9NjAyPXN0YXRpYyBzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNjEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjYxMTpzdGF0aWMgaW50IHRjX2FkZF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTItXFx0XFx0ICAgICAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04MzE9c3RhdGljIGludCB0Y19kZWxfZXRodHlwZV9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo4Njc6c3RhdGljIGludCB0Y19hZGRfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg2OC1cXHRcXHRcXHQgICBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg3MjpcXHRyZXQgPSB0Y19hZGRfZmxvdyhwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTg3My1cXHRpZiAoIXJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg5OT1zdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDktXFx0Y2FzZSBGTE9XX0NMU19SRVBMQUNFOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjkxMDpcXHRcXHRyZXQgPSB0Y19hZGRfZmxvd19jbHMocHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MTEtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjE1LjkxNDgwMTM2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkyNDQwNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZWx2aW5nIGludG8gVHJhZmZpYyBDb250cm9sIEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSB0cmFmZmljIGNvbnRyb2wgc2V0dXAgZm9yIHRoaXMgc3RtbWFjIGRyaXZlci4gTG9va3MgbGlrZSB0aGUgYHRjX3NldHVwX2Nsc2AgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tLiBBaCwgeWVzLCBpdCdzIGNhbGxlZCBmcm9tIGBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2JgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIFRoYXQgZnVuY3Rpb24gbXVzdCBiZSB0aGUgY2FsbGJhY2sgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRyYWZmaWMgY29udHJvbCBibG9jay4gVGhpcyBtYWtlcyBzZW5zZTsgaXQncyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIGhpZ2gtbGV2ZWwgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yayBhbmQgdGhlIGxvdy1sZXZlbCBzcGVjaWZpY3Mgb2YgdGhlIHN0bW1hYyBoYXJkd2FyZS4gU28gSSBuZWVkIHRvIGdvIGRlZXBlciB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGNhbGwgc2V0cyB1cCB0aGUgc3RtbWFjIGRyaXZlciBpbiBvcmRlciB0byBjb250cm9sIGVncmVzcyB0cmFmZmljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyMywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjE5LjEwNzI0NDU0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4ODYzMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfc2V0dXBfY2xzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTIwOT1zdGF0aWMgaW50IHRjX2RlbGV0ZV9rbm9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MjE5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzX3UzMihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMjIwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfY2xzX3UzMl9vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz04ODM9c3RhdGljIGludCB0Y19kZWxfZmxvd19jbHMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg5OTpzdGF0aWMgaW50IHRjX3NldHVwX2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtOTAwLVxcdFxcdFxcdHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzA0PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNF90Y19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNS1cXHQuaW5pdCA9IHRjX2luaXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwNjpcXHQuc2V0dXBfY2xzX3UzMiA9IHRjX3NldHVwX2Nsc191MzIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMwNy1cXHQuc2V0dXBfY2JzID0gdGNfc2V0dXBfY2JzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMDg6XFx0LnNldHVwX2NscyA9IHRjX3NldHVwX2NscyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA5LVxcdC5zZXR1cF90YXByaW8gPSB0Y19zZXR1cF90YXByaW9fd2l0aG91dF9mcGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz0xMzE1PWNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzIGR3bWFjNTEwX3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE2LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE3OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzE4LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMxOTpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMjAtXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MTkuMTY5MTM1ODkxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTI1NjYzNTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29kZSBNb2RpZmljYXRpb25zKipcblxuUmlnaHQsIHNvIEkgc2VlIGB0Y19zZXR1cF9jbHNgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBib3RoIGBkd21hYzRfdGNfb3BzYCBhbmQgYGR3bWFjNTEwX3RjX29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBub3cgZnVuZGFtZW50YWwgdG8gdGhlIHRyYWZmaWMgY29udHJvbCBzZXR1cCBmb3IgYm90aCB0aGUgRFdDIE1BQyA0IGFuZCA1MTAgSVAgY29yZXMuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgVEMgbWVjaGFuaXNtIGlzIGJlaW5nIHVwZGF0ZWQsIG9yIHBlcmhhcHMgYSBuZXcgY2FwYWJpbGl0eSBpcyBiZWluZyBpbnRlZ3JhdGVkIGF0IHRoYXQgbGV2ZWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHRjX3NldHVwX2Nsc2AgYWN0dWFsbHkgKmRvZXMqIHdpdGhpbiB0aG9zZSBjb250ZXh0cywgc3BlY2lmaWNhbGx5IGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIG9yIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UgaXMuXG5cbkZ1cnRoZXJtb3JlLCBJJ20gbm90aW5nIHRoZSBtb2RpZmljYXRpb24gdG8gYGR3eGdtYWMyX2NvcmUuY2AuIFRoaXMgZmlsZSBjb250YWlucyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIE5vdywgYSBMZXZlbCA0IGZpbHRlciBjb25maWd1cmF0aW9uIGlzIGEgcHJldHR5IHNwZWNpZmljIHRoaW5nLiBUeXBpY2FsbHksIHRoaXMgd291bGQgYmUgcmVsYXRlZCB0byBUQ1AvVURQIHBvcnQtYmFzZWQgZmlsdGVyaW5nLiBUaGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdG91Y2hlZCAqYWxvbmdzaWRlKiB0aGUgdHJhZmZpYyBjb250cm9sIHNldHVwIHN1Z2dlc3RzIHRoZXJlIG1pZ2h0IGJlIGFuIGludGVycGxheSBoYXBwZW5pbmcuIE1heWJlIHRoZSBMNCBmaWx0ZXIgaXMgYmVpbmcgYWRqdXN0ZWQgYXMgcGFydCBvZiBhIG1vcmUgY29tcHJlaGVuc2l2ZSBUQyBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIHRoZSBMNCBmaWx0ZXJpbmcgaXMgbm93IGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIFRDIGZyYW1ld29yay4gSW4gYW55IGNhc2UsIEkgbmVlZCB0byBzZWUgaG93IGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBpcyBiZWluZyBjYWxsZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY2FsbHMgdG8gIGB0Y19zZXR1cF9jbHNgLiBJIHdhbnQgdG8gc2VlIGlmIHRoZSBjaGFuZ2VzIGFyZSBhZGRpbmcgbmV3IFRDIGNhcGFiaWxpdGllcywgb3IgaWYgdGhleSBhcmUganVzdCBhZmZlY3RpbmcgaG93IHRoZSBzeXN0ZW0gaXMgb3JnYW5pemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzYyNiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjMxLjY5NDgwMjAzNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODg4NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXFx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDY2OlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTUyMTpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXFx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6MzEuOTEyNjk2NTQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NTg1Njc1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWVzc2luZyB3aXRoIGNvcmUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYHN0bW1hY19vcHNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBvZmZsb2FkIGZvciBUQyBmaWx0ZXJzLiBUaGUga2V5IGNoYW5nZXMgYXJlIGluIGB0Y19hZGRfYmFzaWNfZmxvd2Agd2l0aCBhZGRlZCB2YWxpZGF0aW9uIGFuZCBiaXR3aXNlIG9wZXJhdGlvbiBmaXhlcyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBXZSdyZSBsb29raW5nIGF0OiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBTaW5jZSBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIHN0YXRpYywgdGhhdCBkb2Vzbid0IGNoYW5nZSB0aGUgbGlzdCwgdGhhbmtmdWxseS4gV2UnbGwgYmUgZm9jdXNpbmcgb24gaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLlxuXG5Ob3csIGZvciBjb25maWcgZGVwZW5kZW5jaWVzLi4uIGBTVE1NQUNfRVRIYCBpcyBvYnZpb3VzbHkgZXNzZW50aWFsLiBUbyBtYWtlIGZ1enppbmcgZWFzaWVyLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGBTVE1NQUNfUENJYCBsb29rcyBsaWtlIHRoZSB3YXkgdG8gZ28gZm9yIFBDSSBzdXBwb3J0LiBIYW5nIG9uLi4uIGFyZSB0aGVyZSBhbnkgc3ViLWRlcGVuZGVuY2llcz8gSSBuZWVkIHRvIGNoZWNrIGlmIGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIG9yIGBEV01BQ19NT1RPUkNPTU1gIGFyZSB0aWVkIHRvIHNwZWNpZmljIFBDSSBJRHMuIEdvdHRhIGRvdWJsZS1jaGVjayBgU1RNTUFDX1BDSWAgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjQwLjU3MTI2NTkxN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzMxNzQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjQxLjcyODU5MTAyMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMwNDIwNjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgRHJpdmVyJ3MgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIGp1c3QgdGhlIGBTVE1NQUNfUENJYCBpZGVudGlmaWVyIGlzIHN1ZmZpY2llbnQgZm9yIHdoYXQgSSdtIHdvcmtpbmcgb24uIExldCBtZSBsb29rIGludG8gdGhlIGBzdG1tYWNfcGNpLmNgIGZpbGU7IGl0IHNlZW1zIHRoYXQncyB3aGVyZSB0aGUgUENJIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVucy4gQWgsIHRoZXJlIGl0IGlzIOKAkyBgc3RtbWFjX2lkX3RhYmxlYC4gUmlnaHQsIHRoaXMgdXNlcyBgUENJX0RFVklDRV9EQVRBYCB3aXRoIGBTVE1NQUNgLCBhbmQgYSBzcGVjaWZpYyBkYXRhIHBvaW50ZXIgdG8gYFx1MDAyNnN0bW1hY19wY2lfaW5mb2AuIEludGVyZXN0aW5nLiBOb3csIHRoYXQgYFNUTU1BQ2AgdmVuZG9yIElE4oCmIGl0J3MgYDB4MTE2NmAuIFRoYXQncyBub3QgYSBCcm9hZGNvbSBJRCwgd2hpY2ggaXMgd2hhdCBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBtaWdodCBiZSBTeW5vcHN5cywgb3Igb25lIG9mIHRoZSBvdGhlciB2ZW5kb3JzIHVzaW5nIHRoYXQgY29yZS4gVG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBQQ0lfVkVORE9SX0lEX1NUTU1BQ2AgdG8gY29uZmlybSBteSBzdXNwaWNpb24gYW5kIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyB2ZW5kb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NDQyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjUyLjAzMjgwMDU0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NzYzNDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfVkVORE9SX0lEX1NUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDQ6NTIuMjIyNTcxNjU1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODUyOTYyODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQQ0kgTGFuZHNjYXBlIGluIGBzdG1tYWNfcGNpLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgZGV2aWNlIGRhdGEgaXMgaGFuZGxlZCBpbiB0aGUgYHN0bW1hY19wY2kuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIGNoZWNrIGZvciBgUENJX0RFVklDRV9EQVRBYC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGRyaXZlciBjb25maWd1cmVzIGFuZCBpbnRlcmFjdHMgd2l0aCB0aGUgU1RNTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIgd2hlbiBpdCdzIGNvbm5lY3RlZCB0aHJvdWdoIGEgUENJIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGRyaXZlciBkZXRlY3RzIHRoZSBkZXZpY2UsIGhvdyBpdCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIHF1aXJrcywgaWYgYW55LiBJIGFudGljaXBhdGUgdGhlcmUgbWlnaHQgYmUgc29tZSBjb25kaXRpb25hbCBsb2dpYyBhcm91bmQgdGhlIGBQQ0lfREVWSUNFX0RBVEFgIHVzYWdlLCBsaWtlbHkgdGllZCB0byBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBvciBwb3RlbnRpYWxseSBsZWdhY3kgUENJIGNvbXBhdGliaWxpdHkuIFRoZXJlZm9yZSwgdGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgxNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA0OjU3LjQwNzg3MDU1MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDc5NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfREFUQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA2OlxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNy1cXHR7fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNDo1Ny42MjczNTUyOTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE2MjE3ODA5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZWNpcGhlcmluZyB0aGUgTmVjZXNzYXJ5IEtlcm5lbCBDb25maWd1cmF0aW9ucyBmb3IgTmV0d29yayBPZmZsb2FkaW5nKipcblxuUmlnaHQsIHNvIEknbSBwcmV0dHkgc3VyZSBgU1RNTUFDX1BDSWAgaXMgdGhlIGtleSB0byBnZXR0aW5nIGEgUENJIGRldmljZSB0aGF0IGxldmVyYWdlcyB0aGUgYHN0bW1hY2AgZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCBhYm91dCBzdXBwb3J0IGZvciBUcmFmZmljIENvbnRyb2wgKFRDKSBmbG93ZXIgb2ZmbG9hZD8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhhdCBjb3ZlcmVkLiBJIHRoaW5rIGBORVRfU0NIX0ZMT1dFUmAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGF0LCB5ZWFoPyBPa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgYmVjYXVzZSBpZiBJIG5lZWQgaXQsIEknbGwgbmVlZCB0byBlbmFibGUgaXQuIFdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aGVuIGRlYWxpbmcgd2l0aCBgRkxPV19DTFNfRkxPV0VSYC4gQWgsIHllcyEgTGV0J3MgY2hlY2sgYHRjX2FkZF9mbG93YCBmb3IgZ29vZCBtZWFzdXJlLiBUaGF0IHNob3VsZCBjbGFyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpcm0gSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGZvciB0aGUgVEMgZmxvd2VyIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSBJJ20gYWZ0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzI2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MTkuMjQ5MTM4ODA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjM5ODIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19hZGRfZmxvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYz02MDI9c3RhdGljIHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NjExOnN0YXRpYyBpbnQgdGNfYWRkX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTYxMi1cXHRcXHQgICAgICAgc3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTgzMT1zdGF0aWMgaW50IHRjX2RlbF9ldGh0eXBlX2Zsb3coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjg2NzpzdGF0aWMgaW50IHRjX2FkZF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODY4LVxcdFxcdFxcdCAgIHN0cnVjdCBmbG93X2Nsc19vZmZsb2FkICpjbHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODcyOlxcdHJldCA9IHRjX2FkZF9mbG93KHByaXYsIGNscyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtODczLVxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9ODk5PXN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTkwOS1cXHRjYXNlIEZMT1dfQ0xTX1JFUExBQ0U6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6OTEwOlxcdFxcdHJldCA9IHRjX2FkZF9mbG93X2Nscyhwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTkxMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MTkuMzE1NTQyOThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM1NDI3MTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBgdGNfc2V0dXBfY2xzYCBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHdoZXJlIGB0Y19zZXR1cF9jbHNgIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjYWxsIHN0YWNrLiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGludm9rZWQgZnJvbSwgYW5kIHdoYXQncyB0aGUgY29udGV4dCBzdXJyb3VuZGluZyBlYWNoIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgSSBtaWdodCBtYWtlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGFib3V0IHRyYWNpbmcgdGhlIGNvbnRyb2wgZmxvdyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNToyNy42Njk4MTgyMDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDIyMjg3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19zZXR1cF9jbHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MjA5PXN0YXRpYyBpbnQgdGNfZGVsZXRlX2tub2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoyMTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHNfdTMyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg4Mz1zdGF0aWMgaW50IHRjX2RlbF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODk5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXFx0XFx0XFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzA2OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDktXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMTU9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM1MTBfdGNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXFx0LmluaXQgPSB0Y19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMTc6XFx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXFx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5OlxcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMyMC1cXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNToyNy44NzQwNDcyNTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0OTIxOTAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgYHN0bW1hY190Y19vcHNgIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgc3RtbWFjX3RjX29wc2Agc3RydWN0dXJlIGFnYWluLiBJIHNlZSBgdGNfc2V0dXBfY2xzYCBpcyBiZWluZyB1c2VkIHdpdGhpbiBpdC4gTm93LCB0aGUgbmFtZSBcInRjXFxfc2V0dXBcXF9jbHNcIiBpcyB0aHJvd2luZyBtZS4gSXQgbG9va3MgbGlrZSBpdCdzIG1lYW50IHRvIHJlbGF0ZSB0byBgc2V0dXBfY2xzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIHJlbGF0ZS4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzZXR1cF9jbHNgIGl0c2VsZiBnZXQgaW52b2tlZD8gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZyB3aXRoaW4gdGhpcyBzZXR1cCBtZWNoYW5pc20uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgb3ZlcmFsbCBjb250ZXh0IG9mIHRoaXMgaW1wbGVtZW50YXRpb24uIEtub3dpbmcgdGhpcyBpbnZvY2F0aW9uIHBvaW50IGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI4MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjMxLjIyMzI2ODMzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0OTEyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0dXBfY2xzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9NTY3PXN0cnVjdCBzdG1tYWNfdGNfb3BzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTY4LVxcdGludCAoKmluaXQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU2OTpcXHRpbnQgKCpzZXR1cF9jbHNfdTMyKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTU3MC1cXHRcXHRcXHQgICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTcyLVxcdFxcdFxcdCBzdHJ1Y3QgdGNfY2JzX3FvcHRfb2ZmbG9hZCAqcW9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjU3MzpcXHRpbnQgKCpzZXR1cF9jbHMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTc0LVxcdFxcdFxcdCBzdHJ1Y3QgZmxvd19jbHNfb2ZmbG9hZCAqY2xzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01ODYtXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgdGMsIGluaXQsIF9fYXJncylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTg3OiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2Nsc191MzIoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTg4OlxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jbHNfdTMyLCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTU4OS0jZGVmaW5lIHN0bW1hY190Y19zZXR1cF9jYnMoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNTkwLVxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIHRjLCBzZXR1cF9jYnMsIF9fYXJncylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6NTkxOiNkZWZpbmUgc3RtbWFjX3RjX3NldHVwX2NscyhfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo1OTI6XFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgdGMsIHNldHVwX2NscywgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC01OTMtI2RlZmluZSBzdG1tYWNfdGNfc2V0dXBfdGFwcmlvKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzOTg9c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxMC1cXHRjYXNlIFRDX1NFVFVQX0NMU1UzMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0MTE6XFx0XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MTItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDEzLVxcdGNhc2UgVENfU0VUVVBfQ0xTRkxPV0VSOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQxNDpcXHRcXHRyZXQgPSBzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTEwODI9c3RhdGljIGludCBzdG1tYWNfdGVzdF9yeHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTExMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjExNDA6XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nsc191MzIocHJpdiwgcHJpdiwgXFx1MDAyNmNsc191MzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xMTQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1MC1cXHRjbHNfdTMyLmNvbW1hbmQgPSBUQ19DTFNVMzJfREVMRVRFX0tOT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxMTUxOlxcdHN0bW1hY190Y19zZXR1cF9jbHNfdTMyKHByaXYsIHByaXYsIFxcdTAwMjZjbHNfdTMyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTE1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xMzMwPXN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sM2ZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgZHN0LCB1MzIgc3JjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE0MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjE0MDE6XFx0cmV0ID0gc3RtbWFjX3RjX3NldHVwX2Nscyhwcml2LCBwcml2LCBjbHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNDAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQwOS1cXHRjbHMtXFx1MDAzZWNvbW1hbmQgPSBGTE9XX0NMU19ERVNUUk9ZO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNDEwOlxcdHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTQxMS1jbGVhbnVwX3J1bGU6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM9MTQ0OT1zdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbDRmaWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGRzdCwgdTMyIHNyYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0xNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYzoxNTMyOlxcdHJldCA9IHN0bW1hY190Y19zZXR1cF9jbHMocHJpdiwgcHJpdiwgY2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMTUzMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDAtXFx0Y2xzLVxcdTAwM2Vjb21tYW5kID0gRkxPV19DTFNfREVTVFJPWTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MTU0MTpcXHRzdG1tYWNfdGNfc2V0dXBfY2xzKHByaXYsIHByaXYsIGNscyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jLTE1NDItY2xlYW51cF9ydWxlOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM9MjA5PXN0YXRpYyBpbnQgdGNfZGVsZXRlX2tub2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoyMTk6c3RhdGljIGludCB0Y19zZXR1cF9jbHNfdTMyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0yMjAtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jbHNfdTMyX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTg4Mz1zdGF0aWMgaW50IHRjX2RlbF9mbG93X2NscyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy04OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6ODk5OnN0YXRpYyBpbnQgdGNfc2V0dXBfY2xzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy05MDAtXFx0XFx0XFx0c3RydWN0IGZsb3dfY2xzX29mZmxvYWQgKmNscylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMDQ9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM0X3RjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA1LVxcdC5pbml0ID0gdGNfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzA2OlxcdC5zZXR1cF9jbHNfdTMyID0gdGNfc2V0dXBfY2xzX3UzMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy0xMzA3LVxcdC5zZXR1cF9jYnMgPSB0Y19zZXR1cF9jYnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6MTMwODpcXHQuc2V0dXBfY2xzID0gdGNfc2V0dXBfY2xzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMDktXFx0LnNldHVwX3RhcHJpbyA9IHRjX3NldHVwX3RhcHJpb193aXRob3V0X2ZwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTEzMTU9Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgZHdtYWM1MTBfdGNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTYtXFx0LmluaXQgPSB0Y19pbml0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jOjEzMTc6XFx0LnNldHVwX2Nsc191MzIgPSB0Y19zZXR1cF9jbHNfdTMyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTEzMTgtXFx0LnNldHVwX2NicyA9IHRjX3NldHVwX2NicyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzoxMzE5OlxcdC5zZXR1cF9jbHMgPSB0Y19zZXR1cF9jbHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtMTMyMC1cXHQuc2V0dXBfdGFwcmlvID0gdGNfc2V0dXBfdGFwcmlvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozMS4yODQ3NjQ2MTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2ODU2NTk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX1NDSF9GTE9XRVJgIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBmZWF0dXJlIGlzbid0IHdvcmtpbmcgYXMgZXhwZWN0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBORVRfU0NIX0ZMT1dFUmAgc2VlbXMgdG8gYmUgdGhlIGtleSB0byB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSBmcm9tIHVzZXJzcGFjZS4gQnV0LCBoYW5nIG9uLi4uIEkgcmVtZW1iZXIgc2VlaW5nIGBzdG1tYWNfc2VsZnRlc3RzLmNgIHdoaWNoIGNhbGxzIGBzdG1tYWNfdGNfc2V0dXBfY2xzYCBkaXJlY3RseSwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgYE5FVF9TQ0hfRkxPV0VSYCBtaWdodCBub3QgYmUgdGhlICpvbmx5KiB0cmlnZ2VyLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwgdG8gdmVyaWZ5LlxuXG5BaGEhIE5vdyBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TQ0hfRkxPV0VSYCBpcyBleHBsaWNpdGx5IG5lZWRlZCBmb3IgdXNpbmcgdGhlIGB0YyBmaWx0ZXIgYWRkYCBjb21tYW5kIHdpdGggdGhlIGBmbG93ZXJgIGNsYXNzaWZpZXIsIHNwZWNpZmljYWxseSB3aGVuIGNhbGxpbmcgYHN0bW1hY19zZXR1cF90Y19ibG9ja19jYmAuIE9rLCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuIExldCdzIG1ha2Ugc3VyZSBgTkVUX1NDSF9GTE9XRVJgIGlzLCBpbiBmYWN0LCBhIGNvbmZpZ3VyYWJsZSBvcHRpb24uIFllcywgY29uZmlybWVkLCBgQ09ORklHX05FVF9TQ0hfRkxPV0VSYCBleGlzdHMuIEkgd2FzIHdvbmRlcmluZyBpZiBpdCBkZXBlbmRlZCBvbiBgQ09ORklHX05FVF9IV19FWEFDVF9NQVRDSGAgb3Igc29tZXRoaW5nIHJlbGF0ZWQuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYE5FVF9TQ0hfRkxPV0VSYCBpcyB0aGUgbWFpbiBlbmFibGVyLiBJIHNob3VsZCBjb25maXJtIHRoaXMgaW4gdGhlIEtjb25maWcgZmlsZSB0aG91Z2gsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUgbG9vayBhdCBgbmV0L3NjaGVkL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozNi4yNTMzMzI3MDZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzIwMTY1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfRkxPV0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozNi40MzA1NDA3MjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODIzNjYxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBDbHVlOiBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBhIGJpdCBvZiBhIG1lbnRhbCBzaHJ1Zy4gQW5vdGhlciBvbmUgb2YgdGhlc2UgY29uZmlndXJhdGlvbiBzeW1ib2xzLiBXYWl0IGEgc2Vjb25kLi4uIGl0J3MgYENPTkZJR19ORVRfQ0xTX0ZMT1dFUmAuIEFoLCAqbm93KiBJIHNlZS4gVGhpcyBpc24ndCBqdXN0IGFueSBjb25maWd1cmF0aW9uIG9wdGlvbjsgaXQncyB0aGUga2VybmVsJ3MgZmxhZyBmb3IgRmxvd2VyIGNsYXNzaWZpZXIgc3VwcG9ydCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIGZsZXhpYmxlIGZsb3cgY2xhc3NpZmljYXRpb24sIGlzbid0IGl0PyBGaW5lLWdyYWluZWQgdHJhZmZpYyBzdGVlcmluZyBiYXNlZCBvbiBhIHJpY2ggc2V0IG9mIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGlzIGdvb2QsIHRoaXMgaXMgZ29vZC4gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIHN1ZGRlbmx5IHBvcHBpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzU4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6MzkuNzU4Nzc5OTA2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjU4ODI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU19GTE9XRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTozOS44NDEzNzQzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyODQ4MDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmNpZXMgYW5kIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrLXJlbGF0ZWQgZGV2aWNlIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGBORVRfQ0xTX0ZMT1dFUmAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgbmV0d29yayBjbGFzc2lmaWVyLiBCdXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBkcml2ZXJzLiBUaGV5IGFyZSBpbXBvcnRhbnQgYW5kIEkgd2FudCB0byBjb3ZlciBhbGwgYmFzZXMuXG5cbk5vdywgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX0VUSGAuIEknbSBjdXJpb3VzIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGluIHBsYWNlIGFuZCB1bmRlcnN0YW5kIGFsbCB0aGUgaW50ZXJhY3Rpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgZGVwZW5kZW5jaWVzIGlzIGFsd2F5cyBjcml0aWNhbCBmb3Igc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwNTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo0My40NDQyMjUwNTNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTM2MjY1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjQzLjUwODc3MjYzOFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEzMDg0NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgU1RNTUFDX1BDSSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgU1RNTUFDX1BDSWAuIFRoaXMgbWVhbnMgdW5kZXJzdGFuZGluZyB3aGF0IG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgcmVzb3VyY2VzIHRoaXMgbGlrZWx5IGRlcGVuZHMgb24uIEknbSB0aGlua2luZyBiZXlvbmQgdGhlIG9idmlvdXM7IGl0J3MgY3J1Y2lhbCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBlY29zeXN0ZW0uIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIFBDSWUtdG8tRXRoZXJuZXQgYnJpZGdlLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IHdpdGggRE1BIGVuZ2luZXMsIGRlc2NyaXB0b3IgcmluZ3MsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgYWxsIHRpZ2h0bHkgaW50ZWdyYXRlZD9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBtb2R1bGUuIElzIGl0IHBhcnQgb2YgdGhlIGNvcmUgbmV0d29yayBzdGFjaywgb3IgYSBtb3JlIGlzb2xhdGVkIGRyaXZlcj8gS25vd2luZyB0aGlzIHdpbGwgaW5mbHVlbmNlIHRoZSBhcHByb2FjaCBJIHRha2UgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGhlYWRlcnMsIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGBLY29uZmlnYCwgYE1ha2VmaWxlYCksIGFuZCBrZXJuZWwgbW9kdWxlcyBJJ2xsIG5lZWQgdG8gZXhhbWluZS4gSSdsbCBsaWtlbHkgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBgZmluZGAgdG8gZ2V0IGEgcHJlbGltaW5hcnkgbGlzdC4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hhdCBgU1RNTUFDX1BDSWAgdG91Y2hlcyBhbmQsIGluIHR1cm4sIHdoYXQgdG91Y2hlcyBpdC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHdoYXQncyAqcmVxdWlyZWQqLCBidXQgYWxzbyB3aGF0J3MgKmFmZmVjdGVkKiBieSBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLiBQZXJmb3JtYW5jZSBpbXBhY3RzPyBQb3RlbnRpYWwgY29uZmxpY3RzPyBNZW1vcnkgbWFwcGluZyBjb25zaWRlcmF0aW9ucz8gSXQncyBhbGwgaW50ZXJjb25uZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzI1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6NDcuMzIxODYwNTQ2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg0OTc0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjQ3LjM4NDcxNzA4MVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU1NjczNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBuZXR3b3JraW5nIGFuZCBMaW51eCBkZXZpY2UgZHJpdmVyczpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBoZWFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYXNwZWN0cy4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9gIGRpcmVjdG9yeS4gVGhlIGZvY3VzLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIGFyb3VuZCB0aGUgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIHdoZW4gaXQncyBvcGVyYXRpbmcgb24gYSBQQ0kgaW50ZXJmYWNlLlxuXG5JJ20gcHJvYmFibHkgbG9va2luZyBmb3I6XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBmZWF0dXJlcyBvciBkcml2ZXJzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgYFNUTU1BQ19QQ0lgIHRvIGJlIGF2YWlsYWJsZT9cbiogICAqKkRlcGVuZGVuY2llcyBvZiB0aGUgRGV2aWNlOioqIEhvdyBpcyB0aGUgY29uZmlndXJhdGlvbiBvZiBgU1RNTUFDX1BDSWAgZGVwZW5kYW50IG9uIG90aGVyIGZlYXR1cmVzIG9mIHRoZSBkZXZpY2U/XG4qICAgKipEZWZhdWx0IFNldHRpbmdzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgc2V0dGluZ3Mgd2hlbiBhIFNUTU1BQyBpcyBjb25maWd1cmVkIG9uIGEgUENJIGRldmljZT9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb3IgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgb3B0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBQQ0kgc3VwcG9ydCBmb3IgdGhlIFNUTU1BQy5cblxuVGhlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGludGVyYWN0aW9ucyB3aXRoIHRoZSBQQ0kgYnVzLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgaG93IGRpZmZlcmVudCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBkZXBlbmRpbmcgb24gd2hldGhlciBgU1RNTUFDX1BDSWAgaXMgc2V0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZyBQQ0ktcmVsYXRlZCBpc3N1ZXMgYW5kIHRhaWxvcmluZyB0aGUgZHJpdmVyIHRvIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3Jtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3ODgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo1MS4zNDAzOTQ0NDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA1OjUxLjM0MDUwMjUwOVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgwNTgxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaGVyZSdzIHdoYXQncyBidWJibGluZyB1cCBpbiBteSBtaW5kLiBgU1RNTUFDX1BDSWAg4oCTIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZS4gVGhlbiB0aGVyZSdzIGBTVE1NQUNfRVRIYCwgd2hpY2ggaXMgdGhlIGNvcmUgZHJpdmVyLCByaWdodD8gR290IGl0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0J3MgYWN0dWFsbHkgZW5hYmxlZCBoZXJlLiBJJ3ZlIGdvdCB0byBzdW1tYXJpemUgdGhlIGtleSBjb25maWdzOiBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuIEJ1dCwgaGFuZyBvbi4uLiBkaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IGhhcmR3YXJlIG9mZmxvYWQ/XG5cblJpZ2h0LCB0aGUgaGFyZHdhcmUgb2ZmbG9hZCwgdGhhdCdzIGRvbmUgd2l0aCBgZXRodG9vbCAtSyBldGgwIGh3LXRjLW9mZmxvYWQgb25gLiBJcyB0aGVyZSBhY3R1YWxseSBhIGNvbmZpZyBvcHRpb24gKmV4cGxpY2l0bHkqIGZvciBUQyBoYXJkd2FyZSBvZmZsb2FkPyBJIG5lZWQgdG8gdHJhY2sgdGhhdCBkb3duLiBNeSBuZXh0IG1vdmUgaXMgdG8gZ28gZGlnZ2luZyB0aHJvdWdoIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgYEhXX1RDX09GRkxPQURgIG9wdGlvbiBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBlbmFibGVkIHRocm91Z2ggYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgaWYgdGhpcyBpcyBhbGwgaW1wbGllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MzQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNTo1Ni43MjEwODY3NloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNDU5NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhXX1RDX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDU6NTYuODE0MzQ1MjQzWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTQzOTA0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDIEhhcmR3YXJlIE9mZmxvYWQgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBoYXJkd2FyZSBvZmZsb2FkIGZvciBUcmFmZmljIENvbnRyb2wsIG9yIFRDLCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGtlcm5lbCwgcHJvdmlkZWQgdGhlIGRyaXZlciBoYXMgdGhlIGBORVRJRl9GX0hXX1RDYCBmbGFnIHNldC4gVGhhdCdzIGdvb2QsIGl0IG1lYW5zIHRoYXQgYnkgZW5hYmxpbmcgYE5FVF9DTFNfRkxPV0VSYCBJIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGRyaXZlciBzdXBwb3J0cyBpdC4gQSBzaW1wbGUgZmxvd2VyIGNsYXNzaWZpY2F0aW9uIHNob3VsZCBiZSBlbm91Z2ggdG8gc3RhcnQuXG5cbk5vdywgbXkgZm9jdXMgaXMgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIHNvIEknbSB3b25kZXJpbmcgaWYgYHRjX2FkZF9iYXNpY19mbG93YCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCB0byBmdXp6LiBUaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBtb2RpZmllcyBib3RoIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gQnV0IGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHRjX2FkZF9mbG93YCwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgZW50cnkgZnVuY3Rpb24uIEhvd2V2ZXIsIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBpcyBub3QgY2FsbGVkIGZyb20gdGhlIG90aGVyIGZ1bmN0aW9uIEkgdGhvdWdodCB3YXMgY29ubmVjdGVkLiBUaGlzIGlzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHN0bW1hY19vcHNgLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGF0IGlzIHVzZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCB0byBgY29uZmlnX2w0X2ZpbHRlcmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk4MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjowMS4yMDg3MzgwODhaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTc2Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZ19sNF9maWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9Nzk4PXN0YXRpYyBpbnQgZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTg1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jOjg1MjpzdGF0aWMgaW50IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyKHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKmh3LCB1MzIgZmlsdGVyX25vLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtODUzLVxcdFxcdFxcdFxcdCAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9ODk4PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTkzMC1cXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6OTMxOlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYy05MzItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTM0PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNDEwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtOTY3LVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHdtYWM0X2NvbmZpZ19sM19maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2NvcmUuYzo5Njg6XFx0LmNvbmZpZ19sNF9maWx0ZXIgPSBkd21hYzRfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfY29yZS5jLTk2OS1cXHQuZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzID0gZHdtYWM1X2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM9OTcyPWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3bWFjNTEwX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAwOS1cXHQuY29uZmlnX2wzX2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmM6MTAxMDpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3bWFjNF9jb25maWdfbDRfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9jb3JlLmMtMTAxMS1cXHQuZnBlX21hcF9wcmVlbXB0aW9uX2NsYXNzID0gZHdtYWM1X2ZwZV9tYXBfcHJlZW1wdGlvbl9jbGFzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xMjg4PXN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxMzUxOnN0YXRpYyBpbnQgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcihzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgdTMyIGZpbHRlcl9ubyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTM1Mi1cXHRcXHRcXHRcXHQgICAgIGJvb2wgZW4sIGJvb2wgdWRwLCBib29sIHNhLCBib29sIGludixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDI5PWNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE0NjUtXFx0LmNvbmZpZ19sM19maWx0ZXIgPSBkd3hnbWFjMl9jb25maWdfbDNfZmlsdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDY2OlxcdC5jb25maWdfbDRfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmMtMTQ2Ny1cXHQuc2V0X2FycF9vZmZsb2FkID0gZHd4Z21hYzJfc2V0X2FycF9vZmZsb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jPTE0ODU9Y29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNTIwLVxcdC5jb25maWdfbDNfZmlsdGVyID0gZHd4Z21hYzJfY29uZmlnX2wzX2ZpbHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9jb3JlLmM6MTUyMTpcXHQuY29uZmlnX2w0X2ZpbHRlciA9IGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfY29yZS5jLTE1MjItXFx0LnNldF9hcnBfb2ZmbG9hZCA9IGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaD0zMDc9c3RydWN0IHN0bW1hY19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwMi1cXHRcXHRcXHRcXHR1MzIgbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0MDM6XFx0aW50ICgqY29uZmlnX2w0X2ZpbHRlcikoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsIHUzMiBmaWx0ZXJfbm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQwNC1cXHRcXHRcXHRcXHRib29sIGVuLCBib29sIHVkcCwgYm9vbCBzYSwgYm9vbCBpbnYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtNDg3LVxcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIG1hYywgY29uZmlnX2wzX2ZpbHRlciwgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODg6I2RlZmluZSBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcihfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDo0ODk6XFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgbWFjLCBjb25maWdfbDRfZmlsdGVyLCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTQ5MC0jZGVmaW5lIHN0bW1hY19zZXRfYXJwX29mZmxvYWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTUzNT1zdGF0aWMgaW50IHRjX2FkZF9wb3J0c19mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU2NS1cXHRpZiAoaHdfbWF0Y2gpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYzo1NjY6XFx0XFx0cmV0ID0gc3RtbWFjX2NvbmZpZ19sNF9maWx0ZXIocHJpdiwgcHJpdi1cXHUwMDNlaHcsIGVudHJ5LVxcdTAwM2VpZHgsIHRydWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmMtNTY3LVxcdFxcdFxcdFxcdFxcdCAgICAgIGlzX3VkcCwgdHJ1ZSwgaW52LCBod19tYXRjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy01NzMtXFx0aWYgKGh3X21hdGNoKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NTc0OlxcdFxcdHJldCA9IHN0bW1hY19jb25maWdfbDRfZmlsdGVyKHByaXYsIHByaXYtXFx1MDAzZWh3LCBlbnRyeS1cXHUwMDNlaWR4LCB0cnVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTU3NS1cXHRcXHRcXHRcXHRcXHQgICAgICBpc191ZHAsIGZhbHNlLCBpbnYsIGh3X21hdGNoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jPTY0ND1zdGF0aWMgaW50IHRjX2RlbF9mbG93KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY190Yy5jLTY1My1cXHRpZiAoZW50cnktXFx1MDAzZWlzX2w0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3RjLmM6NjU0OlxcdFxcdHJldCA9IHN0bW1hY19jb25maWdfbDRfZmlsdGVyKHByaXYsIHByaXYtXFx1MDAzZWh3LCBlbnRyeS1cXHUwMDNlaWR4LCBmYWxzZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfdGMuYy02NTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjAxLjI3MjkxOTQ4M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzM2MTk1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEMgRmxvd2VyIE9mZmxvYWQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGZvY3VzZWQgb24gaG93IHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggdGhlIFRyYWZmaWMgQ29udHJvbCAoVEMpIGZsb3dlciBvZmZsb2FkLiBJIHNlZSB0aGF0IGBzdG1tYWNfY29uZmlnX2w0X2ZpbHRlcmAgaXMgaW52b2tlZCBmcm9tIGB0Y19hZGRfcG9ydHNfZmxvd2AgYW5kIGB0Y19kZWxfZmxvd2AuICBgdGNfYWRkX3BvcnRzX2Zsb3dgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgdGNfYWRkX2Zsb3dgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpcyBkcml2ZW4gYnkgdGhlIFRDIGZsb3dlciBvZmZsb2FkIG1lY2hhbmlzbS5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIGB0Y19hZGRfYmFzaWNfZmxvd2AgYW5kIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gSW5pdGlhbGx5LCBJIGhhZCBicm9hZGVuZWQgdGhlIGZvY3VzIHN5bWJvbHMuIEhvd2V2ZXIsIEkgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGlzICptb2RpZmllZCouIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgYXJlOlxuXG4qICAgYHRjX2FkZF9iYXNpY19mbG93YFxuKiAgIGB0Y19hZGRfZmxvd2BcbiogICBgdGNfZGVsX2Zsb3dgXG4qICAgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgXG5cbkkgcXVpY2tseSBjb25maXJtZWQgdGhhdCBgdGNfYWRkX3BvcnRzX2Zsb3dgIGlzbid0IHRvdWNoZWQgYnkgdGhpcyBwYXRjaCBhbmQgaXMgdGhlcmVmb3JlIG5vdCB0aGUgZm9jdXMgb2YgdGhpcyB3b3JrLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIHNlZWluZyBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUENJYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXMgdGhlIG1vc3QgcmVsZXZhbnQuIEkgd2FzIGFsc28gY3VyaW91cyBhYm91dCBgRFdNQUNfSU5URUxgLCBhbmQgdGhhdCBvbmUgaXMgZm9yIEludGVsIFF1YXJrL0VITC9UR0wgc3lzdGVtcy4gYFNUTU1BQ19QQ0lgIGlzIHRoZSBzdGFuZGFyZCBmb3IgZ2VuZXJpYyBQQ0ktYmFzZWQgc2V0dXBzLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgY29ubmVjdGlvbiB0byBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFNpbmNlIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYCBsaXZlcyBpbiBgZHd4Z21hYzJfY29yZS5jYCwgSSdsbCBxdWlja2x5IGNoZWNrIGlmIGBTVE1NQUNfUENJYCBhY3R1YWxseSB0cmlnZ2VycyBvciB1c2VzIHRoYXQgZmlsZS4gSSBuZWVkIHRvIGV4YW1pbmUgYHN0bW1hY19wY2kuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjMzLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjA4LjYwOTExNzZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTU3MjQ1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd3hnbWFjMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjA4LjY2OTI4NDA3NVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDUwNTg0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBkd3hnbWFjYCBEcml2ZXIgVXNhZ2UqKlxuXG5SaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhvc2UgYGR3eGdtYWNgIG9wZXJhdGlvbnMgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBJJ20gY29uY2VybmVkIHdpdGggdGhlIHVzYWdlIG9mIGJvdGggYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZXNlIHN0cnVjdHVyZXMgYXJlIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHNpbXBsZSBncmVwLWFuZC1maW5kOyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiAqaG93KiB0aGVzZSBhcmUgYmVpbmcgdXNlZCDigJMgd2hldGhlciBpdCdzIGRpcmVjdGx5IGluIGRyaXZlciBpbml0aWFsaXphdGlvbiwgd2l0aGluIGludGVycnVwdCBoYW5kbGVycywgZm9yIERNQSBjb25maWd1cmF0aW9uLCBvciB3aGF0ZXZlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGVpciBjcml0aWNhbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC4gQXJlIHRoZXkgdXNlZCBzaW1pbGFybHksIG9yIGFyZSB0aGVyZSBkaXN0aW5jdCBkaWZmZXJlbmNlcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbj8gVGhlIGdvYWwgaXMgdG8gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tbW9uIGRlc2lnbiBwYXR0ZXJuIGJldHdlZW4gdGhlIGRyaXZlcnMsIG9yIHRoZSBkaWZmZXJlbmNlcyBhbmQgZGVwZW5kZW5jaWVzIG9uIGhhcmR3YXJlIHZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NjY4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MTYuMTE5ODcwOTY0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkyMzYzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDYzOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hnbWFjMjEwX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2NC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYz0xNDEzPXN0YXRpYyB2b2lkIGR3eGdtYWMyX3NldF9hcnBfb2ZmbG9hZChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodywgYm9vbCBlbixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYzoxNDI5OmNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGdtYWMyMTBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2NvcmUuYy0xNDMwLVxcdC5jb3JlX2luaXQgPSBkd3hnbWFjMl9jb3JlX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OC1cXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU5OlxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2MC1cXHRcXHQudmxhbiA9IFxcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjoxNi4yNTkxMTM4NjRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI1ODU5NDIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGh3aWYuY2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBod2lmLmNgLlwiIEl0J3MgbGlrZWx5IHRoZSBjb3JlIGludGVyZmFjZSBmaWxlIGZvciBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlIGxvdy1sZXZlbCBzdHVmZiBsaXZlcywgdGhlIGJpdCB0d2lkZGxpbmcsIHRoZSByZWdpc3RlciBhY2Nlc3MsIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIGFsbCB0aGUgbml0dHktZ3JpdHR5IHRoYXQgYWN0dWFsbHkgKm1ha2VzKiB0aGluZ3MgaGFwcGVuLiBJJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN1c3BlY3RzIEkgZXhwZWN0IHRvIHNlZTogaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGRldmljZSBkcml2ZXIgZW50cnkgcG9pbnRzLCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIGRvc2Ugb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHBvc3NpYmx5IHNvbWUgZGVidWdnaW5nIG1hY3Jvcy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSkgY29uZmlndXJhdGlvbnMsIGNsb2NrIHNldHRpbmdzLCBhbmQgcG93ZXIgbWFuYWdlbWVudCBpbnRlcmFjdGlvbnMuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGlkZW50aWZ5IHRoZSBrZXkgYXJlYXMgSSBuZWVkIHRvIGZvY3VzIG9uLCBtYXliZSBzcG90IHNvbWUgb2J2aW91cyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGp1c3Qgb24gYSBmaXJzdCBwYXNzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDA0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MjUuNTE3NzEwMDE4WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg0NTI4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU4LVxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjI1LjcyNjE2Nzc4M1oiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTMxNjU4MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGUgaW4gYGh3aWYuY2AsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE9wZXJhdGlvbiBTZWxlY3Rpb24gTG9naWMgaW4gYGh3aWYuY2AqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZSBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgb3BlcmF0aW9uIHNlbGVjdGlvbiBtZWNoYW5pc20gd29ya3MuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB0aGUgZGVjaXNpb24gcGF0aCB0aGF0IHRoZSBjb2RlIHVzZXMgdG8gY2hvb3NlIHRoZSBjb3JyZWN0IHNldCBvZiBvcGVyYXRpb25zIG9yIGhhbmRsZXJzLiBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBuYW1pbmcsIHRoYXQgXCJod2lmXCIgcHJvYmFibHkgc3RhbmRzIGZvciBcIkhhcmR3YXJlIEludGVyZmFjZVwiLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3RseSBmcm9tIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuIEkgd2FudCB0byBwaW5wb2ludCB0aGUga2V5IHZhcmlhYmxlcyBhbmQgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IGRyaXZlIHRoaXMgc2VsZWN0aW9uIHByb2Nlc3MuIEFyZSB0aGVyZSBsaWtlbHkgdG8gYmUgcnVudGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGlzIHRoaXMgaGVhdmlseSBjb21waWxlLXRpbWUgZGVmaW5lZD8gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhbmFseXplIHRoZSBsb2dpYy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGNydWNpYWwgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBBcmUgd2UgZGVhbGluZyB3aXRoIGZ1bmN0aW9uIHBvaW50ZXJzLCBhIGp1bXAgdGFibGUsIG9yIHBlcmhhcHMgc29tZSBmb3JtIG9mIGxvb2stdXAgYmFzZWQgb24gZGV2aWNlIElEIG9yIGNhcGFiaWxpdGllcz8gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb3IgZXZpZGVuY2Ugb2YgcG9seW1vcnBoaXNtLCBzaW5jZSBpdCB3b3VsZCBiZSBsaWtlbHkgZm9yIGRpZmZlcmVudCBoYXJkd2FyZSBtb2R1bGVzIHRvIHByb3ZpZGUgdGhlaXIgb3duIGludGVyZmFjZXMuIEFyZSB0aGVyZSBhbnkgYWJzdHJhY3Rpb24gbGF5ZXJzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvZGUgYWRhcHRzIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBBcmUgdGhlcmUgbXVsdGlwbGUgYGh3aWZgIGluc3RhbmNlcyBwb3NzaWJsZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb3IsIGNvbnZlcnNlbHksIHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGF0IHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBtaWdodCBjcmVhdGU/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgYW55IHN3aXRjaCBzdGF0ZW1lbnRzIG9yIGBpZi9lbHNlYCBjaGFpbnMgdGhhdCBhcmUgdXNlZCB0byBkaXNwYXRjaCB0aGUgY2FsbHMsIGFuZCBhc3Nlc3MgdGhlaXIgZWZmaWNpZW5jeSBhbmQgY2xhcml0eS4gSSdtIGFsc28gZ29pbmcgdG8gY2hlY2sgZm9yIGVycm9yIGhhbmRsaW5nLCBvciBhbnkgZmFsbGJhY2sgbWVjaGFuaXNtcyBpZiBubyBhcHByb3ByaWF0ZSBvcGVyYXRpb24gaXMgZm91bmQuIEFueSB1bnVzdWFsIG9yIGNsZXZlciB0ZWNobmlxdWVzIGFyZSB3b3J0aCBteSBhdHRlbnRpb24uIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXNpZ24gY2hvaWNlcyBiZWhpbmQgaG93IHRoaXMgc3lzdGVtIGlzIHN0cnVjdHVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODYyLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6MjkuODU3ODI4NDU3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU4MDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfaHdpZl9lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTEwMD1pbnQgc3RtbWFjX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjExMTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEyLVxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5MzpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk0LXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI5NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMTktXFx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjA6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzIxLVxcdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjoyOS45NDk0MTU1M1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzM3Njg2OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGBzdG1tYWNfcGNpYCdzIENvcmUgVHlwZSoqXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBzZWxlY3Rpb24gcHJvY2VzcyBpcyBiYXNlZCBvbiBib3RoIGBjb3JlX3R5cGVgIGFuZCBgc25wc3ZlcmAsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgdGhlc2Ugc29ydHMgb2YgZHJpdmVyIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRoZSBgU1RNTUFDX1BDSWAgZGVmaW5pdGlvbiwgd2hpY2ggSSBhc3N1bWUgcmVmZXJzIHRvIHRoZSBTeW5vcHN5cyBkcml2ZXIgb3ZlciBQQ0ksIHJlbGllcyBvbiBgc3RtbWFjX3BjaV9pbmZvYC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoYXQgc3RydWN0dXJlLCBgc3RtbWFjX3BjaV9pbmZvYCwgYWN0dWFsbHkgY29udGFpbiB0aGUgYGNvcmVfdHlwZWAgSSdtIGxvb2tpbmcgZm9yPyBJdCdzIHRoZSBseW5jaHBpbiwgaXNuJ3QgaXQ/IElmIGl0IGRvZXMsIHRoZW4gd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLiBJZiBub3QsIHRoZW4gdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBicm9rZW4uIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYHN0bW1hY19wY2kuY2AuIFRoYXQncyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgYHN0bW1hY19wY2lfaW5mb2Agc2hvdWxkIGJlLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy4gTmVlZCB0byBxdWlja2x5IHZlcmlmeSBob3cgYGNvcmVfdHlwZWAgaXMgcG9wdWxhdGVkIHdpdGhpbiB0aGUgYHN0bW1hY19wY2lfaW5mb2Agc3RydWN0dXJlLCBhbmQgY29uZmlybSB0aGF0IGlzIGluZGVlZCB0aGUgaW50ZW5kZWQgbWV0aG9kIG9mIHRoZSBzZWxlY3Rpb24gcHJvY2VkdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgxOSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjM5LjY4NzEwNDcyOVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjEwMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjAtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTMzPXN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjozOS43OTY3MjAyNzFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ5NTE1MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlZmF1bHQgRGF0YSBmb3IgTmV0d29yayBEcml2ZXJzKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgZGVmYXVsdCBkYXRhIGNvbmZpZ3VyYXRpb25zIGZvciBgc25wc19nbWFjNV9kZWZhdWx0X2RhdGFgIGFuZCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb25zaWRlcmVkIHRoZSBiYXNlbGluZSBmb3IgZWFjaCBvZiB0aGVzZSBkcml2ZXJzLiBDb21wYXJpbmcgdGhlc2UgdHdvIHNldHMgb2YgZGVmYXVsdHMsIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZWlyIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgaG93IHRoZXkgbWlnaHQgZGlmZmVyIGluIHRoZWlyIGluaXRpYWwgc2V0dXAuIFRoaXMgY29tcGFyaXNvbiB3aWxsIGhlbHAgbWUgcGlucG9pbnQgYW55IHBvdGVudGlhbCByZWR1bmRhbmNpZXMsIG9wdGltaXphdGlvbnMgb3IgYXJlYXMgb2YgY3VzdG9taXphdGlvbiB0aGF0IGFyZSB0eXBpY2FsbHkgaGFuZGxlZCBhdCB0aGUgc3lzdGVtIGxldmVsIHZlcnN1cyB3aGF0IGVhY2ggc3BlY2lmaWMgZHJpdmVyIGRpY3RhdGVzLiBMZXQncyBzZWUgd2hhdCBpbnNpZ2h0cyB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGhvbGQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDYwLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NDYuMjkxODczMzVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTIxMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNucHNfZ21hYzVfZGVmYXVsdF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc3RtbWFjX3BjaV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1NDpzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMzpcXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA2OjQ2LjM1NjAwMzAxNVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY0MjcxMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEYXRhIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyLiBMZXQncyBkaXZlIHJpZ2h0IGluLiBUaGUgaW1tZWRpYXRlIGN1ZSBpcyB0byBleGFtaW5lIHRoZSBmaWxlIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb24gLSBcInNucHNcIiBzdWdnZXN0cyBTaW5nbGUgTnVjbGVvdGlkZSBQb2x5bW9ycGhpc21zIGRhdGEsIFwiZ21hYzVcIiBwcm9iYWJseSBkZW5vdGVzIGEgc3BlY2lmaWMgZXhwZXJpbWVudCwgbWV0aG9kb2xvZ3ksIG9yIHZlcnNpb24sIGFuZCBcImRlZmF1bHRfZGF0YVwiIGxpa2VseSBpbmRpY2F0ZXMgZWl0aGVyIHRoZSByYXdlc3QgZm9ybSBvciBhIGN1cmF0ZWQgYmFzZWxpbmUgZGF0YXNldC4gSW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgZmlsZSBmb3JtYXQgLSBpcyBpdCBhIFZDRiwgYSBwbGFpbiB0ZXh0IHRhYmxlLCBhIGJpbmFyeSBmb3JtYXQ/IFRoZSAnZGVmYXVsdCcgcGFydCBpbXBsaWVzIGEgc3RhcnRpbmcgcG9pbnQsIHNvIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIHByZXByb2Nlc3Npbmcgc3RlcHMgdGhhdCBoYXZlIGxpa2VseSBiZWVuIGFwcGxpZWQuIEtub3dpbmcgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGZvdW5kYXRpb25hbCBmb3IgYW55IGRvd25zdHJlYW0gYW5hbHlzaXMuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIG1ldGFkYXRhLCB0aGUgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgYXNzb2NpYXRlZCB3aXRoIGl0LiBGcm9tIHRoZSBuYW1lIGFsb25lLCBJIGNhbiBzdGFydCBmb3JtaW5nIGh5cG90aGVzZXMgYWJvdXQgdGhlIGFuYWx5dGljYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1OTMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjo1MS4xMjAyNzY4MjNaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU0OlxcdHN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuICA1NTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICA1NjpcXHR7XFxuICA1NzpcXHRcXHRpbnQgaTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XFxuICA2MDpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbiAgNjE6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgNjI6XFx0XFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbiAgNjM6XFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG4gIDY0OlxcdFxcbiAgNjU6XFx0XFx0LyogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIFJYIGFuZCBUWCBxdWV1ZXMgdG8gdXNlICovXFxuICA2NjpcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRwbGF0LVxcdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcXG4gIDcwOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBpKyspIHtcXG4gIDcxOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ubW9kZV90b191c2UgPSBNVExfUVVFVUVfRENCO1xcbiAgNzI6XFx0XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX2NmZ1tpXS53ZWlnaHQgPSAyNTtcXG4gIDczOlxcdFxcdFxcdGlmIChpIFxcdTAwM2UgMClcXG4gIDc0OlxcdFxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcXG4gIDc1OlxcdFxcdH1cXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0cGxhdC1cXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcXG4gIDc4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlOyBpKyspXFxuICA3OTpcXHRcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDgyOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA4NTpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdC8qIEF4aSBDb25maWd1cmF0aW9uICovXFxuICA4ODpcXHRcXHRwbGF0LVxcdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpwbGF0LVxcdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcXG4gIDg5OlxcdFxcdGlmICghcGxhdC1cXHUwMDNlYXhpKVxcbiAgOTA6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA5MTpcXHRcXG4gIDkyOlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcXG4gIDkzOlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX3JkX29zcl9sbXQgPSAzMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTEuMTIwMzYzMjMzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzAxNTU3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQSBQb2ludCBvZiBDbGFyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBzZXR0aW5nIGBwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7YC4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSB1bmRlcnN0YW5kIHRoZSBkcml2ZXIgaXMgc3BlY2lmeWluZyB0aGUgY29yZSB0eXBlIGhlcmUuIEJ1dCwgd2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgc3RtbWFjX2RlZmF1bHRfZGF0YWA/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgd2Ugb3ZlcnJpZGluZyBzb21ldGhpbmcgcHJlLWNvbmZpZ3VyZWQ/IElzIHRoaXMgYSBzdGFuZGFyZCB0eXBlPyBJcyBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgYmVpbmcgaGFuZGxlZCBhdCBhIGRpZmZlcmVudCBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBjb25mbGljdCBvciBpZiB0aGVyZSBpcyBhIHJlZHVuZGFudCBhc3NpZ25tZW50LiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBJdCBjb3VsZCByZWxhdGUgdG8gY2xvY2sgc2V0dGluZ3MsIERNQSBwYXJhbWV0ZXJzLCBvciBldmVuIHJlZ2lzdGVyIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBHTUFDIHZlcnNpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgd2hhdCBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgcHJvdmlkZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgY3VycmVudCBzZXR0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc3RtbWFjX2RlZmF1bHRfZGF0YWAgaXMgYmVpbmcgaGFuZGxlZCBhdCBhIGRpZmZlcmVudCBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gVGhpcyBpcyB0aGUgcXVlc3Rpb24gdGhhdCBJIHdhbnQgdG8gYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU4OCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTUuMDkwNTIxMjQ5WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMzpcXHRzdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuICAzNDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgMzU6XFx0e1xcbiAgMzY6XFx0XFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cXG4gIDM3OlxcdFxcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA0MDpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfYWRkciA9IDA7XFxuICA0MTpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgNDQ6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgNDU6XFx0XFx0LyogVE9ETzogQVhJICovXFxuICA0NjpcXHRcXG4gIDQ3OlxcdFxcdHJldHVybiAwO1xcbiAgNDg6XFx0fVxcbiAgNDk6XFx0XFxuICA1MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuICA1MTpcXHRcXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxcbiAgNTI6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTUuMDkwNTkxNDg5WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDQ3ODk4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIGl0cyBQb3RlbnRpYWwgSW1wYWN0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY29tbW9uX2RlZmF1bHRfZGF0YWAgc2V0dGluZy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQncyBsaWtlbHkgc2V0dGluZyBgcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX01BQztgLiBUaGF0IGZlZWxzIGxpa2UgdGhlIG1vc3QgcHJvYmFibGUgb3V0Y29tZSBnaXZlbiB0aGUgY29udGV4dCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgaHVuY2guIEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgY29tbW9uX2RlZmF1bHRfZGF0YWAgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgaXQsIGluIGZhY3QsIGRvZXMgd2hhdCBJIGV4cGVjdC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNvcmUgdHlwZSBhc3NpZ25tZW50IHRvIHVuZGVyc3RhbmQgaXRzIGRvd25zdHJlYW0gaW1wbGljYXRpb25zLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBleGFjdCBtZWNoYW5pc20gYW5kIGFueSBzaWRlIGVmZmVjdHMuIFRoaXMga2luZCBvZiBxdWljayB2ZXJpZmljYXRpb24gaXMgcm91dGluZSB0byBtZSAtIEkgY2FuJ3QgbGVhdmUgYXNzdW1wdGlvbnMgdW52YWxpZGF0ZWQsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBmdW5kYW1lbnRhbCBzZXR0aW5ncy4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwbGF0Zm9ybSBpcyBiZWluZyBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIxNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDY6NTguODM1MzgzMTcyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTAzODY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21tb25fZGVmYXVsdF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTk9c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIzOnN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM2LVxcdC8qIFNldCBjb21tb24gZGVmYXVsdCBkYXRhIGZpcnN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjM3OlxcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNjo1OC45MDY0Mjg1NTZaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMzYwMTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEZWZhdWx0IERhdGEqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiY29tbW9uX2RlZmF1bHRfZGF0YVwiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmFzZWxpbmUgY29uZmlndXJhdGlvbiwgdGhlIGNvcmUgc2V0dGluZ3MgdGhpcyBzeXN0ZW0gYXNzdW1lcyBvdXQgb2YgdGhlIGJveC4gVGhpcyBpcyB3aGVyZSB0aGUgZm91bmRhdGlvbiBpcyBsYWlkLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFzc3VtcHRpb25zIGFyZSBjb2RpZmllZCwgYW5kIHdoZXJlIHRoZSBmaXJzdCBsaW5lIG9mIGN1c3RvbWl6YXRpb24gYmVnaW5zLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYSBzb2xpZCBncmFzcCBvZiB0aGVzZSBkZWZhdWx0cyBpcyBjcnVjaWFsLiBJZiBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgcHJlLXNldCBjb25maWd1cmF0aW9ucywgSSBjYW4gbW9yZSBlZmZlY3RpdmVseSBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzLCBvcHRpbWl6ZSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBhbmQgdHJvdWJsZXNob290IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0IGlzIGFsd2F5cyBiZXN0IHRvIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRlZmF1bHQgc3RhdGVzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgd2hlcmUgSSBzdGFydC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzg4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MDIuNDMwMDMxOTg2WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMzpcXHRzdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4gIDI0OlxcdHtcXG4gIDI1OlxcdFxcdC8qIGNsa19jc3JfaSA9IDIwLTM1TUh6IFxcdTAwMjYgTURDID0gY2xrX2Nzcl9pLzE2ICovXFxuICAyNjpcXHRcXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XFxuICAyNzpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuICAyODpcXHRcXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEtXFx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcXG4gIDMxOlxcdH1cXG4gIDMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzowMi40MzAxMDI1NjZaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3MTM4Mjg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgR01BQyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSBsb29raW5nIGF0IGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIFJpZ2h0LCBzdGFuZGFyZCBHTUFDIGNvcmVzLiBOb3csIHdoZXJlIGFyZSB3ZSB3aXRoIHRob3NlIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucz8gQWgsIGhvbGQgb24uIEkndmUgc3BvdHRlZCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gYGR3eGdtYWMyMTBfb3BzYCBhbmQgYGR3eGxnbWFjMl9vcHNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHRoZXJlJ3MgYSBkaWZmZXJlbmNlLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCB3aGljaCBjb3JlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgdXNlcyBgZHd4Z21hYzIxMF9vcHNgPyBUaGF0J3MgdGhlIGtleS4gS25vd2luZyB0aGUgY29yZSBhcmNoaXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoYXQgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBMNCBmaWx0ZXIgY29uZmlndXJhdGlvbi4gV2UncmUgZ2V0dGluZyBjbG9zZXIgdG8gbWFraW5nIHRoaXMgbWFrZSBzZW5zZS4gR290dGEgbG9vayB1cCB0aGF0IGNvcmUgdHlwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMTEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjA1LjkwMTQ4OTI1OFoiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3MzEyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU4LVxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTk6XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjYwLVxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjA1Ljk2NzIzMjE3M1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDAxMzcwNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGh3aWYuY2AgZmlsZS4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29kZSwgc28gSSdtIG5vdCBnb2luZyB0byBib3RoZXIgd2l0aCB0aGUgZW50aXJlIGZpbGUgcmlnaHQgbm93LiBJJ2xsIHN0YXJ0IGJ5IGZvY3VzaW5nIGluIGFyb3VuZCBsaW5lIDI1OC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS4gSSdsbCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpcyBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MDUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzoxMi4zNjg2MDU0M1oiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbiAyNTE6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI1MjpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI1MzpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI1NDpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI1NTpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNTY6XFx0XFx0XFx0fSxcXG4gMjU3OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI1ODpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjU5OlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuIDI2MDpcXHRcXHRcXHQudmxhbiA9IFxcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxcbiAyNjE6XFx0XFx0XFx0Lmh3dGltZXN0YW1wID0gXFx1MDAyNnN0bW1hY19wdHAsXFxuIDI2MjpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyNjM6XFx0XFx0XFx0Lm1vZGUgPSBOVUxMLFxcbiAyNjQ6XFx0XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG4gMjY1OlxcdFxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbiAyNjY6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyNjc6XFx0XFx0XFx0LnNldHVwID0gZHd4Z21hYzJfc2V0dXAsXFxuIDI2ODpcXHRcXHRcXHQucXVpcmtzID0gTlVMTCxcXG4gMjY5OlxcdFxcdH0sIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MTIuMzY4NzAxMzFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1NTM1MjI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWVwIERpdmUgb24gYGNvcmVfdHlwZWAgRGV0ZXJtaW5hdGlvbioqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgZW50cnkgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogV2hhdCdzIHRoZSBmdW5kYW1lbnRhbCwgdGhlICpjb3JlKiwgYGNvcmVfdHlwZWAgb2YgdGhpcyB0aGluZz8gSSBuZWVkIHRvIGdldCB0aGlzIHJpZ2h0IGJlY2F1c2UgdGhlIGVudGlyZSBzeXN0ZW0sIGZyb20gZGF0YSBtb2RlbHMgdG8gZG93bnN0cmVhbSBwcm9jZXNzaW5nLCBoaW5nZXMgb24gdGhpcyBpbml0aWFsIGNsYXNzaWZpY2F0aW9uLiBJIGNhbid0IGp1c3QgcGljayBzb21ldGhpbmcgYXQgcmFuZG9tOyBpdCBuZWVkcyB0byBiZSBkZWZlbnNpYmxlLCBzY2FsYWJsZSwgYW5kIGFjY3VyYXRlbHkgcmVmbGVjdCB0aGUgZXNzZW5jZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkLlxuXG5BbSBJIGxvb2tpbmcgYXQgYSBgdHJhbnNhY3Rpb25gLCBhbiBgZXZlbnRgLCBvciBhIGByZXBvcnRgPyBJcyBpdCBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBsaWtlIGBzZW5zb3JfZGF0YWAgb3IgYGFub21hbHlfZGV0ZWN0aW9uX3Jlc3VsdGA/IE9yIHBlcmhhcHMgYSBjb21wb3NpdGUgdGhhdCBpcyBhIGBkZXJpdmVkX21ldHJpY2Agb3IgYW4gYGFnZ3JlZ2F0ZWRfc3RhdGlzdGljYD8gSXQgY291bGQgYmUgYSBgbWV0YWRhdGFfdXBkYXRlYOKApiB0aGUgb3B0aW9ucyBhcmUgbnVtZXJvdXMsIGFuZCB0aGUgcmlnaHQgY2hvaWNlIGltcGFjdHMgaG93IEkgaGFuZGxlIGl0cyBhdHRyaWJ1dGVzLCB2YWxpZGF0ZSB0aGUgc2NoZW1hLCBhbmQgaW50ZWdyYXRlIGl0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjYXJlZnVsbHkgYW5hbHl6ZSBpdHMgc3RydWN0dXJlLCBjb250ZXh0LCBhbmQgcHVycG9zZS4gSSBjYW4ndCBsZXQgdGhpcyBiZSBqdXN0IGFub3RoZXIgZGF0YSBlbnRyeS4gVGhpcyAqY29yZV90eXBlKiBuZWVkcyB0byBiZSB0aGUgUm9zZXR0YSBTdG9uZSB0aGF0IHVubG9ja3MgaXRzIG1lYW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjY2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzoxNi40MjQwNTcwMTlaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI0MDpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyNDE6XFx0XFx0XFx0Lm1vZGUgPSBcXHUwMDI2ZHdtYWM0X3JpbmdfbW9kZV9vcHMsXFxuIDI0MjpcXHRcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbiAyNDM6XFx0XFx0XFx0Lm1tYyA9IFxcdTAwMjZkd21hY19tbWNfb3BzLFxcbiAyNDQ6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyNDU6XFx0XFx0XFx0LnNldHVwID0gZHdtYWM0X3NldHVwLFxcbiAyNDY6XFx0XFx0XFx0LnF1aXJrcyA9IE5VTEwsXFxuIDI0NzpcXHRcXHR9LCB7XFxuIDI0ODpcXHRcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG4gMjQ5OlxcdFxcdFxcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcXG4gMjUwOlxcdFxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbiAyNTE6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI1MjpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI1MzpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI1NDpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI1NTpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNTY6XFx0XFx0XFx0fSxcXG4gMjU3OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI1ODpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjU5OlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjE2LjQyNDE0MzY1OVoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDY4OTk0Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipYR01BQyBQQ0kgRGV2aWNlIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBhIGBEV01BQ19DT1JFX1hHTUFDYCBpbnN0YW5jZS4gSSBuZWVkIHRvIGRldGVybWluZSBpdHMgUENJIGRldmljZSBzdGF0dXMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYXJlIHRoZXJlIGFueSBQQ0kgZGV2aWNlcyBsZXZlcmFnaW5nIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgSVAgY29yZT8gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLiBJcyB0aGlzIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGluIFBDSSBkZXZpY2VzLCBvciBpcyBpdCB0eXBpY2FsbHkgdXNlZCBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBsaWtlIHdpdGggYSBkaWZmZXJlbnQgYnVzIG9yIHBlcmlwaGVyYWwgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBpcyBhIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguIEkgd2lsbCBuZWVkIHRvIGRldGVybWluZSBpZiBJJ3ZlIGRlYWx0IHdpdGggdGhpcyBiZWZvcmUuIE15IG5leHQgc3RlcCB3aWxsIGJlIGEgdGhvcm91Z2ggZGV2aWNlIGRhdGFiYXNlIGFuZCBzb3VyY2UgY29kZSBkaXZlIHRvIGNvbmZpcm0gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5ODgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjIwLjQ5MzE0MDI3OFoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzM0NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRXTUFDX0NPUkVfWEdNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XFx0cmV0dXJuIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0IHx8IGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3MzpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yMT1zdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cXHRcXHR2ZXItXFx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4OlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cXHRcXHQgICAgZGV2X2lkICE9IGVudHJ5LVxcdTAwM2VkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXFx0XFx0cHJpdi1cXHUwMDNlbW1jYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIE1NQ19HTUFDM19YX09GRlNFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzM5OlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQwLVxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfWEdNQUNfT0ZGU0VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTI4PXN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXFx0Y3RybCA9IHJlYWRsKGVzdF9hZGRyICsgRVNUX0NPTlRST0wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzo1NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXFx0XFx0Y3RybCBcXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9ODM9c3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgRVNUX0JUUkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXFx0XFx0XFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzAxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dldGRydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5OlxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTUtXFx0XFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc1LVxcdFxcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozNzY6XFx0fSBlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgIT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVxcdFxcdG1lbWNweShcXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY1NjY9c3RhdGljIGludCBzdG1tYWNfZG1hX2NhcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjAxLVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjAyOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYwMy1cXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyNS1cXHRcXHQgICAocHJpdi1cXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkgPyBcXFwiWVxcXCIgOiBcXFwiTlxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYyNjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI3LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYzNC1cXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjM1OlxcdCAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYzNi1cXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlxcXFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNjY9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczODI6XFx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM4My1cXHRcXHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NDA4PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTMwLVxcdGlmICgocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV8zXzUwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTMxOlxcdCAgICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTMyLVxcdCAgICAhcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcml3dF9vZmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc5Nz1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDA1OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwMDYtXFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTM2PXN0YXRpYyB1MzIgc3RtbWFjX2Nsa19jc3Jfc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVxcdFxcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU2LVxcdFxcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cXHRcXHRuZXdfYnVzLVxcdTAwM2VyZWFkID0gXFx1MDAyNnN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVxcdC8qIExvb2tzIGxpa2Ugd2UgbmVlZCBhIGR1bW15IHJlYWQgZm9yIFhHTUFDIG9ubHkgYW5kIEM0NSBQSFlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVxcdFxcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxNj1zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwic25wcyxkd3hnbWFjXFxcIikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo1NDg6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MjAuNjY4ODc5Nzg1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNDI2MzMwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb3ZlcmFnZSBvZiBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgaXMgdXNlZCBieSBgZHdtYWMtc29jZnBnYS5jYCwgYGR3bWFjLXRlZ3JhLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYCB3aGVuIHRoZSBjb21wYXRpYmxlIHN0cmluZyBpcyBgc25wcyxkd3hnbWFjYC4gQnV0IGl0J3MgKm5vdCogdXNlZCBieSBgc3RtbWFjX3BjaS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIGl0J3Mgbm90IHByZXNlbnQgaW4gdGhlIFBDSSBjb25maWd1cmF0aW9uLCBob3cgYW0gSSBnb2luZyB0byBmdXp6IGl0IGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dXA/IFN5emthbGxlciBtYWtlcyBmdXp6aW5nIHBsYXRmb3JtIGRldmljZXMgZWFzaWVyIHRocm91Z2ggZGV2aWNldHJlZSBpbmplY3Rpb24sIGBzeXpfZGV2cmVzYCwgb3Igc2ltaWxhciB0ZWNobmlxdWVzLCBidXQgaXQncyBzdGlsbCBtb3JlIGNoYWxsZW5naW5nLlxuXG5UaGVuLCBJIHJlbWVtYmVyIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFuZCAqdGhhdCdzKiB1c2VkIGJ5ICphbGwqIHN0bW1hYyBkZXZpY2VzIHRoYXQgc3VwcG9ydCBUQyBvZmZsb2FkLiBFeGNlbGxlbnQuIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgaW4gYHN0bW1hY190Yy5jYCBhbmQgaXMgdXNlZCBieSBgZHdtYWM0X3RjX29wc2AgYW5kIGBkd21hYzUxMF90Y19vcHNgLiBOb3csIGBkd21hYzRfdGNfb3BzYCBpcyB1c2VkIGJ5IGBEV01BQ19DT1JFX0dNQUM0YCwgYW5kICp0aGF0KiAqaXMqIHVzZWQgYnkgUENJISBTcGVjaWZpY2FsbHksIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgc2V0cyBgRFdNQUNfQ09SRV9HTUFDNGAuIFNvLCBgdGNfYWRkX2Jhc2ljX2Zsb3dgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSB0aGUgUENJIHBhdGgsIHdoaWNoIGlzIG11Y2ggZWFzaWVyIHRvIGZ1enouXG5cbk5vdywgdGhhdCBzYWlkLCBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgdXNlZC4gU28sIGlkZWFsbHksIEknZCBsaWtlIHRvIGdldCB0aGUgWEdNQUMgcGF0aCB3b3JraW5nLiBDYW4gSSBlbmFibGUgYERXTUFDX1NPQ0ZQR0FgIG9yIGBEV01BQ19URUdSQWA/IFllcywgSSBjYW4uIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhleSBoYXZlIGFueSBkZXBlbmRlbmNpZXMsIGJ1dCBhdCBsZWFzdCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gYnJvYWRlbiB0aGUgZnV6emluZyBzdXJmYWNlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTg3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjMwLjAxMTUxNjUzM1oiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2MDM0OTE3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFdNQUNfU09DRlBHQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTkxPWNvbmZpZyBEV01BQ19TMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjAzOmNvbmZpZyBEV01BQ19TT0NGUEdBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDQtXFx0dHJpc3RhdGUgXFxcIlNPQ0ZQR0EgZHdtYWMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6MzEuMjcxODcxMTJaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA3MzA4NTU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgYERXTUFDX1NPQ0ZQR0FgIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSBgRFdNQUNfU09DRlBHQWAgbWVudGlvbmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgZ2V0IHJpZ2h0IHRvIHRoZSBoZWFydCBvZiBpdCAtIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgcGllY2VzIG9mIHRoZSBzeXN0ZW0gZG9lcyB0aGlzIHRoaW5nIHJlbHkgb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHRvIGFzc2VzcyBpdCBwcm9wZXJseS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEFyZSB3ZSB0YWxraW5nIGhhcmR3YXJlLCBvdGhlciBzb2Z0d2FyZSBtb2R1bGVzLCBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycywgb3IgYSBjb21iaW5hdGlvbj8gVGltZSB0byBmaW5kIG91dC4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyMDIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzo0MC4zNDQ5NTk2MDhaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDMsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDM6XFx0Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG4gMjA0OlxcdFxcdHRyaXN0YXRlIFxcXCJTT0NGUEdBIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIwNTpcXHRcXHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxcbiAyMDY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcXG4gMjA3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDIwODpcXHRcXHRzZWxlY3QgTURJT19SRUdNQVBcXG4gMjA5OlxcdFxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbiAyMTA6XFx0XFx0c2VsZWN0IFBDU19MWU5YXFxuIDIxMTpcXHRcXHRoZWxwXFxuIDIxMjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcXG4gMjEzOlxcdFxcbiAyMTQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFsdGVyYSBTT0NGUEdBIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjE1OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3JcXG4gMjE2OlxcdFxcdCAgYXJyaWE1IGFuZCBjeWNsb25lNSBGUEdBIFNvQ3MuXFxuIDIxNzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6NDAuMzQ1MDQ3MzU4WiIsIlNlcSI6NzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzEzNTg5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCdzIHJlYWNoIGRlcGVuZHMgb24gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uOiBgT0YgXHUwMDI2XHUwMDI2IChBUkNIX0lOVEVMX1NPQ0ZQR0EgfHwgQ09NUElMRV9URVNUKWAuIFN5emthbGxlciBjYW4sIG9mIGNvdXJzZSwgZW5hYmxlIGVpdGhlciBgQ09NUElMRV9URVNUYCBvciBgQVJDSF9JTlRFTF9TT0NGUEdBYCwgYnV0LCBhbmQgaGVyZSdzIHRoZSBjYXRjaCwgU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NC4gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuSWYgSSBqdXN0IGVuYWJsZSBgRFdNQUNfU09DRlBHQWAgYW5kIGBDT01QSUxFX1RFU1RgLCBpdCAqd2lsbCogY29tcGlsZSwgbm8gcHJvYmxlbSB0aGVyZS4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIGl0IGJlICpwcm9iZWQqPyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgcmVxdWlyZSBhIERldmljZSBUcmVlIG5vZGUgb3IgcGxhdGZvcm0gZGF0YS4gU3l6a2FsbGVyIGhhcyB0aGlzIHBzZXVkby1kZXZpY2UgaW5qZWN0aW9uIG1lY2hhbmlzbSwgdGhpbmdzIGxpa2UgYHN5el9kZXZyZXNgLCBidXQgaXRzIGEgYml0IGxpbWl0ZWQuIEhvd2V2ZXIsIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggUENJLCBhbmQgdGhhdCdzIGV4dHJlbWVseSBlYXN5IHRvIGZ1enouXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBmdXp6aW5nIGVmZm9ydC5cblxuSSBzaG91bGQgcmVmaW5lIHRoZSBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgaW5jbHVkZTpcblxuKiAgIGB0Y19hZGRfYmFzaWNfZmxvd2BcbiogICBgdGNfYWRkX2Zsb3dgXG4qICAgYHRjX2RlbF9mbG93YFxuKiAgIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYFxuXG5Ob3csIHJlZ2FyZGluZyBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAsIGl0ICptaWdodCogbm90IGJlIHJlYWNoYWJsZSBpZiBgRFdNQUNfQ09SRV9YR01BQ2AgaXNuJ3QgcHJvYmVkLiBIb3dldmVyLCBpdCAqaXMqIHBhcnQgb2YgdGhlIHBhdGNoLCBzbyBJIG5lZWQgdG8gaW5jbHVkZSBpdCBhbnl3YXkuIElmIFN5emthbGxlciAqZG9lcyogbWFuYWdlIHRvIHByb2JlIGEgYGR3eGdtYWNgIGRldmljZSwgdGhlbiBpdCB3aWxsIGZ1enogaXQuIFRoYXQncyBhIGdvb2QgdGhpbmcuXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgZm9yIG90aGVyIHJlcXVpcmVkIGNvbmZpZ3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5TbywgSSBuZWVkIHRvIGNoZWNrOlxuXG4qICAgYFNUTU1BQ19FVEhgXG4qICAgYFNUTU1BQ19QQ0lgXG4qICAgYE5FVF9DTFNfRkxPV0VSYFxuXG5JcyB0aGVyZSBhbnkgY29uZmlnIHRoYXQgaXMgYSBkZXBlbmRlbmN5IGZvciBgdGNfYWRkX2Jhc2ljX2Zsb3dgPyBJIGtub3cgdGhhdCBmdW5jdGlvbiBpcyBpbiBgc3RtbWFjX3RjLmNgLiBMZXQncyBqdXN0IGRvdWJsZSBjaGVjayB0aGF0IGBzdG1tYWNfdGMuY2AgY29tcGlsZXMgd2l0aCB0aGUgYmFzZSBjb25maWd1cmF0aW9ucyBJIGhhdmUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowNzo0Ny40NzY0MDg2MloiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4OTA1NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY190Yy5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTM9c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXFx0ICAgICAgZHdtYWM0X2RtYS5vIGR3bWFjNF9saWIubyBkd21hYzRfY29yZS5vIGR3bWFjNS5vIGh3aWYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6ODpcXHQgICAgICBzdG1tYWNfdGMubyBkd3hnbWFjMl9jb3JlLm8gZHd4Z21hYzJfZG1hLm8gZHd4Z21hYzJfZGVzY3MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtOS1cXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDc6MDc6NDcuODQ1MzE4OTMzWiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzE3OTY3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IHN0bW1hYyBUQyBGbG93ZXIgT2ZmbG9hZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgVEMgZmxvd2VyIGhhcmR3YXJlIG9mZmxvYWQgbG9naWMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLiBTaW5jZSBgU1RNTUFDX0VUSGAgZW5hYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHksIGl0J3MgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgY2FuIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYHRjX2FkZF9iYXNpY19mbG93YCBpcyBzdGF0aWMsIGxpa2UgSSB0aG91Z2h0LCBhbmQgYXMgYSByZXN1bHQsIEkgY2FuIGp1c3QgaW5jbHVkZSBpdCBpbiB0aGUgbGlzdC5cblxuTm93LCBsZXQncyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB0Y19hZGRfYmFzaWNfZmxvd2AsIGFkZGluZyBwcm90b2NvbCB2YWxpZGF0aW9uLCBhbmQgYWxzbyBhZGp1c3RzIGJpdHdpc2Ugb3BlcmF0aW9ucyBpbiBgZHd4Z21hYzJfY29uZmlnX2w0X2ZpbHRlcmAuIFRoaXMgY29kZSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIG5ldGxpbmsgVEMgaW50ZXJmYWNlLiBDcnVjaWFsbHksIHRoZSBzdG1tYWMgZHJpdmVyIGFsc28gc3VwcG9ydHMgUENJIHZpYSBgU1RNTUFDX1BDSWAsIHdoaWNoIG1lYW5zIGl04oCZcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgUENJIGRldmljZSBpbmplY3Rpb24uIFRoaXMgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgaXRzIGF0dGFjayBzdXJmYWNlLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgdGNfYWRkX2Jhc2ljX2Zsb3dgLCBgdGNfYWRkX2Zsb3dgLCBgdGNfZGVsX2Zsb3dgLCBhbmQgYGR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJgLiBKdXN0IHRvIGRvdWJsZS1jaGVjaywgaXQgbG9va3MgbGlrZSBgdGNfYWRkX2Zsb3dgIGFuZCBgdGNfZGVsX2Zsb3dgIGFyZSBhbHNvIHN0YXRpYywgc28gSSBjYW4gYWRkIHRoZW0gdG8gdGhlIGxpc3QuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGNvbmZpZ3MuIFdlIGFscmVhZHkgaGF2ZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gSSBzaG91bGQgYWxzbyB2ZXJpZnkgdGhhdCBgTkVUX0NMU19GTE9XRVJgIGlzIGVuYWJsZWQsIGFzIGl0IHByb3ZpZGVzIHRoZSBjb3JlIGZsb3dlciBmdW5jdGlvbmFsaXR5LiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBjaGVjayBmb3IgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLiBJIGJlbGlldmUgdGhpcyBpcyByZXF1aXJlZCB0byBhdHRhY2ggdGhlIGZsb3dlciBmaWx0ZXIgdG8gdGhlIGludGVyZmFjZSB2aWEgY29tbWFuZHMgbGlrZSBgdGMgcWRpc2MgYWRkIGRldiBldGgwIGluZ3Jlc3NgIGFuZCBgdGMgZmlsdGVyIGFkZCBkZXYgZXRoMCBwYXJlbnQgZmZmZjogcHJvdG9jb2wgaXAgZmxvd2VyIC4uLmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjU1LjYxNzExNzkyOFoiLCJTZXEiOjgwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4ODYwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfSU5HUkVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0zMzQ9Y29uZmlnIE5FVF9TQ0hfRlFfUElFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDYtXFxubmV0L3NjaGVkL0tjb25maWc6MzQ3OmNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA3OjA3OjU1LjY4MjAwOTg4M1oiLCJTZXEiOjgxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMxNjg0MzI4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2guIEl0J3MgY2xlYXIgdGhhdCB3ZSBuZWVkIGBORVRfU0NIX0lOR1JFU1NgIHRvIGF0dGFjaCB0aG9zZSBpbmdyZXNzIGZpbHRlcnMsIGFuZCBJJ20gY29uZmlkZW50IHRoYXQncyBhbGwgd2UgbmVlZCBoZXJlLiBObyBuZWVkIGZvciBgTkVUX0hXX0VYQUNUX01BVENIYDsgYE5FVF9DTFNfRkxPV0VSYCBpcyBzdWZmaWNpZW50LiBTbywgSSdsbCBhZGQgYE5FVF9TQ0hfSU5HUkVTU2AgdG8gdGhlIGNvbmZpZ3MsIGVhc3kuXG5cbk5vdywgSSB3YW50ZWQgdG8gZG91YmxlLWNoZWNrIGlmIGB0Y19hZGRfYmFzaWNfZmxvd2AgaXMgYmVpbmcgY2FsbGVkIGZvciBlZ3Jlc3MgYXMgd2VsbC4gQWgsIHJpZ2h0LCBgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiYCBpcyBjYWxsZWQgZm9yIGJvdGggaW5ncmVzcyBhbmQgZWdyZXNzLCBzbyB3ZSdyZSBjb3ZlcmVkLiBUaG91Z2gsIFRDIG9mZmxvYWQgaXMgKnVzdWFsbHkqIGluZ3Jlc3MgZm9yIGZsb3dlciBmaWx0ZXJzLCBpdCAqY2FuKiBiZSBlZ3Jlc3MgdG9vLiBUaGUgaW5jbHVzaW9uIG9mIGBORVRfU0NIX0lOR1JFU1NgIGlzIGEgc29saWQsIGRlZmVuc2l2ZSBhZGRpdGlvbi4gR29vZCwgZ29vZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhlIHRyaXN0YXRlIHN0YXR1cyBvZiB0aGVzZSBvcHRpb25zLiBgU1RNTUFDX0VUSGAgLSB5ZXMsIHRyaXN0YXRlLiBgU1RNTUFDX1BDSWAgLSB5ZXMsIGFsc28gdHJpc3RhdGUuIGBORVRfQ0xTX0ZMT1dFUmAgLSBZZXAsIHRyaXN0YXRlLiBBbmQgZmluYWxseSwgYE5FVF9TQ0hfSU5HUkVTU2A/IFBlcmZlY3QsIHRyaXN0YXRlIGFzIHdlbGwuIEV4Y2VsbGVudC5cblxuTm93LCBiYWNrIHRvIHRoZSBwYXRjaCBjb2RlIGl0c2VsZi4gSSBzZWUgYSBjbGVhciBidWcgZml4IGhlcmUgd2l0aCB0aGVzZSBiaXR3aXNlIG9wZXJhdGlvbnMsIGNsZWFuaW5nIHVwIHBvdGVudGlhbCBpc3N1ZXMuIFRoaXMgaXMgZ29vZC4gSSB1bmRlcnN0YW5kIHRoaXMgc2VjdGlvbjpcblxuYGBgY1xuIFx0aWYgKHNhKSB7XG4tXHRcdHZhbHVlID0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuK1x0XHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19MNFNQMDtcbitcdFx0dmFsdWUgfD0gRklFTERfUFJFUChYR01BQ19MNFNQMCwgbWF0Y2gpO1xuIFx0fSBlbHNlIHtcbi1cdFx0dmFsdWUgPSBGSUVMRF9QUkVQKFhHTUFDX0w0RFAwLCBtYXRjaCk7XG4tXG4tXHRcdHJldCA9IGR3eGdtYWMyX2ZpbHRlcl93cml0ZShodywgZmlsdGVyX25vLCBYR01BQ19MNF9BRERSLCB2YWx1ZSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0cmV0dXJuIHJldDtcbitcdFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfTDREUDA7XG4rXHRcdHZhbHVlIHw9IEZJRUxEX1BSRVAoWEdNQUNfTDREUDAsIG1hdGNoKTtcbiBcdH1cbmBgYFxuXG5UaGUgYWRkZWQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgY29uZmlndXJhdGlvbnMgZnJvbSBiZWluZyBvZmZsb2FkZWQgaXMgdmVyeSBpbXBvcnRhbnQuIEkgYXBwcmVjaWF0ZSB0aGUgYWRkZWQgY2hlY2tzOlxuXG5gYGBjXG4rXHQvKiBCb3RoIG5ldHdvcmsgcHJvdG8gYW5kIHRyYW5zcG9ydCBwcm90byBub3QgcHJlc2VudCBpbiB0aGUga2V5ICovXG4rXHRpZiAoIW1hdGNoLm1hc2sgfHwgIShtYXRjaC5tYXNrLVx1MDAzZW5fcHJvdG8gfHwgbWF0Y2gubWFzay1cdTAwM2VpcF9wcm90bykpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGNscy1cdTAwM2Vjb21tb24uZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJmaWx0ZXIgbXVzdCBzcGVjaWZ5IG5ldHdvcmsgb3IgdHJhbnNwb3J0IHByb3RvY29sXCIpO1xuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG5gYGBcblxuVGhpcyB3aG9sZSBwYXRjaCBpcyBmdW5jdGlvbmFsOyBpdCBsb29rcyBnb29kLiBJdCdzIGNsZWFuLCB3ZWxsLXJlYXNvbmVkLCBhbmQgYWRkcyBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBUaW1lIHRvIHJ1biBpdCB0aHJvdWdoIGZ1enppbmcuXG5cbkknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODM4LCJPdXRwdXRUb2tlbnMiOjIyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNzowOTo0OC44NTA0NDU1OTNaIiwiU2VxIjo4MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTYxNzYwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9TQ0hfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjX2FkZF9iYXNpY19mbG93XCIsXG4gICAgXCJ0Y19hZGRfZmxvd1wiLFxuICAgIFwidGNfZGVsX2Zsb3dcIixcbiAgICBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlcidzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9TQ0hfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjX2FkZF9iYXNpY19mbG93XCIsXG4gICAgXCJ0Y19hZGRfZmxvd1wiLFxuICAgIFwidGNfZGVsX2Zsb3dcIixcbiAgICBcImR3eGdtYWMyX2NvbmZpZ19sNF9maWx0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlcidzIHRyYWZmaWMgY29udHJvbCAoVEMpIGZsb3dlciBoYXJkd2FyZSBvZmZsb2FkIGxvZ2ljLiBJdCBhZGRzIHZhbGlkYXRpb24gZm9yIG5ldHdvcmsgYW5kIHRyYW5zcG9ydCBwcm90b2NvbHMgaW4gYHRjX2FkZF9iYXNpY19mbG93YCBhbmQgZml4ZXMgYml0d2lzZSBvcGVyYXRpb25zIGluIGBkd3hnbWFjMl9jb25maWdfbDRfZmlsdGVyYC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgbmV0bGluayBUQyBpbnRlcmZhY2Ugd2hlbiBjb25maWd1cmluZyBmaWx0ZXJzIG9uIGFuIGludGVyZmFjZSBiYWNrZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIuIFRoZSBzdG1tYWMgZHJpdmVyIGhhcyBQQ0kgc3VwcG9ydCAoYFNUTU1BQ19QQ0lgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGVyZWZvcmUsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[1] Phase: Succeeded StartedAt: 2026-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 07:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 07:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2] Phase: Succeeded StartedAt: 2026-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 07:10:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:01 +0000 UTC FinishedAt: 2026-07-14 07:10:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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-workflowq8nwf/series-workflowq8nwf-convert-artifact-973727659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:11 +0000 UTC FinishedAt: 2026-07-14 07:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:11 +0000 UTC FinishedAt: 2026-07-14 07:42:51 +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:*647a7c96-030a-490b-9f32-96cebe5fac5d,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-workflowq8nwf/series-workflowq8nwf-convert-artifact-973727659/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": "7ef418a6-d359-4955-931e-f435f8fd9d99", "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-workflowq8nwf/series-workflowq8nwf-build-action-2052946089/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:10:11 +0000 UTC FinishedAt: 2026-07-14 07:42:41 +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:*647a7c96-030a-490b-9f32-96cebe5fac5d,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-workflowq8nwf/series-workflowq8nwf-convert-artifact-973727659/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": "7ef418a6-d359-4955-931e-f435f8fd9d99", "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-workflowq8nwf/series-workflowq8nwf-build-action-2052946089/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:42:51 +0000 UTC FinishedAt: 2026-07-14 07:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:42:51 +0000 UTC FinishedAt: 2026-07-14 07:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:42:51 +0000 UTC FinishedAt: 2026-07-14 07:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:42:51 +0000 UTC FinishedAt: 2026-07-14 07:42:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-workflowq8nwf/series-workflowq8nwf-convert-artifact-4218645122/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:43:01 +0000 UTC FinishedAt: 2026-07-14 07:45:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:43:01 +0000 UTC FinishedAt: 2026-07-14 07:44:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ef418a6-d359-4955-931e-f435f8fd9d99,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-workflowq8nwf/series-workflowq8nwf-build-action-2052946089/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-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:45:04 +0000 UTC FinishedAt: 2026-07-14 07:45:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:45:04 +0000 UTC FinishedAt: 2026-07-14 07:45:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:45:04 +0000 UTC FinishedAt: 2026-07-14 08:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:45:04 +0000 UTC FinishedAt: 2026-07-14 08:21:39 +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:*647a7c96-030a-490b-9f32-96cebe5fac5d,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-workflowq8nwf/series-workflowq8nwf-convert-artifact-4218645122/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": "fb9f89e6-634b-4f75-80c1-a952c1310ac5", "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-workflowq8nwf/series-workflowq8nwf-build-action-1084708054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 07:45:04 +0000 UTC FinishedAt: 2026-07-14 08:21:29 +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:*647a7c96-030a-490b-9f32-96cebe5fac5d,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-workflowq8nwf/series-workflowq8nwf-convert-artifact-4218645122/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": "fb9f89e6-634b-4f75-80c1-a952c1310ac5", "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-workflowq8nwf/series-workflowq8nwf-build-action-1084708054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:21:39 +0000 UTC FinishedAt: 2026-07-14 08:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:21:39 +0000 UTC FinishedAt: 2026-07-14 08:21:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:21:39 +0000 UTC FinishedAt: 2026-07-14 08:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:21:39 +0000 UTC FinishedAt: 2026-07-14 08:23:50 +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:*fb9f89e6-634b-4f75-80c1-a952c1310ac5,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-workflowq8nwf/series-workflowq8nwf-build-action-1084708054/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-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"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:*7ef418a6-d359-4955-931e-f435f8fd9d99,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb9f89e6-634b-4f75-80c1-a952c1310ac5,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-workflowq8nwf/series-workflowq8nwf-build-action-2052946089/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-workflowq8nwf/series-workflowq8nwf-build-action-1084708054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:24:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"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-workflowq8nwf/series-workflowq8nwf-convert-artifact-490036151/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:00 +0000 UTC FinishedAt: 2026-07-14 08:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:01 +0000 UTC FinishedAt: 2026-07-14 08:24:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:11 +0000 UTC FinishedAt: 2026-07-14 08:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq8nwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"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":["tc_add_basic_flow","tc_add_flow","tc_del_flow","dwxgmac2_config_l4_filter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","NET_CLS_FLOWER","NET_SCH_INGRESS"],"series_id":"8bc6b057-2df7-4bd1-b896-16abc0252af4","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-07-14 08:24:11 +0000 UTC FinishedAt: 2026-07-14 08:26:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ef418a6-d359-4955-931e-f435f8fd9d99,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb9f89e6-634b-4f75-80c1-a952c1310ac5,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-workflowq8nwf/series-workflowq8nwf-build-action-2052946089/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-workflowq8nwf/series-workflowq8nwf-build-action-1084708054/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-workflowq8nwf/series-workflowq8nwf-convert-artifact-490036151/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,}