Name: series-workflowwtshd Phase: Succeeded StartedAt: 2026-09-11 00:27:23 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[0] Phase: Succeeded StartedAt: 2026-09-11 00:27:23 +0000 UTC FinishedAt: 2026-09-11 00:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 00:27:23 +0000 UTC FinishedAt: 2026-09-11 00:32:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH", "WLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH", "WLAN" ], "series_id": "8106112d-bee3-48d2-8ce6-c573ec413f7c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__hif_usb_tx", "hif_usb_send_tx", "hif_usb_send", "hif_usb_tx_cb", "ath9k_htc_tx_start", "ath9k_htc_tx_data" ], "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+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUxOWQ0MjBjMDRlNDBiNjUyZGQzYTQxYjg3NDI2MzY5NTE0ZTE1OWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMDozMDoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gICovXG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21hdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7aHRjLmhcJiMzNDtcbiBcbkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxuIFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuJiM0MztcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiYjNDM7XHRcdGlmICghbnNrYilcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXG4tXHRcdC8qIFNob3VsZCBuZXZlciBiZSBOVUxMICovXG4tXHRcdEJVR19PTighbnNrYik7XG4mIzQzO1x0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgJiM0MzszNDYsOCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gXHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgJiM0Mzs9IDQ7XG4gXHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuLVx0XHR0eF9idWYtXHUwMDNlbGVuID0gbnNrYi1cdTAwM2VsZW4gJiM0MzsgNDtcbi1cbi1cdFx0aWYgKGkgXHUwMDNjICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgJiM0MzsgMSkgKiA0O1xuLVxuLVx0XHRpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gJiM0Mzs9IHR4X2J1Zi1cdTAwM2VvZmZzZXQ7XG4mIzQzO1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuJiM0MztcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOz0gcm91bmRfdXAobnNrYi1cdTAwM2VsZW4gJiM0MzsgNCwgNCk7XG4gXG4gXHRcdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XG4gXHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIHNrYl9xdWV1ZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTE5ZDQyMGMwNGU0MGI2NTJkZDNhNDFiODc0MjYzNjk1MTRlMTU5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21hdGguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogCkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCXR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbnNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtoaWZfZGV2LSZndDt0eC50eF9za2JfcXVldWUpOwomIzQzOwkJbnNrYiA9IHNrYl9wZWVrKCZhbXA7aGlmX2Rldi0mZ3Q7dHgudHhfc2tiX3F1ZXVlKTsKJiM0MzsJCWlmICghbnNrYikKJiM0MzsJCQlicmVhazsKIAotCQkvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqLwotCQlCVUdfT04oIW5za2IpOwomIzQzOwkJaWYgKHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFKQomIzQzOwkJCWJyZWFrOwogCiYjNDM7CQluc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO2hpZl9kZXYtJmd0O3R4LnR4X3NrYl9xdWV1ZSk7CiAJCWhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQtLTsKIAogCQlidWYgPSB0eF9idWYtJmd0O2J1ZjsKQEAgLTM0MiwxMyAmIzQzOzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldikKIAkJKmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7CiAJCWJ1ZiAmIzQzOz0gNDsKIAkJbWVtY3B5KGJ1ZiwgbnNrYi0mZ3Q7ZGF0YSwgbnNrYi0mZ3Q7bGVuKTsKLQkJdHhfYnVmLSZndDtsZW4gPSBuc2tiLSZndDtsZW4gJiM0MzsgNDsKLQotCQlpZiAoaSAmbHQ7ICh0eF9za2JfY250IC0gMSkpCi0JCQl0eF9idWYtJmd0O29mZnNldCAmIzQzOz0gKCgodHhfYnVmLSZndDtsZW4gLSAxKSAvIDQpICYjNDM7IDEpICogNDsKLQotCQlpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKQotCQkJdHhfYnVmLSZndDtsZW4gJiM0Mzs9IHR4X2J1Zi0mZ3Q7b2Zmc2V0OwomIzQzOwkJdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDsKJiM0MzsJCXR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNCk7CiAKIAkJX19za2JfcXVldWVfdGFpbCgmYW1wO3R4X2J1Zi0mZ3Q7c2tiX3F1ZXVlLCBuc2tiKTsKIAkJVFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9faGlmX3VzYl90eGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYGhpZl91c2IuY2AgaXMgdXNlZCBieSBgYXRoOWtfaHRjYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbj8gQ2FuIEkgaGl0IGl0IHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgYSBVU0IgZ2FkZ2V0IHNldHVwLCBtYXliZSByYXctZ2FkZ2V0LCB2aGNpLCBvciBzb21lIG90aGVyIGVtdWxhdGlvbj8gSXMgYGF0aDlrX2h0Y2AgZXZlbiAqZGVzaWduZWQqIHRvIGJlIGEgVVNCIHdpcmVsZXNzIGRyaXZlcj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIG1vZHVsZSBhbmQgVVNCLiBUaGUgbmV4dCBzdGVwLCB0aGVuLCBpcyB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgYGF0aDlrX2h0Y2AgaXMgY29uZmlndXJlZCDigJMgd2hhdCBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiBhbmQgb3BlcmF0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOS1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQwOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQxLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OC1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTk6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMS1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA2Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDc6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA4LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MjpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkzLVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjUyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIGF0aDlrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLiBUaGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSwgbmF0dXJhbGx5LCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBleHBlY3QgdG8gZmluZCB0aGUgY29tcGxldGUgZGVmaW5pdGlvbnMgb2YgYWxsIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciwgYWxvbmcgd2l0aCBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBwbGF0Zm9ybSBjb21wb25lbnRzLiBUaGlzIGlzIHRoZSBzb2xpZCBmb3VuZGF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGJ1aWx0IGFuZCB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuIDIwNzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuIDIwOTpcdFx0c2VsZWN0IFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIFdpRmkgVVNCIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdG8gcmV2aWV3LCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYGF0aDlrYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIEhpZ2gtTGV2ZWwgSW50ZXJmYWNlIChgaGlmX3VzYi5jYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc3RhcnQgd2l0aCB0aGUgY29yZSBvZiB0aGUgdHJhbnNtaXQgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRhdGEgaXMgYWN0dWFsbHkgc2VudCBvdmVyIHRoZSBVU0IgYnVzLgoKTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyBpdCwgb2YgY291cnNlLCB0byBzZWUgd2hpY2ggY2FsbHMgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VzLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgY29tcGxldGVseSBuZXcgaW1wbGVtZW50YXRpb24/IE9yIGlzIGl0IGEgdHdlYWsgdG8gYW4gZXhpc3RpbmcgcHJvY2Vzcz8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGlucHV0IHBhcmFtZXRlcnMsIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluc2lkZSwgYW5kIGl0cyBvdmVyYWxsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgVVNCIGRyaXZlciBhbmQgcG90ZW50aWFsbHkgdGhlIGhpZ2hlci1sZXZlbCBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIGFsbCBvZiBpdHMgY2FsbGVycyBpcyBnb2luZyB0byBiZSBjcnVjaWFsIHRvIGRldGVybWluaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGVhc2llciB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBjaGFuZ2UgaWYgSSBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Njg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDlrX2hpZl91c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjcwOnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVx0aWYgKCEoaGlmX2Rldi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAzOlx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzA0LVx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX2NvbXBsZXRlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDgtLyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzA5OnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3NT1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXHQgICAgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2MgMikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDE1Olx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNi1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA0MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGEgbmV0d29ya2luZyBleHBlcnQgZmFtaWxpYXIgd2l0aCB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXI6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGg5ayBVU0IgSElGIE1vZHVsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBVU0IgSG9zdCBJbnRlcmZhY2UgKEhJRikgcG9ydGlvbiBvZiB0aGUgYGF0aDlrYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkmIzM5O20gem9uaW5nIGluIG9uIGxpbmVzIDMwMCB0aHJvdWdoIDM4MC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIGEgY3JpdGljYWwgc2VjdGlvbiwgYSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBhbiBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBvciBwZXJoYXBzIGEgY29yZSBmdW5jdGlvbiByZWxhdGVkIHRvIFVTQiBjb21tdW5pY2F0aW9uIGhhbmRsaW5nLCB0aGUgSElGIGxheWVyLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIGZvciBVU0IgdHJhbnNmZXJzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgY2h1bmsgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gMzEwOlx0e1xuIDMxMTpcdFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcbiAzMTI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiAzMTM6XHRcdGludCByZXQgPSAwLCBpO1xuIDMxNDpcdFx0dTE2IHR4X3NrYl9jbnQgPSAwO1xuIDMxNTpcdFx0dTggKmJ1ZjtcbiAzMTY6XHRcdF9fbGUxNiAqaGRyO1xuIDMxNzpcdFxuIDMxODpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCA9PSAwKVxuIDMxOTpcdFx0XHRyZXR1cm4gMDtcbiAzMjA6XHRcbiAzMjE6XHRcdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG4gMzIyOlx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZikpXG4gMzIzOlx0XHRcdHJldHVybiAwO1xuIDMyNDpcdFxuIDMyNTpcdFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XG4gMzI2Olx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbiAzMjc6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuIDMyODpcdFxuIDMyOTpcdFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIDMzMDpcdFxuIDMzMTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbiAzMzI6XHRcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzMzM6XHRcdFx0aWYgKCFuc2tiKVxuIDMzNDpcdFx0XHRcdGJyZWFrO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4gMzM3Olx0XHRcdFx0YnJlYWs7XG4gMzM4Olx0XG4gMzM5Olx0XHRcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzNDA6XHRcdFx0aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LS07XG4gMzQxOlx0XG4gMzQyOlx0XHRcdGJ1ZiA9IHR4X2J1Zi1cdTAwM2VidWY7XG4gMzQzOlx0XHRcdGJ1ZiAmIzQzOz0gdHhfYnVmLVx1MDAzZW9mZnNldDtcbiAzNDQ6XHRcdFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcbiAzNDU6XHRcdFx0KmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihuc2tiLVx1MDAzZWxlbik7XG4gMzQ2Olx0XHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIDM0NzpcdFx0XHRidWYgJiM0Mzs9IDQ7XG4gMzQ4Olx0XHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuIDM0OTpcdFx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuIDM1MDpcdFx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcbiAzNTM6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHR1c2JfZmlsbF9idWxrX3VyYih0eF9idWYtXHUwMDNldXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMzU3Olx0XHRcdFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcbiAzNTg6XHRcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG4gMzU5Olx0XHRcdFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xuIDM2MDpcdFxuIDM2MTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG4gMzYyOlx0XHRpZiAocmV0KSB7XG4gMzYzOlx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbiAzNjQ6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbiAzNjU6XHRcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDM2NjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9idWYpO1xuIDM2NzpcdFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuIDM2ODpcdFx0fSBlbHNlIHtcbiAzNjk6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XG4gMzcyOlx0XHRyZXR1cm4gcmV0O1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzc2Olx0e1xuIDM3NzpcdFx0c3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDtcbiAzNzg6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMzc5Olx0XHRpbnQgcmV0ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3OTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgYGF0aDlrX2h0Y2Agd2l0aCByZXNwZWN0IHRvIFVTQiBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdXRpbGl6aW5nIFVTQiBlbXVsYXRpb24gKGxpa2Ugc3l6a2FsbGVyJiMzOTtzIGByYXdfZ2FkZ2V0YCBvciB0aGUgYGR1bW15X2hjZGApLiBEb2VzIHRoaXMgZHJpdmVyIG5lZWQgZmlybXdhcmUgbG9hZGluZyBvciBhbnl0aGluZyBlbHNlIHRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGUgcHJvY2Vzcz8gVGhhbmtmdWxseSwgc3l6a2FsbGVyIGhhcyBleHBlcmllbmNlIHdpdGggVVNCIGZ1enppbmcgZm9yIFdpRmkgZGV2aWNlcywgaW5jbHVkaW5nIHRoaXMgb25lLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBhdGg5a19odGNgIGlzIGV2ZW4gcmVhY2hhYmxlLiBHb3R0YSBrZWVwIHRoYXQgJiMzNDtyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZSYjMzQ7IGNvbmNlcHQgaW4gbWluZC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBmdXp6aW5nIGd1aWRlbGluZXMgKHNlY3Rpb25zIDEsIDIsIDMpLCBJJiMzOTttIHJlbWluZGVkIHRoYXQgZnV6emluZyYjMzk7cyBzY29wZSBpcyBjb25maW5lZCB0byBjb2RlIGV4ZWN1dGluZyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgaW5jbHVkZXMgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcywgYW5kIHRoYXTigJlzIGxvb2tpbmcgcHJvbWlzaW5nIGZvciBVU0IgZ2FkZ2V0IHNldHVwcywgbmV0ZGV2LCB0dW4vdGFwLCBldGMuIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBhcmUgdGhlIG9uZXMgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIEFsc28sIGEgcXVpY2sgbm90ZSwgSSYjMzk7bSB0aGlua2luZyBvZiB3aGV0aGVyIEkgY2FuIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGF0IGFueSBzdGFnZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgSSAqb25seSogcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLCBvciBjb2RlIGV4Y2x1c2l2ZSB0byBvdGhlciBhcmNoaXRlY3R1cmVzLgoKQWxyaWdodCwgYGF0aDlrX2h0Y2AgaXMgYSBVU0Igd2lyZWxlc3MgZHJpdmVyISBQZXJmZWN0LiBVU0IgZHJpdmVycyBhcmUgaW5oZXJlbnRseSByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24sIGxpa2UgdGhlIHNldHVwIHN5emthbGxlciB1c2VzLiBTbywgdGhhdCYjMzk7cyBhbHJlYWR5IGEgc2lnbmlmaWNhbnQgcG9zaXRpdmUgZmFjdG9yLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBhZ2dyZWdhdGlvbiBhbmQgYnVmZmVyIG9mZnNldCBoYW5kbGluZyB3aXRoaW4gdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLiBBIGJ1ZmZlciBvdmVyZmxvdyBpcyBiZWluZyBwcmV2ZW50ZWQ7IHRoZSBmaXggaGFuZGxlcyB0aGUgYHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFYCBib3VuZGFyeSBjb25kaXRpb24sIGFzIHdlbGwgYXMgbGVuL29mZnNldCBjYWxjdWxhdGlvbi4KCk5leHQgc3RlcDogSSBuZWVkIHRvIGFuYWx5emUgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbXBhY3RlZCBhbmQgdHJhY2UgdGhlaXIgY2FsbCBjaGFpbnMuIExldCYjMzk7cyBsb29rIGF0IGBfX2hpZl91c2JfdHhgLCBgaGlmX3VzYl9zZW5kX3R4YCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gSG9sZCBvbiwgYF9faGlmX3VzYl90eGAgaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHN0YXRpYyBhbmQgKm5vdCogaW5saW5lZCBvciwgd2VsbCwgaW5saW5lZC4gSSB3aWxsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9faGlmX3VzYl90eGAgd2l0aGluIGBoaWZfdXNiLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWZfdXNiX3NlbmRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcyPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMDA6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAxLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTM2PXN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE4MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9tZ210KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTgzLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM3NTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDAtXHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDY0PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzAtXHRjYXNlIFVTQl9XTEFOX1RYX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3MTpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3R4KGhpZl9kZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3My1cdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDc0Olx0XHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgaGlmX3VzYl9zZW5kYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgYGhpZl91c2Jfc2VuZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93OiBJcyBpdCBjYWxsZWQgZGlyZWN0bHkgYnkgb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHNvbWV3aGVyZT8gSWYgaXQmIzM5O3MgYSBjYWxsYmFjaywgd2hlcmUgaXMgaXQgcmVnaXN0ZXJlZCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpcyBpdCB0cmlnZ2VyZWQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udmVudGlvbnMgYW5kIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBVU0Igc2VuZCBvcGVyYXRpb24gaXMgaW5pdGlhdGVkLiBUaGUgdHJhY2Ugd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWZfdXNiX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NzI9c3RhdGljIHZvaWQgaGlmX3VzYl9yZWdvdXRfY2Ioc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEwMDpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMDEtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMzY9c3RhdGljIHZvaWQgaGlmX3VzYl9tZ210X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTgyOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX21nbXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODMtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzA5PXN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzc1OnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMC1cdCAgICAodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0XHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00MzU9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ2NDpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDcwLVx0Y2FzZSBVU0JfV0xBTl9UWF9QSVBFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NzE6XHRcdHJldCA9IGhpZl91c2Jfc2VuZF90eChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzMtXHRjYXNlIFVTQl9SRUdfT1VUX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3NDpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3JlZ291dChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTIwPXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTI5LVx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MzA6XHQuc2VuZCA9IGhpZl91c2Jfc2VuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTMxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgdGhlIEhJRiBTZW5kIFBhdGgqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIGh1bmNoLCBnaXZlbiB0aGUgcHJvYmxlbSBkZXNjcmlwdGlvbiwgaXMgdGhhdCB3ZSBoYXZlIGEgcG90ZW50aWFsIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEhJRiB0cmFuc21pc3Npb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgaGlmLSZndDtzZW5kYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhhdCBjYWxsLiBBIGxpa2VseSBjdWxwcml0IHdvdWxkIGJlIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBjb21tdW5pY2F0aW9uIGl0c2VsZi4KClRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCBhbmQgSSYjMzk7bGwgc3RhcnQgd2l0aCBgaHRjX2Rydl90eHJ4LmNgLiBUaGF0IGZpbGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgc291bmRzIGxpa2UgaXQgbWF5IGRlYWwgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gYXNwZWN0cyBvZiB0aGUgSFRDIGRyaXZlciAob3Igd2hhdGV2ZXIgc3lzdGVtIGlzIGJlaW5nIHVzZWQpLiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsaW5nIHBhdGggb2YgYGhpZi0mZ3Q7c2VuZGAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBoaWYtJmd0O3NlbmRgIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBiZWluZyB1c2VkLiBJIHdpbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlcnJvcnMgaW4gZGF0YSBwcmVwYXJhdGlvbiwgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0Oy1cdTAwM2VzZW5kXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTIxPXN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozNTpcdHN0YXR1cyA9IHRhcmdldC1cdTAwM2VoaWYtXHUwMDNlc2VuZCh0YXJnZXQtXHUwMDNlaGlmX2RldiwgZW5kcG9pbnQtXHUwMDNldWxfcGlwZWlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGBodGNfaXNzdWVfc2VuZGAgQ2FsbGVycyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBvZiBgaHRjX2lzc3VlX3NlbmRgLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBubyBkb3VidCwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGluIHdoYXRldmVyIHByb2JsZW0gSSYjMzk7bSB0cnlpbmcgdG8gYWRkcmVzcywgYmUgaXQgcGVyZm9ybWFuY2UsIGEgYnVnLCBvciBqdXN0IHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSYjMzk7cyBpbnRlcmFjdGlvbi4gR290dGEgdHJhY2UgdGhlIGRhdGEgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBgaHRjX2lzc3VlX3NlbmRgIG9wZXJhdGVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGEgbW9yZSB0YXJnZXRlZCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHRjX2lzc3VlX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjIxOnN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjItXHRcdFx0ICB1MTYgbGVuLCB1OCBmbGFncywgdTggZXBpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTE1ND1zdGF0aWMgaW50IGh0Y19jb25maWdfcGlwZV9jcmVkaXRzKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjE3NjpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MTkyPXN0YXRpYyBpbnQgaHRjX3NldHVwX2NvbXBsZXRlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjIxMTpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MjQxPWludCBodGNfY29ubmVjdF9zZXJ2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjI4NjpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MzA3PWludCBodGNfc2VuZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzExLVx0dHhfY3RsID0gSFRDX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozMTI6XHRyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cdTAwM2VsZW4sIDAsIHR4X2N0bC1cdTAwM2VlcGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzEzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTMxNT1pbnQgaHRjX3NlbmRfZXBpZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6MzE4Olx0cmV0dXJuIGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBlcGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzE5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NzUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQVRIOUtfSFRDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYEFUSDlLX0hUQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBSaWdodCwgaGVyZSBpdCBpczogYGNvbmZpZyBBVEg5S19IVENgIGlzIGEgdHJpc3RhdGUgb3B0aW9uLCBtZWFuaW5nIGl0IGNhbiBiZSBlbmFibGVkIGFzIGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgZGlzYWJsZWQuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBpdCByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIEkgYWxzbyBzZWUgdGhhdCBpdCBzZWxlY3RzIGBNQUM4MDIxMV9MRURTYCB1bmRlciBjZXJ0YWluIExFRCBjbGFzcyBjb25kaXRpb25zIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBpY3R1cmUuCgpCdXQgSSBjYW4mIzM5O3Qgc3RvcCBoZXJlLCBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXJlIGFueSAqaGlnaGVyLWxldmVsKiBkZXBlbmRlbmNpZXMgb3IgcGFyZW50IG1lbnVzIHRoYXQgaW1wYWN0IHRoaXM/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCDigJMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucywgbWVudXMsIG9yIGNvbnRleHQgdGhhdCBpbmZsdWVuY2VzIHRoZSBhdmFpbGFiaWxpdHkgb3IgYmVoYXZpb3Igb2YgYEFUSDlLX0hUQ2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgc3RydWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEg5SyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19BVEg1SylcdFx0JiM0Mzs9IGF0aDVrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUSDlLX0hXKVx0XHQmIzQzOz0gYXRoOWsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfQ0FSTDkxNzApXHRcdCYjNDM7PSBjYXJsOTE3MC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Nzpjb25maWcgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTpjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjU6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2Olx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBPRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTc6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjQ6Y29uZmlnIEFUSDlLX1dPV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVx0Ym9vbCBcJiMzNDtXYWtlIG9uIFdpcmVsZXNzIExBTiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI3LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcdGRlcGVuZHMgb24gUkZLSUxMPXkgfHwgUkZLSUxMPUFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtDaGFubmVsIENvbnRleHQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQ1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1wmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1MzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc2Olx0c2VsZWN0IEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cdGJvb2wgXCYjMzQ7UmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVx0c2VsZWN0IFJFTEFZXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI9YXRoOWsteSAmIzQzOz1cdGJlYWNvbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEyOmF0aDlrLSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSAmIzQzOz0gbWNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxMzphdGg5ay0kKENPTkZJR19BVEg5S19QQ0kpICYjNDM7PSBwY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE0OmF0aDlrLSQoQ09ORklHX0FUSDlLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTU6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0RFQlVHRlMpICYjNDM7PSBkZnNfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE2OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICYjNDM7PSBkZnMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE3OmF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICYjNDM7PSB0eDk5Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxODphdGg5ay0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE5OmF0aDlrLSQoQ09ORklHX0FUSDlLX0hXUk5HKSAmIzQzOz0gcm5nLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMTphdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgJiM0Mzs9IGRlYnVnX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDlLKSAmIzQzOz0gYXRoOWsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI3PWF0aDlrX2h3LXk6PVx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NDg6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfV09XKSAmIzQzOz0gYXI5MDAzX3dvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTA6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBidGNvZXgubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTUxLVx0XHRcdFx0XHQgICBhcjkwMDNfbWNpLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTQ6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfUENPRU0pICYjNDM7PSBhcjkwMDNfcnR0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1NjphdGg5a19ody0kKENPTkZJR19BVEg5S19EWU5BQ0spICYjNDM7PSBkeW5hY2sub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19BVEg5S19IVykgJiM0Mzs9IGF0aDlrX2h3Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfQVRIOUtfQ09NTU9OKSAmIzQzOz0gYXRoOWtfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02MS1hdGg5a19jb21tb24teTo9XHRjb21tb24ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NTphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSAmIzQzOz0gY29tbW9uLWRlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfb2ZkbV9sZXZlbF9lbnRyeSBvZmRtX2xldmVsX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTI6I2RlZmluZSBBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01My1cdEFSUkFZX1NJWkUob2ZkbV9sZXZlbF90YWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU1Olx0KEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTC0xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU2OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTctXHQzIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfY2NrX2xldmVsX2VudHJ5IGNja19sZXZlbF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo5ODojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtOTktXHRBUlJBWV9TSVpFKGNja19sZXZlbF90YWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDA6I2RlZmluZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMTpcdChBVEg5S19BTklfQ0NLX05VTV9MRVZFTC0xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAzOlx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTA0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xMDUtXHQyIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MTQ5PXN0YXRpYyB2b2lkIGF0aDlrX2h3X3NldF9vZmRtX25pbChzdHJ1Y3QgYXRoX2h3ICphaCwgdTggaW1tdW5pdHlMZXZlbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYwLVx0XHRpbW11bml0eUxldmVsLCBCRUFDT05fUlNTSShhaCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYxOlx0XHRBVEg5S19BTklfUlNTSV9USFJfTE9XLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MjpcdFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjQ6XHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcdTAwMjZcdTAwMjYgaW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NTpcdFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3NC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTc1Olx0XHRcdFx0ICAgICBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNzYtXHRcdFx0XHQgICAgIGVudHJ5X29mZG0tXHUwMDNlc3B1cl9pbW11bml0eV9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4MC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTgxOlx0XHRcdFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODItXHRcdFx0XHQgICAgIGVudHJ5X29mZG0tXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODUtXHRpZiAoYWgtXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTg2Olx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcdTAwM2M9IEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Ny1cdFx0d2Vha19zaWcgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDItXHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbVdlYWtTaWdEZXRlY3QgIT0gd2Vha19zaWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjAzOlx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCwgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwNC1cdFx0XHRcdCAgICAgd2Vha19zaWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjA5Olx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXHUwMDNlPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTA6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTE6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxMi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEzOlx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxNDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a19od19hbmlfb2ZkbV9lcnJfdHJpZ2dlcihzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIyMjpcdGlmIChhbmlTdGF0ZS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfT0ZETV9NQVhfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIzLVx0XHRhdGg5a19od19zZXRfb2ZkbV9uaWwoYWgsIGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgJiM0MzsgMSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMjk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X2Nja19uaWwoc3RydWN0IGF0aF9odyAqYWgsIHVfaW50OF90IGltbXVuaXR5TGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIzOC1cdFx0YW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsLCBpbW11bml0eUxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIzOTpcdFx0QkVBQ09OX1JTU0koYWgpLCBBVEg5S19BTklfUlNTSV9USFJfTE9XLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MDpcdFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDI6XHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcdTAwMjZcdTAwMjYgaW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQzOlx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0NS1cdGlmIChhaC1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDY6XHQgICAgQkVBQ09OX1JTU0koYWgpIFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0xPVyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDc6XHQgICAgaW1tdW5pdHlMZXZlbCBcdTAwM2UgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ4Olx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNTgtXHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI1OTpcdFx0XHRcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjYwLVx0XHRcdFx0ICAgICBlbnRyeV9jY2stXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNjgtXHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI2OTpcdFx0XHRcdCAgICAgQVRIOUtfQU5JX01SQ19DQ0ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjcwLVx0XHRcdFx0ICAgICBlbnRyeV9jY2stXHUwMDNlbXJjX2Nja19vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTI3Mz1zdGF0aWMgdm9pZCBhdGg5a19od19hbmlfY2NrX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6Mjc3Olx0aWYgKGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc4LVx0XHRhdGg5a19od19zZXRfY2NrX25pbChhaCwgYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICYjNDM7IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTMwOT12b2lkIGF0aDlrX2FuaV9yZXNldChzdHJ1Y3QgYXRoX2h3ICphaCwgYm9vbCBpc19zY2FubmluZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyMjpcdG9mZG1fbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIzLVx0XHRcdCBhbmlTdGF0ZS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMjQ6XHRjY2tfbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjUtXHRcdFx0IGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzNi1cdFx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgIT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzc6XHRcdCAgICBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMzgtXHRcdCAgICBhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgIT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzk6XHRcdCAgICBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0MC1cdFx0XHRhdGhfZGJnKGNvbW1vbiwgQU5JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ4Olx0XHRcdG9mZG1fbmlsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjM0OTpcdFx0XHRjY2tfbmlsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzUwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTQ3Nz12b2lkIGF0aDlrX2h3X2FuaV9pbml0KHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00ODQtXHRpZiAoQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NjpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODc6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19oaWdoID0gQVRIOUtfQU5JX0NDS19UUklHX0hJR0g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg4Olx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00ODktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTE6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfT0xEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MjpcdFx0YWgtXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkzOlx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk0LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTY6XHRhbmktXHUwMDNlc3B1ckltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NzpcdGFuaS1cdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk4LVx0YW5pLVx1MDAzZW1yY0NDSyA9IEFSX1NSRVZfOTMwMF8yMF9PUl9MQVRFUihhaCkgPyB0cnVlIDogZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMC1cdGFuaS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAxOlx0YW5pLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwMjpcdGFuaS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTA3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA4Olx0YWgtXHUwMDNlYW5pcGVyaW9kID0gQVRIOUtfQU5JX1BFUklPRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDk6XHRhaC1cdTAwM2Vjb25maWcuYW5pX3BvbGxfaW50ZXJ2YWwgPSBBVEg5S19BTklfUE9MTElOVEVSVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjItLyogdW5pdHMgYXJlIGVycm9ycyBwZXIgc2Vjb25kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjM6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0ggICAgICAgICAgIDM1MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyNDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkkgMTAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI1OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRCAgICAgICA1MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyNzojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XICAgICAgICAgICA0MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyODojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX0FCT1ZFX0lOSSA5MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyOTojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRCAgICAgICAyMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMTojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIICAgICAgICAgICA2MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRCAgICAgICAyMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMzojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1cgICAgICAgICAgICAzMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEICAgICAgICAxMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNjojZGVmaW5lIEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwgICAgICAgICAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzc6I2RlZmluZSBBVEg5S19BTklfRklSU1RFUF9MVkwgICAgICAgICAgICAgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM5OiNkZWZpbmUgQVRIOUtfQU5JX1JTU0lfVEhSX0hJR0ggICAgICAgICAgIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDA6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfTE9XICAgICAgICAgICAgN1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQyOiNkZWZpbmUgQVRIOUtfQU5JX1BFUklPRCAgICAgICAgICAgICAgICAgIDMwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ0LS8qIGluIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDU6I2RlZmluZSBBVEg5S19BTklfUE9MTElOVEVSVkFMICAgICAgICAgICAgMTAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ3OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NSU4gICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0ODojZGVmaW5lIEFUSDlLX1NJR19GSVJTVEVQX1NFVFRJTkdfTUFYICAgICAyMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ5OiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUlOICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1MDojZGVmaW5lIEFUSDlLX1NJR19TUFVSX0lNTV9TRVRUSU5HX01BWCAgICAyMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTUxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaD01ND1lbnVtIGF0aDlrX2FuaV9jbWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU1Olx0QVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OID0gMHgxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU2Olx0QVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwgPSAweDIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTc6XHRBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCA9IDB4NCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1ODpcdEFUSDlLX0FOSV9NUkNfQ0NLID0gMHg4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU5Olx0QVRIOUtfQU5JX0FMTCA9IDB4ZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jPTk1Mz1zdGF0aWMgYm9vbCBhcjUwMDhfaHdfYW5pX2NvbnRyb2xfbmV3KHN0cnVjdCBhdGhfaHcgKmFoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTYyLVx0c3dpdGNoIChjbWQgXHUwMDI2IGFoLVx1MDAzZWFuaV9mdW5jdGlvbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzo5NjM6XHRjYXNlIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTjp7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2NC1cdFx0Lypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNDMtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNDQ6XHRjYXNlIEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMOntcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0NS1cdFx0dTMyIGxldmVsID0gcGFyYW07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDU4LVx0XHRcdFx0bGV2ZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNTk6XHRcdFx0XHRBVEg5S19BTklfRklSU1RFUF9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNjAtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNjYtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA2NzpcdFx0XHRcdEFUSDlLX0FOSV9GSVJTVEVQX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2OC1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3Ny1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA3ODpcdGNhc2UgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUw6e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc5LVx0XHR1MzIgbGV2ZWwgPSBwYXJhbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTMtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA5NDpcdFx0XHRcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTUtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDEtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTEwMjpcdFx0XHRcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDMtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTItXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMTM6XHRjYXNlIEFUSDlLX0FOSV9NUkNfQ0NLOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTE0LVx0XHQvKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9MTE2OT1zdGF0aWMgdm9pZCBhcjUwMDhfaHdfYW5pX2NhY2hlX2luaV9yZWdzKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTIxMy1cdC8qIHRoZXNlIGxldmVscyBqdXN0IGdvdCByZXNldCB0byBkZWZhdWx0cyBieSB0aGUgSU5JICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTQ6XHRhbmlTdGF0ZS1cdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTU6XHRhbmlTdGF0ZS1cdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTYtXHRhbmlTdGF0ZS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMj1zdGF0aWMgYm9vbCBhcjkwMDJfaHdfZ2V0X2lzcihzdHJ1Y3QgYXRoX2h3ICphaCwgZW51bSBhdGg5a19pbnQgKm1hc2tlZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY2LVx0XHRcdGlmIChpc3IyIFx1MDAyNiBBUl9JU1JfUzJfVElNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2NzpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9USU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY4LVx0XHRcdGlmIChpc3IyIFx1MDAyNiBBUl9JU1JfUzJfRFRJTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Njk6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzAtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9EVElNU1lOQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzE6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTVNZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTcyLVx0XHRcdGlmIChpc3IyIFx1MDAyNiAoQVJfSVNSX1MyX0NBQkVORCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjczOlx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0NBQkVORDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzQtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9HVFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc1Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0dUVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzYtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9DU1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc3Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0NTVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzgtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9UU0ZPT1IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc5Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX1RTRk9PUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjgxOlx0XHRcdGlmICghKHBDYXAtXHUwMDNlaHdfY2FwcyBcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgyLVx0XHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzIsIGlzcjIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjg3Olx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODgtXHRcdFx0aXNyID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9SQUMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk1Olx0XHQqbWFza2VkID0gaXNyIFx1MDAyNiBBVEg5S19JTlRfQ09NTU9OO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk4LVx0XHRcdCAgIEFSX0lTUl9SWE9LIHwgQVJfSVNSX1JYRVJSKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTk6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfUlg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTA2Olx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1RYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwODpcdFx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDktXHRcdFx0XHRzMF9zID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9TMF9TKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTQwOlx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNDEtXHRcdFx0czVfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzVfUyhhaCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTUyLVx0XHRpZiAoYWgtXHUwMDNlaW50cl9nZW5fdGltZXJfdHJpZ2dlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTUzOlx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0dFTlRJTUVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NS1cdFx0aWYgKChzNV9zIFx1MDAyNiBBUl9JU1JfUzVfVElNX1RJTUVSKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU2Olx0XHQgICAgIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9BVVRPU0xFRVApKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTc6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVElNX1RJTUVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1OTpcdFx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTYwLVx0XHRcdFJFR19XUklURShhaCwgQVJfSVNSX1M1LCBzNV9zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTY1Olx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY2LVx0XHRSRUdfV1JJVEUoYWgsIEFSX0lTUiwgaXNyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE4OS1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5MDpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTkxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTYtXHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9SQywgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5NzpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0yMTI9YXI5MDAyX3NldF90eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLCBzdHJ1Y3QgYXRoX3R4X2luZm8gKmkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MTpcdGN0bDEgfD0gKGktXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gU00oaS1cdTAwM2VrZXlpeCwgQVJfRGVzdElkeCkgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjItXHRcdHwgU00oaS1cdTAwM2V0eXBlLCBBUl9GcmFtZVR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MzpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX05PQUNLID8gQVJfTm9BY2sgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjQ6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfT05MWSA/IEFSX0V4dE9ubHkgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjU6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfQU5EX0NUTCA/IEFSX0V4dEFuZEN0bCA6IDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODItXHRXUklURV9PTkNFKGFkcy1cdTAwM2Vkc19jdGwwLCAoaS1cdTAwM2Vwa3RfbGVuIFx1MDAyNiBBUl9GcmFtZUxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjgzOlx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfVk1GID8gQVJfVmlydE1vcmVGcmFnIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjg0LVx0XHR8IFNNKGktXHUwMDNldHhwb3dlclswXSwgQVJfWG1pdFBvd2VyMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg1Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfVkVPTCA/IEFSX1ZFT0wgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODY6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19JTlRSRVEgPyBBUl9UeEludHJSZXEgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODc6XHRcdHwgKGktXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gQVJfRGVzdElkeFZhbGlkIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg4Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfQ0xSRE1BU0sgPyBBUl9DbHJEZXN0TWFzayA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4OTpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX1JUU0VOQSA/IEFSX1JUU0VuYWJsZSA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI5MDpcdFx0ICAgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19DVFNFTkEgPyBBUl9DVFNFbmFibGUgOiAwKSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMTY9c3RhdGljIGludCBhcjkwMDJfaHdfcHJvY190eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMwLVx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfVHhPcEV4Y2VlZGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozMzE6XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YVFhPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMyLVx0dHMtXHUwMDNldGlkID0gTVMoc3RhdHVzLCBBUl9UeFRpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDAtXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9UeEJhU3RhdHVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0MTpcdFx0dHMtXHUwMDNldHNfZmxhZ3MgfD0gQVRIOUtfVFhfQkE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0Mi1cdFx0dHMtXHUwMDNlYmFfbG93ID0gYWRzLVx1MDAzZUFSX0JhQml0bWFwTG93O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ3LVx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfRnJtWG1pdE9LKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNDg6XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWF9BQ0tFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ5LVx0ZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM1MC1cdFx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfRXhjZXNzaXZlUmV0cmllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzUxOlx0XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YUkVUUlk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk2MDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gbG9jYXRpb24gZm9yIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRyaXZlci4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhbGwgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgZGVwZW5kZW5jaWVzLCBmZWF0dXJlIHRvZ2dsZXMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZWZhdWx0IHZhbHVlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGJ1aWx0LCBhbmQgaG93IHZhcmlvdXMgZmVhdHVyZXMgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEl0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIEFUSF9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zL1F1YWxjb21tIGRldmljZXNcJiMzNDtcbiAgIDc6XHRcdGRlZmF1bHQgeVxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAxMDpcdFxuICAxMTpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTI6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxNDpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIHRoaXMgbW9kdWxlIHlvdSBjYW4gdmlzaXQ6XG4gIDE3Olx0XG4gIDE4Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoXG4gIDE5Olx0XG4gIDIwOlx0XHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxuICAyMTpcdFxuICAyMjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL0F0aGVyb3NcbiAgMjM6XHRcbiAgMjQ6XHRpZiBXTEFOX1ZFTkRPUl9BVEhcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgQVRIX0RFQlVHXG4gIDI3Olx0XHRib29sIFwmIzM0O0F0aGVyb3Mgd2lyZWxlc3MgZGVidWdnaW5nXCYjMzQ7XG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXG4gIDMwOlx0XHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBBVEhfVFJBQ0VQT0lOVFNcbiAgMzM6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyB0cmFjaW5nXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xuICAzNTpcdFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzg6XHRcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfUkVHX0hJTlRTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzM4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgd2lyZWxlc3MgZHJpdmVycywgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgc3BlY2lmaWMgcG9pbnQgb2YgcmVmZXJlbmNlLiBMZXQgbWUgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiBsaW5lIDQwIGFuZCBiZXlvbmQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBzZWdtZW50IG9mIHRoZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciB3aWxsIGJlIGRlZmluZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIGZvciB0aGUgdXNlciBvciBieSBkZWZhdWx0LCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGVzZSBvcHRpb25zIHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBmZWF0dXJlIHNldC4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQxOlx0XHRib29sIFwmIzM0O0F0aGVyb3MgZHluYW1pYyB1c2VyIHJlZ3VsYXRvcnkgaGludHNcJiMzNDtcbiAgNDI6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4gIDQzOlx0XHRkZWZhdWx0IG5cbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcbiAgNDY6XHRcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XG4gIDQ3Olx0XHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxuICA0ODpcdFxuICA0OTpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9DRVJUX1RFU1RJTkdcbiAgNTA6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSB0ZXN0aW5nXCYjMzQ7XG4gIDUxOlx0XHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4gIDUyOlx0XHRkZWZhdWx0IG5cbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBvbiBzeXN0ZW1zXG4gIDU1Olx0XHQgIHVuZGVyZ29pbmcgY2VydGlmaWNhdGlvbiB0ZXN0aW5nLlxuICA1NjpcdFxuICA1NzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZ1wmIzM0O1xuICA1ODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wmIzM0O1xuICA1OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1wmIzM0O1xuICA2MDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWdcJiMzNDtcbiAgNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnXCYjMzQ7XG4gIDYyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcJiMzNDtcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCYjMzQ7XG4gIDY0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcJiMzNDtcbiAgNjU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCYjMzQ7XG4gIDY2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wmIzM0O1xuICA2NzpcdFxuICA2ODpcdGVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgYW4gQXRoZXJvcyBXTEFOIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGVpciBvbGRlciwgcG9zc2libHkgSFRDLXJlbGF0ZWQgaGFyZHdhcmUuICBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogYENPTkZJR19XTEFOX1ZFTkRPUl9BVEg9eWAgLSB5ZXAsIHRoYXQmIzM5O3Mgd2hhdCB3ZSB3YW50LiAgV2UmIzM5O3JlIGV4cGxpY2l0bHkgZW5hYmxpbmcgdGhlIEF0aGVyb3MgdmVuZG9yIGRyaXZlci4gTWFrZXMgc2Vuc2UuCgpOb3csIHRoZSBgQ09ORklHX0FUSDlLX0hUQz15IChvciBtKWAgbGluZSBpcyBuZXh0LiAgT2theSwgc28gd2UmIzM5O3ZlIGdvdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBsaWtlbHkgZm9yIG9sZGVyIFVTQiBBdGhlcm9zIGRldmljZXMuICBUaGUgJiMzNDsob3IgbSkmIzM0OyBpcyBrZXkg4oCTIHdlIGNhbiBlaXRoZXIgYnVpbGQgaXQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBvciBtYWtlIGl0IGEgbW9kdWxlLiBUaGUgY2hvaWNlIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLCBvZiBjb3Vyc2UuIEZvciB0aGlzIHByb2plY3QsIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvcyBhbmQgY29ucyBvZiBib3RoIG9wdGlvbnMsIGJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMuCgpMZXQmIzM5O3Mgc2Vl4oCmaXQgKmRlcGVuZHMqIG9uIHNldmVyYWwgb3RoZXIgdGhpbmdzLCBuYXR1cmFsbHk6IGBDT05GSUdfVVNCYCwgYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfV0xBTmAsIGFuZCBgQ09ORklHX05FVERFVklDRVNgLiAgRHVoLiAgVVNCIGlzIG9idmlvdXM7IHRoZSBkcml2ZXIgbmVlZHMgdGhlIFVTQiBzdWJzeXN0ZW0uICBgTUFDODAyMTFgIGlzIHRoZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIHNvIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIGBXTEFOYCBpcyB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBlbmFibGUsIGFuZCBgTkVUREVWSUNFU2AgaXMgdGhlIGdlbmVyYWwgbmV0d29yayBkZXZpY2Ugc3VwcG9ydC4gIEFsbCB0aGUgcHJlcmVxdWlzaXRlcyBzZWVtIHNlbnNpYmxlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgbWFzdGVyIEtjb25maWcgZmlsZSBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSBuZWVkIHRvIHRha2UgYSBxdWljayBwZWVrIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IG9wdGlvbnMgaW4gdGhhdCBkaXJlY3RvcnkuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcJiMzNDtcbiAgMzg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvS2NvbmZpZ1wmIzM0O1xuICAzOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXCYjMzQ7XG4gIDQwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTgzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTU3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB0aGUgYXRoOWtfaHRjIFVTQiBUWCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbWFkZSBzb21lIGNoYW5nZXMgdG8gdGhlIFRYIGFnZ3JlZ2F0aW9uIGxvZ2ljIGluIGBhdGg5a19odGNgIGZvciB0aGUgVVNCIGludGVyZmFjZS4gRmlyc3QsIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgaW5jbHVkaW5nICZsdDtsaW51eC9tYXRoLmgmZ3Q7LiBMZXQgbWUgbG9vayB0aHJvdWdoIHRoZSBkaWZmIGluIGRldGFpbC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgYWdncmVnYXRpbmcgbXVsdGlwbGUgVFggcGFja2V0cyBpbnRvIGEgc2luZ2xlIFVTQiB0cmFuc2Zlci4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCk9rYXksIHNvIHRoZSBpbXBvcnRhbnQgcGFydHMgSSBzZWU6IEZpcnN0LCB0aGV5IG5vdyB1c2UgYHNrYl9wZWVrYCBiZWZvcmUgYF9fc2tiX2RlcXVldWVgIGFuZCBjaGVjayBpZiB0aGUgcGFja2V0IGZpdHMgd2l0aGluIHRoZSBtYXhpbXVtIFRYIGJ1ZmZlciBzaXplIChgTUFYX1RYX0JVRl9TSVpFYCkuIFRoaXMgaXMgZ29vZC4gSG93ZXZlciwgSSB0aGluayBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIGlzc3VlIGhlcmU6IElmIGB0eF9za2JfY250YCBpcyBncmVhdGVyIHRoYW4gemVybywgYnV0IHRoZSAqZmlyc3QqIHBhY2tldCBkb2VzbiYjMzk7dCBmaXQgKGR1ZSB0byBpdHMgbGVuZ3RoIG9yIHRoZSBjdXJyZW50IG9mZnNldCksIG9yIGlzIGBOVUxMYCwgdGhlIGxvb3Agd2lsbCBicmVhayBpbW1lZGlhdGVseS4gSWYgdGhpcyBoYXBwZW5zLCBJIHNlZSB0aGF0IHRoZSBgdHhfYnVmLSZndDtsZW5gIHdpbGwgYmUgemVyby4gVGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSwgaWYgSSYjMzk7bSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgZHJpdmVyIHdpbGwgdGhlbiBhdHRlbXB0IHRvIHN1Ym1pdCBhIHplcm8tbGVuZ3RoIFVTQiBidWxrIHRyYW5zZmVyLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSB2YXJpZXR5IG9mIHByb2JsZW1zLCBwb3RlbnRpYWxseSBpbmNsdWRpbmcgYSBsb2NrdXAgb3IgYW4gaW5maW5pdGUgbG9vcCB3aGVuIHRoZSBkcml2ZXIgaXMgY2FsbGVkIGFnYWluLiBJdCBzZWVtcyB0aGF0IHRoZSBwYWNrZXRzIG1pZ2h0IGp1c3Qgc3RheSBpbiB0aGUgcXVldWUsIHdhaXRpbmcgZm9yIHByb2Nlc3NpbmcuCgpGdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGEgcGFja2V0ICpsYXJnZXIqIHRoYW4gYE1BWF9UWF9CVUZfU0laRWAgaXMgZW5xdWV1ZWQsIGFsdGhvdWdoIHRoaXMgd291bGQgYmUgdW5saWtlbHkgZ2l2ZW4gdGhlIE1UVSBjaGVja3MsIGJ1dCBhIGZ1enplciBvciBjcmFmdGVkIHBhY2tldCBtaWdodCBieXBhc3MgdGhlc2UgY2hlY2tzLCB0aGVuIGBza2JfcGVla2AgaXMgY2FsbGVkIGFuZCBpbW1lZGlhdGVseSBicmVha3MgdGhlIGxvb3AsIGFuZCB0aGUgbmV4dCBjYWxsIHdpbGwgcmVwZWF0IHRoZSBwcm9jZXNzIGZvcmV2ZXIuCgpUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4gVGhlIFRYIHBhY2tldCBhZ2dyZWdhdGlvbiBwYXRoIGlzIGV4cG9zZWQgdGhyb3VnaCBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9jZmc4MDIxMSwgYW5kIGRpcmVjdGx5IHdpdGggcmF3IHBhY2tldHMvc29ja2V0IGluamVjdGlvbi4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgZm9yIG15IGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYF9faGlmX3VzYl90eGAsIGBoaWZfdXNiX3NlbmRfdHhgICh0aGUgY2FsbGVyIG9mIGBfX2hpZl91c2JfdHhgKSwgYGhpZl91c2Jfc2VuZGAsIGBhdGg5a19odGNfdHhfZGF0YWAsIGBodGNfaXNzdWVfc2VuZGAvYGh0Y19zZW5kYCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmcm9tIHRoZSBkcml2ZXImIzM5O3MgVFggZW50cnkgcG9pbnQgZG93biB0byB0aGUgVVNCIHN1Ym1pc3Npb24gYW5kIGNvbXBsZXRpb24gaGFuZGxpbmcuCgpJIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSBub3QgdG9vIGdlbmVyaWMsIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgYXQgdGhlbSBpbiBkZXRhaWwgd2l0aGluIHRoZSBkcml2ZXImIzM5O3Mgc291cmNlIHRvIHNlZSBleGFjdGx5IGhvdyB0aGlzIFRYIHBhdGggaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBuYW1lcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjX3R4X2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjYwOnN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNjEtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzQwPWludCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zODEtXHRpZiAoaWVlZTgwMjExX2lzX2RhdGEoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM4MjpcdFx0YXRoOWtfaHRjX3R4X2RhdGEocHJpdiwgdmlmLCBza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzgzLVx0XHRcdFx0ICBzdGFfaWR4LCB2aWZfaWR4LCBzbG90LCBpc19jYWIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgzNgoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBhdGg5a19odGNfdHhfc3RhcnRgIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgYWxsIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGBhdGg5a19odGNfdHhfc3RhcnRgIGlzIGludm9sdmVkLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBLY29uZmlnIG9wdGlvbnMgZW5hYmxlZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGBXTEFOYCwgYW5kIGBORVRERVZJQ0VTYCBhcmUgYWxsIHNldCBjb3JyZWN0bHkuCgpBbHJpZ2h0LCBub3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gTG9va2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUgY29uZmlybXMgdGhhdCBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGRlcGVuZHMgb24gYFdMQU5fVkVORE9SX0FUSGAgdW5kZXIgYFdMQU5gLiBTbyB5ZXMsIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAgYXJlIGluZGVlZCB0aGUgY29yZSBjb25maWdzIGhlcmUuIFRoYXQmIzM5O3MgZ29vZC4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBmdXp6aW5nIHN0cmF0ZWd5IGl0c2VsZi4gVGhlIGxvZ2ljIHNheXMgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBhZ3JlZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZXNzZXMgd2l0aCBwYWNrZXQgYWdncmVnYXRpb24gYW5kIGhvdyBsZW5ndGgvb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCB3aXRoaW4gYF9faGlmX3VzYl90eGAsIGEgZnVuY3Rpb24gaW4gdGhlIGBhdGg5a19odGNgIFVTQiBXaUZpIGRyaXZlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBhbmQgc3RhbmRhcmQgbWFjODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiwgc28gdGhlIGF0dGFjayBzdXJmYWNlIGlzIGRlZmluaXRlbHkgcHJlc2VudC4KCkkmIzM5O3ZlIGdvdCB0aGUgZm9jdXMgc3ltYm9scyBpZGVudGlmaWVkOiBgX19oaWZfdXNiX3R4YCwgYGhpZl91c2Jfc2VuZF90eGAsIGBoaWZfdXNiX3NlbmRgLCBgaGlmX3VzYl90eF9jYmAsIGBhdGg5a19odGNfdHhfc3RhcnRgLCBhbmQgYGF0aDlrX2h0Y190eF9kYXRhYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSYjMzk7bGwgYmUgdGFyZ2V0aW5nIGR1cmluZyB0aGUgZnV6emluZy4KCkZpbmFsbHksIGp1c3QgdG8gcmVpdGVyYXRlLCBteSBlbmFibGUgY29uZmlncyBhcmU6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAuCgpPa2F5LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIHBsYW4gaGVyZS4gVGltZSB0byBgc2V0LXJlc3VsdHNgIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9BVEgmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faGlmX3VzYl90eCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3NlbmRfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDssCiAgICAmIzM0O2hpZl91c2JfdHhfY2ImIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX3R4X3N0YXJ0JiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBhZ2dyZWdhdGlvbiBib3VuZGFyeSBjaGVja3MsIHF1ZXVlIGhhbmRsaW5nLCBhbmQgYnVmZmVyIGxlbmd0aC9vZmZzZXQgY2FsY3VsYXRpb25zIGluIF9faGlmX3VzYl90eCBmb3IgdGhlIGF0aDlrX2h0YyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldHdvcmsgcGFja2V0IHRyYW5zbWlzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJiMzOTtzIFRYIGFnZ3JlZ2F0aW9uIHBhdGggKGBfX2hpZl91c2JfdHhgKSBieSBjaGVja2luZyB0aGF0IHRoZSBhZ2dyZWdhdGVkIHBhY2tldCBzaXplIChgdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0YCkgZG9lcyBub3QgZXhjZWVkIGBNQVhfVFhfQlVGX1NJWkVgLCBhbmQgdXBkYXRpbmcgYHR4X2J1Zi1cdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVx1MDAzZW9mZnNldGAgcGVyIHBhY2tldCB1c2luZyBgcm91bmRfdXAoKWAuXG5cbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cdTAwM2VidWZgLiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgb3IgbGlzdC9za2IgbWlzbWFuYWdlbWVudCBpbiB0aGlzIHBhdGggaXMgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi5cbi0gS01TQU4gYXBwbGljYWJpbGl0eTogTm8ga2VybmVsIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGludHJvZHVjZWQgb3IgcmVhZCwgYW5kIGFsbCBidWZmZXIgbWVtb3J5IChgdHhfYnVmYCkgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX2ZsZXhgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgcmlza3MuXG5cblRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZDsgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTE5ZDQyMGMwNGU0MGI2NTJkZDNhNDFiODc0MjYzNjk1MTRlMTU5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21hdGguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogCkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCXR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbnNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtoaWZfZGV2LSZndDt0eC50eF9za2JfcXVldWUpOwomIzQzOwkJbnNrYiA9IHNrYl9wZWVrKCZhbXA7aGlmX2Rldi0mZ3Q7dHgudHhfc2tiX3F1ZXVlKTsKJiM0MzsJCWlmICghbnNrYikKJiM0MzsJCQlicmVhazsKIAotCQkvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqLwotCQlCVUdfT04oIW5za2IpOwomIzQzOwkJaWYgKHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFKQomIzQzOwkJCWJyZWFrOwogCiYjNDM7CQluc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO2hpZl9kZXYtJmd0O3R4LnR4X3NrYl9xdWV1ZSk7CiAJCWhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQtLTsKIAogCQlidWYgPSB0eF9idWYtJmd0O2J1ZjsKQEAgLTM0MiwxMyAmIzQzOzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldikKIAkJKmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7CiAJCWJ1ZiAmIzQzOz0gNDsKIAkJbWVtY3B5KGJ1ZiwgbnNrYi0mZ3Q7ZGF0YSwgbnNrYi0mZ3Q7bGVuKTsKLQkJdHhfYnVmLSZndDtsZW4gPSBuc2tiLSZndDtsZW4gJiM0MzsgNDsKLQotCQlpZiAoaSAmbHQ7ICh0eF9za2JfY250IC0gMSkpCi0JCQl0eF9idWYtJmd0O29mZnNldCAmIzQzOz0gKCgodHhfYnVmLSZndDtsZW4gLSAxKSAvIDQpICYjNDM7IDEpICogNDsKLQotCQlpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKQotCQkJdHhfYnVmLSZndDtsZW4gJiM0Mzs9IHR4X2J1Zi0mZ3Q7b2Zmc2V0OwomIzQzOwkJdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDsKJiM0MzsJCXR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNCk7CiAKIAkJX19za2JfcXVldWVfdGFpbCgmYW1wO3R4X2J1Zi0mZ3Q7c2tiX3F1ZXVlLCBuc2tiKTsKIAkJVFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIGl0cyBTdXJyb3VuZGluZ3MqKgoKUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5zdGluY3QgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gVGhhdCBmaWxlIHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBvaW50IG9mIGRlcGFydHVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlIGluIGEgd2lyZWxlc3MgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIHRoZSB0b29scyBhbmQgc3RhcnQgc2lmdGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gMzEwOlx0e1xuIDMxMTpcdFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcbiAzMTI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiAzMTM6XHRcdGludCByZXQgPSAwLCBpO1xuIDMxNDpcdFx0dTE2IHR4X3NrYl9jbnQgPSAwO1xuIDMxNTpcdFx0dTggKmJ1ZjtcbiAzMTY6XHRcdF9fbGUxNiAqaGRyO1xuIDMxNzpcdFxuIDMxODpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCA9PSAwKVxuIDMxOTpcdFx0XHRyZXR1cm4gMDtcbiAzMjA6XHRcbiAzMjE6XHRcdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG4gMzIyOlx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZikpXG4gMzIzOlx0XHRcdHJldHVybiAwO1xuIDMyNDpcdFxuIDMyNTpcdFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XG4gMzI2Olx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbiAzMjc6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuIDMyODpcdFxuIDMyOTpcdFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIDMzMDpcdFxuIDMzMTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbiAzMzI6XHRcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzMzM6XHRcdFx0aWYgKCFuc2tiKVxuIDMzNDpcdFx0XHRcdGJyZWFrO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4gMzM3Olx0XHRcdFx0YnJlYWs7XG4gMzM4Olx0XG4gMzM5Olx0XHRcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzNDA6XHRcdFx0aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LS07XG4gMzQxOlx0XG4gMzQyOlx0XHRcdGJ1ZiA9IHR4X2J1Zi1cdTAwM2VidWY7XG4gMzQzOlx0XHRcdGJ1ZiAmIzQzOz0gdHhfYnVmLVx1MDAzZW9mZnNldDtcbiAzNDQ6XHRcdFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcbiAzNDU6XHRcdFx0KmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihuc2tiLVx1MDAzZWxlbik7XG4gMzQ2Olx0XHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIDM0NzpcdFx0XHRidWYgJiM0Mzs9IDQ7XG4gMzQ4Olx0XHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuIDM0OTpcdFx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuIDM1MDpcdFx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcbiAzNTM6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHR1c2JfZmlsbF9idWxrX3VyYih0eF9idWYtXHUwMDNldXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMzU3Olx0XHRcdFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcbiAzNTg6XHRcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG4gMzU5Olx0XHRcdFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xuIDM2MDpcdFxuIDM2MTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG4gMzYyOlx0XHRpZiAocmV0KSB7XG4gMzYzOlx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbiAzNjQ6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbiAzNjU6XHRcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDM2NjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9idWYpO1xuIDM2NzpcdFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuIDM2ODpcdFx0fSBlbHNlIHtcbiAzNjk6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XG4gMzcyOlx0XHRyZXR1cm4gcmV0O1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzc2Olx0e1xuIDM3NzpcdFx0c3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDtcbiAzNzg6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMzc5Olx0XHRpbnQgcmV0ID0gMDtcbiAzODA6XHRcbiAzODE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuIDM4MjpcdFxuIDM4MzpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEhJRl9VU0JfVFhfU1RPUCkge1xuIDM4NDpcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuIDM4NTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAzODY6XHRcdH1cbiAzODc6XHRcbiAzODg6XHRcdC8qIENoZWNrIGlmIHRoZSBtYXggcXVldWUgY291bnQgaGFzIGJlZW4gcmVhY2hlZCAqL1xuIDM4OTpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2UgTUFYX1RYX0JVRl9OVU0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhlIGBoaWZfdXNiX3R4X2NiYCBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgaGlmX3VzYi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pdCBidWZmZXIgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCBpbiByZWxhdGlvbiB0byB0aGF0IGNhbGxiYWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGF0YSBpcyBhY3R1YWxseSBwcmVwYXJlZCBmb3IgYW5kIHRyaWdnZXJlZCB0byBiZSB0cmFuc21pdHRlZCBvdmVyIFVTQi4gTG9va2luZyBhdCB0aGlzIGNhbGxiYWNrIGluIGlzb2xhdGlvbiBpc24mIzM5O3QgZ29pbmcgdG8gZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgaGlmX3VzYi5jYCwgdGhlIGludGVyYWN0aW9ucywgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgYnVmZmVyIGxpZmVjeWNsZSDigJMgZnJvbSBpbml0aWFsaXphdGlvbiwgdGhyb3VnaCBkYXRhIHBvcHVsYXRpb24sIGFuZCBmaW5hbGx5LCB0byB3aGVuIHRoZSBgaGlmX3VzYl90eF9jYmAgZ2V0cyBpbnZva2VkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyBVU0IgdHJhbnNmZXIgbWVjaGFuaXNtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0Y2FzZSAtRU5PREVWOlxuIDI3MTpcdFx0Y2FzZSAtRVNIVVRET1dOOlxuIDI3MjpcdFx0XHR0eG9rID0gZmFsc2U7XG4gMjczOlx0XG4gMjc0Olx0XHRcdC8qXG4gMjc1Olx0XHRcdCAqIElmIHRoZSBVUkJzIGFyZSBiZWluZyBmbHVzaGVkLCBubyBuZWVkIHRvIGFkZCB0aGlzXG4gMjc2Olx0XHRcdCAqIFVSQiB0byB0aGUgZnJlZSBsaXN0LlxuIDI3NzpcdFx0XHQgKi9cbiAyNzg6XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jayk7XG4gMjc5Olx0XHRcdGlmIChoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX0ZMVVNIKSB7XG4gMjgwOlx0XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAyODE6XHRcdFx0XHRhdGg5a19za2JfcXVldWVfcHVyZ2UoaGlmX2RldiwgXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSk7XG4gMjgyOlx0XHRcdFx0cmV0dXJuO1xuIDI4MzpcdFx0XHR9XG4gMjg0Olx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jayk7XG4gMjg1Olx0XG4gMjg2Olx0XHRcdGJyZWFrO1xuIDI4NzpcdFx0ZGVmYXVsdDpcbiAyODg6XHRcdFx0dHhvayA9IGZhbHNlO1xuIDI4OTpcdFx0XHRicmVhaztcbiAyOTA6XHRcdH1cbiAyOTE6XHRcbiAyOTI6XHRcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCB0eG9rKTtcbiAyOTM6XHRcbiAyOTQ6XHRcdC8qIFJlLWluaXRpYWxpemUgdGhlIFNLQiBxdWV1ZSAqL1xuIDI5NTpcdFx0dHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgPSAwO1xuIDI5NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDI5NzpcdFxuIDI5ODpcdFx0LyogQWRkIHRoaXMgVFggYnVmZmVyIHRvIHRoZSBmcmVlIGxpc3QgKi9cbiAyOTk6XHRcdHNwaW5fbG9jayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2spO1xuIDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBCdWZmZXIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVtb3J5IGxheW91dCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgYHR4X2J1ZmAgc3RydWN0dXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBgdHhfYnVmYCAqaXRzZWxmKiBhbGxvY2F0ZWQ/IElzIGl0IG9uIHRoZSBzdGFjaywgaGVhcCwgb3Igc29tZSBvdGhlciBtZW1vcnkgcmVnaW9uPyBUaGF0IGNvbnRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgbGlmZXRpbWUgYW5kIHNjb3BlLgoKQW5kLCBldmVuIG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4gb2YgYHR4X2J1Zi0mZ3Q7YnVmYC4gVGhpcyBpcyB0aGUgKnJlYWwqIGJ1ZmZlciwgcmlnaHQ/IElzIGl0IGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgYXJyYXkgd2l0aGluIGB0eF9idWZgLCBvciBpcyBpdCBhIHBvaW50ZXIgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeT8gQW5kIGlmIHRoZSBsYXR0ZXIsIHdoZXJlIGFuZCBob3cgaXMgdGhhdCBtZW1vcnkgYmVpbmcgbWFuYWdlZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBgbWFsbG9jYCwgYSBjdXN0b20gYWxsb2NhdG9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZiBgdHhfYnVmLSZndDtidWZgIGlzIGtleSB0byBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGVuc3VyaW5nIHByb3BlciBkYXRhIGFjY2VzcyBhbmQgZGVhbGxvY2F0aW9uIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MjM0PXN0cnVjdCBhdGhfYXR4X3RpZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMjM4LVx0c3RydWN0IGF0aF90eHEgKnR4cTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjIzOTpcdHVuc2lnbmVkIGxvbmcgdHhfYnVmW0JJVFNfVE9fTE9OR1MoQVRIX1RJRF9NQVhfQlVGUyldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMjQwLVx0dTE2IHNlcV9zdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTI1ND1zdGF0aWMgdm9pZCBoaWZfdXNiX3R4X2NiKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU2Olx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI1Ny1cdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjYwOlx0aWYgKCF0eF9idWYgfHwgIXR4X2J1Zi1cdTAwM2VoaWZfZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNjEtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjM6XHRoaWZfZGV2ID0gdHhfYnVmLVx1MDAzZWhpZl9kZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI4MC1cdFx0XHRzcGluX3VubG9jayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODE6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX3B1cmdlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yODItXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyOTI6XHRhdGg5a19za2JfcXVldWVfY29tcGxldGUoaGlmX2RldiwgXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgdHhvayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjk0LVx0LyogUmUtaW5pdGlhbGl6ZSB0aGUgU0tCIHF1ZXVlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NTpcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjk2Olx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yOTktXHRzcGluX2xvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAwOlx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAxOlx0aGlmX2Rldi1cdTAwM2V0eC50eF9idWZfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVx0aWYgKCEoaGlmX2Rldi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMxMTpcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMi1cdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyMS1cdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyMjpcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzIzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMjU6XHR0eF9idWYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI2Olx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfcGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyNzpcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMzNjpcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNCBcdTAwM2UgTUFYX1RYX0JVRl9TSVpFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MjpcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzQzOlx0XHRidWYgJiM0Mzs9IHR4X2J1Zi1cdTAwM2VvZmZzZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0NC1cdFx0aGRyID0gKF9fbGUxNiAqKWJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0OC1cdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0OTpcdFx0dHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzUwOlx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTI6XHRcdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM1My1cdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1NjpcdHVzYl9maWxsX2J1bGtfdXJiKHR4X2J1Zi1cdTAwM2V1cmIsIGhpZl9kZXYtXHUwMDNldWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzU3LVx0XHRcdCAgdXNiX3NuZGJ1bGtwaXBlKGhpZl9kZXYtXHUwMDNldWRldiwgVVNCX1dMQU5fVFhfUElQRSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1ODpcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1OTpcdFx0XHQgIGhpZl91c2JfdHhfY2IsIHR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYxOlx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2Mi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYzOlx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2NDpcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY1Olx0XHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2NjpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY3Olx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNjgtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxMi1cdC8qIENoZWNrIGlmIEFNUERVcyBoYXZlIHRvIGJlIHNlbnQgaW1tZWRpYXRlbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDEzOlx0aWYgKChoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQgPT0gTUFYX1RYX1VSQl9OVU0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXHQgICAgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2MgMikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQzNT1zdGF0aWMgdm9pZCBoaWZfdXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzNy1cdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiA9IGhpZl9oYW5kbGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQzODpcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEwsICp0eF9idWZfdG1wID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDM5LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ0OC1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NDk6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTAtXHRcdFx0XHQgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nLCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1MTpcdFx0dXNiX2dldF91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ1Mi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDUzOlx0XHR1c2Jfa2lsbF91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NDpcdFx0bGlzdF9kZWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NTU6XHRcdHVzYl9mcmVlX3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDU2Olx0XHRrZnJlZSh0eF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTctXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODAyPXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODA0Olx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTCwgKnR4X2J1Zl90bXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MDUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODA3LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgwODpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgwOTpcdFx0XHRcdCBcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZiwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MTA6XHRcdGxpc3RfZGVsKFx1MDAyNnR4X2J1Zi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODExOlx0XHR1c2JfZnJlZV91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMjpcdFx0a2ZyZWUodHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODEzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODIwLVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyMTpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyMi1cdFx0XHRcdCBcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3BlbmRpbmcsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODIzOlx0XHR1c2JfZ2V0X3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODI0LVx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MjU6XHRcdHVzYl9raWxsX3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODI2Olx0XHRsaXN0X2RlbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNzpcdFx0dXNiX2ZyZWVfdXJiKHR4X2J1Zi1cdTAwM2V1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mjg6XHRcdGtmcmVlKHR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyOS1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz04MzY9c3RhdGljIGludCBhdGg5a19oaWZfdXNiX2FsbG9jX3R4X3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04Mzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mzg6XHRzdHJ1Y3QgdHhfYnVmICp0eF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgzOS1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0MTpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQyLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg0Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9UWF9VUkJfTlVNOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NDg6XHRcdHR4X2J1ZiA9IGt6YWxsb2NfZmxleCgqdHhfYnVmLCBidWYsIE1BWF9UWF9CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0OTpcdFx0aWYgKCF0eF9idWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MC1cdFx0XHRnb3RvIGVycjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTI6XHRcdHR4X2J1Zi1cdTAwM2V1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTM6XHRcdGlmICghdHhfYnVmLVx1MDAzZXVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU0LVx0XHRcdGdvdG8gZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1NjpcdFx0dHhfYnVmLVx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTc6XHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTk6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODYwLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg2MjpcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCA9IE1BWF9UWF9VUkJfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjUtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NjY6XHRrZnJlZSh0eF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjctXHRhdGg5a19oaWZfdXNiX2RlYWxsb2NfdHhfdXJicyhoaWZfZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oPTM5PWV4dGVybiBpbnQgaHRjX3VzZV9kZXZfZnc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6Nzk6c3RydWN0IHR4X2J1ZiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oLTgwLVx0dTE2IGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oPTk3PXN0cnVjdCBoaWZfdXNiX3R4IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtOTgtXHR1OCBmbGFncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6OTk6XHR1OCB0eF9idWZfY250O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC0xMDAtXHR1MTYgdHhfc2tiX2NudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAxLVx0c3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9za2JfcXVldWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oOjEwMjpcdHN0cnVjdCBsaXN0X2hlYWQgdHhfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC0xMDMtXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X3BlbmRpbmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0zMTc9c3RhdGljIHZvaWQgYXRoX3R4X3VwZGF0ZV9iYXcoc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsIHN0cnVjdCBhdGhfYnVmICpiZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MzI5Olx0X19jbGVhcl9iaXQoY2luZGV4LCB0aWQtXHUwMDNldHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzozMzE6XHR3aGlsZSAodGlkLVx1MDAzZWJhd19oZWFkICE9IHRpZC1cdTAwM2ViYXdfdGFpbCBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KHRpZC1cdTAwM2ViYXdfaGVhZCwgdGlkLVx1MDAzZXR4X2J1ZikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzMyLVx0XHRJTkNSKHRpZC1cdTAwM2VzZXFfc3RhcnQsIElFRUU4MDIxMV9TRVFfTUFYKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTMzOT1zdGF0aWMgdm9pZCBhdGhfdHhfYWRkdG9fYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0zNDktXHRjaW5kZXggPSAodGlkLVx1MDAzZWJhd19oZWFkICYjNDM7IGluZGV4KSBcdTAwMjYgKEFUSF9USURfTUFYX0JVRlMgLSAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MzUwOlx0X19zZXRfYml0KGNpbmRleCwgdGlkLVx1MDAzZXR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTM1MS1cdGZpLVx1MDAzZWJhd190cmFja2VkID0gMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE1NzE9aW50IGF0aF90eF9hZ2dyX3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTYwMzpcdG1lbXNldCh0eHRpZC1cdTAwM2V0eF9idWYsIDAsIHNpemVvZih0eHRpZC1cdTAwM2V0eF9idWYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYwNC1cdHR4dGlkLVx1MDAzZWJhd19oZWFkID0gdHh0aWQtXHUwMDNlYmF3X3RhaWwgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYzMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgVFggQWdncmVnYXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGRvaW5nIGFuZCB3aGF0IHRoaXMgcGF0Y2ggaXMgYXR0ZW1wdGluZyB0byBmaXguIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1bmNvbmRpdGlvbmFsbHkgZGVxdWV1aW5nIHVwIHRvIGB0eF9za2JfY250YCBza2JzLiBUaGF0IGFscmVhZHkgcmFpc2VzIGEgZmxhZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBjb3VsZCBoYXZlIGJlZW4gd3JpdGluZyBpbnRvIGB0eF9idWYtJmd0O2J1ZiAmIzQzOyB0eF9idWYtJmd0O29mZnNldGAgKndpdGhvdXQqIGFueSBib3VuZGFyeSBjaGVja3MhIFNwZWNpZmljYWxseSwgd2l0aG91dCBjaGVja2luZyBpZiB0aGUgY3VycmVudCBgb2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0YCBleGNlZWRzIGBNQVhfVFhfQlVGX1NJWkVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3YWl0aW5nIHRvIGhhcHBlbi4KClRoZSBwYXRjaCB0cmllcyB0byBhZGRyZXNzIHRoaXMuIE5vdywgYmVmb3JlIGRlcXVldWluZywgdGhlcmUmIzM5O3MgYSBjaGVjayB1c2luZyBgc2tiX3BlZWtgIHRvIGxvb2sgYXQgdGhlIG5leHQgU0tCLiAgSWYgdGhlIGNvbWJpbmVkIGxlbmd0aCB3b3VsZCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIHRoZSBsb29wIGJyZWFrcy4gKlRoZW4qLCBhbmQgb25seSB0aGVuLCBkb2VzIGl0IGRlcXVldWUgd2l0aCBgX19za2JfZGVxdWV1ZWAuIFRoZSBvcmlnaW5hbCB1bmNvbmRpdGlvbmFsIGBCVUdfT05gIGNhbGwgaXMgbm93IHJlcGxhY2VkIHdpdGggdGhpcyBsZW5ndGggY2hlY2sgd2hpY2ggaXMgYmV0dGVyIHRoYW4gYSBwYW5pYy4KCk5vdywgbGV0JiMzOTtzIHRhbGsgYWJvdXQgdGhlIHRyaWNreSBiaXQgd2l0aCBgdHhfYnVmLSZndDtsZW5gLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgc29tZSBwZWN1bGlhciBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YC4gSXQgc2VlbXMgdGhhdCBpZiB0aGUgbG9vcCBicm9rZSBlYXJseSwgZHVlIHRvIGNhcGFjaXR5IGlzc3VlcyBvciBhbm90aGVyIGNvbmRpdGlvbiwgdGhlIGZpbmFsIGB0eF9idWYtJmd0O2xlbmAgd291bGQgb25seSBiZSB1cGRhdGVkIG9uIHRoZSAqbGFzdCogaXRlcmF0aW9uLCB3aGljaCBpcyB3cm9uZy4gVGhpcyBpcyB3aGVyZSBJIHRoaW5rIHRoZSByZWFsIGJ1ZyB3YXMuCgpUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyB0byBjYWxjdWxhdGUgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YCBhcmUgY3JpdGljYWwuIEl0JiMzOTtzIG5vdyBjYWxjdWxhdGVkIGluY3JlbWVudGFsbHkgYW5kIGNvcnJlY3RseSB3aXRoaW4gdGhlIGxvb3A6ICBgdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDtgIGFuZCBgdHhfYnVmLSZndDtvZmZzZXQgJiM0Mzs9IHJvdW5kX3VwKG5za2ItJmd0O2xlbiAmIzQzOyA0LCA0KTtgLiBUaGlzIG1ha2VzIG1vcmUgc2Vuc2UgYW5kIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGxhc3QgaXRlcmF0aW9uLiBUaGlzIGNoYW5nZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwsIGJ1dCB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGN1bGF0aW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUsIGJlY2F1c2UgdGhlIGxvb3AgbWlnaHQgdGVybWluYXRlIGVhcmx5LiBUaGlzIGZpeGVzIHRoZSBvZmYtYnktb25lIGVycm9ycyBmcm9tIHRoZSBvbGQgbWV0aG9kLCBtYWtpbmcgaXQgY29ycmVjdC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXNlIGNhbGN1bGF0aW9ucyBhcmUgY29uc2lzdGVudCB3aXRoIGBzdHJ1Y3QgdHhfYnVmYCYjMzk7cyBhbGlnbm1lbnQgYW5kIHBhZGRpbmcgcmVxdWlyZW1lbnRzLCBob3dldmVyLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBzdHJ1Y3R1cmUgY2xvc2VseS4gVGhpcyBwYXRjaCBhcHBlYXJzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc1Olx0XG4gIDc2Olx0I2RlZmluZSBISUZfVVNCX01BWF9SWFBJUEVTIDJcbiAgNzc6XHQjZGVmaW5lIEhJRl9VU0JfTUFYX1RYUElQRVMgNFxuICA3ODpcdFxuICA3OTpcdHN0cnVjdCB0eF9idWYge1xuICA4MDpcdFx0dTE2IGxlbjtcbiAgODE6XHRcdHUxNiBvZmZzZXQ7XG4gIDgyOlx0XHRzdHJ1Y3QgdXJiICp1cmI7XG4gIDgzOlx0XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9xdWV1ZTtcbiAgODQ6XHRcdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldjtcbiAgODU6XHRcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiAgODY6XHRcdHU4IGJ1ZltdO1xuICA4NzpcdH07XG4gIDg4Olx0XG4gIDg5Olx0c3RydWN0IHJ4X2J1ZiB7XG4gIDkwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA5MTpcdFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xuICA5MjpcdH07XG4gIDkzOlx0XG4gIDk0Olx0I2RlZmluZSBISUZfVVNCX1RYX1NUT1AgIEJJVCgwKVxuICA5NTpcdCNkZWZpbmUgSElGX1VTQl9UWF9GTFVTSCBCSVQoMSlcbiAgOTY6XHRcbiAgOTc6XHRzdHJ1Y3QgaGlmX3VzYl90eCB7XG4gIDk4Olx0XHR1OCBmbGFncztcbiAgOTk6XHRcdHU4IHR4X2J1Zl9jbnQ7XG4gMTAwOlx0XHR1MTYgdHhfc2tiX2NudDtcbiAxMDE6XHRcdHN0cnVjdCBza19idWZmX2hlYWQgdHhfc2tiX3F1ZXVlO1xuIDEwMjpcdFx0c3RydWN0IGxpc3RfaGVhZCB0eF9idWY7XG4gMTAzOlx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X3BlbmRpbmc7XG4gMTA0Olx0XHRzcGlubG9ja190IHR4X2xvY2s7XG4gMTA1Olx0fTtcbiAxMDY6XHRcbiAxMDc6XHRzdHJ1Y3QgY21kX2J1ZiB7XG4gMTA4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDEwOTpcdFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4MAoJCQkJCQkJb3V0cHV0OiAyNjkKCQkJCQkJCXRob3VnaHRzOiAxNzg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFVTQiBISUYgVFggQWdncmVnYXRpb24gYW5kIE1lbW9yeSBTYWZldHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgcGFkZGluZyB3aXRoaW4gdGhlIGB0eF9idWYtJmd0O2J1ZmAgd2hlbiBhZ2dyZWdhdGluZyBwYWNrZXRzIGluIHRoZSBgYXRoOWtgIFVTQiBISUYgVFggcGF0aC4gIEkmIzM5O20gdHJhY2tpbmcgdGhlIGJlaGF2aW9yIGFmdGVyIGByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNClgLiAgVGhlIHBvdGVudGlhbCBmb3IgcGFkZGluZyBpbnRyb2R1Y2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IElzIHRoaXMgcGFkZGluZyBpbml0aWFsaXplZD8gIFRoZSBidWZmZXIgaXRzZWxmLCBgdHhfYnVmYCwgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NfZmxleGAuICpUaGF0JiMzOTtzIGdvb2QqLCBzbywgYXQgYWxsb2NhdGlvbiB0aGUgYnVmZmVyIGlzIHplcm9lZCBvdXQuIFRoZSBidWZmZXIgaXMgdGhlbiByZXVzZWQgYWZ0ZXIgYSB0cmFuc21pc3Npb24gdXNpbmcgYHR4X2J1Zi0mZ3Q7bGVuID0gdHhfYnVmLSZndDtvZmZzZXQgPSAwO2AsIGJ1dCBpdCBpcyAqbm90KiByZS16ZXJvZWQuICBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiB0aGlzIHBhdGguCgpDcnVjaWFsbHksIHRoaXMgZGF0YSBpcyBzZW50IHRvIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IHZpYSBgdXNiX2ZpbGxfYnVsa191cmJgIHRvIHRoZSBVU0IgZGV2aWNlIChgVVNCX1dMQU5fVFhfUElQRWApLiBTbywgbXkgZmlyc3QgYXNzdW1wdGlvbiBpcyB0aGF0LCBzaW5jZSBpdCBpcyBnb2luZyB0byBoYXJkd2FyZSwgdGhpcyBpc24mIzM5O3QgYSBkaXJlY3QgdXNlci1zcGFjZSBleHBvc3VyZS4gSG93ZXZlciwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgdG8gdGhlIFVTQiBkZXZpY2UuIEkgY2FuIGNvbmZpcm0gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCB1c2FnZSBkZXRhaWxzLCBhbmQgdGhlIHJlc2V0IG9mIHRoZSBgdHhfYnVmYCwgYW5kIGNhbiBjb25maXJtIHRoZSBidWZmZXIgZ29lcyB0byB0aGUgVVNCIGRldmljZS4KClRoYXQgbGVhZHMgbWUgdG8gY29uc2lkZXIgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gRG9lcyBLTVNBTiBldmVuIGFwcGx5IGhlcmU/IExldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEuIE15IGZpZWxkIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBLTVNBTiBpcyB0YXJnZXRlZCBhdCBtZW1vcnkgbGVha3MgdG8gdXNlciBzcGFjZS4gIEkgc2VlIGNyaXRlcmlhIGV4cGxpY2l0bHkgbGlzdGluZyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB2aWEgdGhpbmdzIGxpa2UgYGNvcHlfdG9fdXNlcmAsIGBwdXRfdXNlcmAsIGBuZXRsaW5rYCwgZXRjLiBJIGFsc28ga25vdyB0aGF0IEtNU0FOIGNoZWNrcyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIGFuZCBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuCgpTbywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgcGF0Y2ggaXRzZWxmIGFuZCB3aGF0IGl0IGZpeGVzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgd2hhdCB0aGUgY29kZSAqZGlkKiBwcmV2aW91c2x5LiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUgZGVxdWV1ZWQgdXAgdG8gYE1BWF9UWF9BR0dSX05VTWAgc2ticyB3aXRob3V0IGNoZWNraW5nIGFnZ3JlZ2F0aW9uIHNpemUuIFRoaXMgY291bGQgbGVhZCB0byBhIGhlYXAgYnVmZmVyIG92ZXJmbG93LiAgVGhlIHBhdGNoIG5vdyBjaGVja3MgZm9yIHRoYXQgb3ZlcmZsb3cgYW5kIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEl0IGFsc28gY29ycmVjdHMgY2FsY3VsYXRpb25zIG9mIGB0eF9idWYtJmd0O2xlbmAgYW5kIHRoZSBidWZmZXIgb2Zmc2V0LiBOb3cgdGhlIHBhdGNoIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgd3JpdGVzIGludG8gYHR4X2J1Zi0mZ3Q7YnVmYCwgcHJldmVudGluZyBhIHBvc3NpYmxlIE5VTEwgZGVyZWZlcmVuY2UgYW5kIGhhbmRsZXMgYWdncmVnYXRpb24gYnVmZmVyIGxpbWl0cyBjb3JyZWN0bHkuCgpEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlICphbnkqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzPyBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBhbGxvY2F0aW9uIHdpdGggYGt6YWxsb2NfZmxleGAsIHRoZSBpbml0aWFsaXphdGlvbi9yZXNldHRpbmcgb2YgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YCwgYW5kIHRoZSBjaGVja3MgZm9yIGBuc2tiYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbnNrYi0mZ3Q7bGVuYCBhbmQgYG5za2ItJmd0O2RhdGFgIHByZXZlbnRzIGludHJvZHVjaW5nIHRoaXMgaXNzdWUuIE5vIG5ldyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMgYXJlIHJlYWQgb3IgYnJhbmNoZWQgb24uIFRoZSBwYXRjaCYjMzk7cyBwcmltYXJ5IGZ1bmN0aW9uIGlzICoqYm91bmRzIGNoZWNraW5nIGFuZCBidWZmZXIgb3ZlcmZsb3cgcHJldmVudGlvbiBpbiB0aGUgYXRoOWsgVVNCIEhJRiBUWCBwYXRoKiouCgpUaGVyZWZvcmUsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgYW5kIHRoaXMgYXNzZXNzbWVudCwgdGhpcyBwYXRjaCAqZG9lcyBub3QqIGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTdGFuZGFyZCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBmdXp6aW5nIGlzICpwZXJmZWN0bHkgYWRlcXVhdGUqIHRvIGRldGVjdCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIHRvIHN0YXRlIHRoYXQgZXhwbGljaXRseS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZSBjaGVjayB1c2luZyB0aGUgS01TQU4gY3JpdGVyaWEuCjEuICBJcyBhIGtlcm5lbCBzdHJ1Y3R1cmUgc2VudCB0byB1c2VyIHNwYWNlPyBObywgb25seSBVU0IgZGV2aWNlIChidWxrIG91dCB0cmFuc2ZlcikuCjIuICBJcyB0aGVyZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vLgozLiAgQXJlIHRoZXJlIGNvbXBsZXggc3RydWN0dXJlcyBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgd2l0aCB1bmluaXQgZmllbGRzPyBOby4KNC4gIERvIHRoZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IE5vLiBgdHhfYnVmLSZndDtsZW5gIGNvbnRhaW5zIHRoZSBleGFjdCBieXRlIGNvdW50IG9mIHZhbGlkIGRhdGEsIGFuZCB0aGUgYnVmZmVyIChgYnVmYCkgd2FzIGBremFsbG9jYCYjMzk7ZCBpbml0aWFsbHkuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBgZmFsc2VgLiBJJiMzOTttIGdvaW5nIHRvIGRvY3VtZW50IHRoaXMgaW4gbXkgcmVhc29uaW5nIHdoZW4gY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOIGFwcGxpY2FiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6MTkuNjc0MDg4MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDc1ODUzMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCIsXG4gICAgXCJXTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oaWZfdXNiX3R4XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiLFxuICAgIFwiaGlmX3VzYl90eF9jYlwiLFxuICAgIFwiYXRoOWtfaHRjX3R4X3N0YXJ0XCIsXG4gICAgXCJhdGg5a19odGNfdHhfZGF0YVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDoxOS42NzQxMDEzMjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njk0NTUzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xcbkBAIC0xNCw2ICsxNCw3IEBAXFxuICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXFxuICAqL1xcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21hdGguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaHRjLmhcXFwiXFxuIFxcbkBAIC0zMjgsMTEgKzMyOSwxNCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuIFxcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdHhfc2tiX2NudDsgaSsrKSB7XFxuLVxcdFxcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbitcXHRcXHRuc2tiID0gc2tiX3BlZWsoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuK1xcdFxcdGlmICghbnNrYilcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcbi1cXHRcXHQvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqL1xcbi1cXHRcXHRCVUdfT04oIW5za2IpO1xcbitcXHRcXHRpZiAodHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0IFxcdTAwM2UgTUFYX1RYX0JVRl9TSVpFKVxcbitcXHRcXHRcXHRicmVhaztcXG4gXFxuK1xcdFxcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiBcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIFxcbiBcXHRcXHRidWYgPSB0eF9idWYtXFx1MDAzZWJ1ZjtcXG5AQCAtMzQyLDEzICszNDYsOCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuIFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KEFUSF9VU0JfVFhfU1RSRUFNX01PREVfVEFHKTtcXG4gXFx0XFx0YnVmICs9IDQ7XFxuIFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuLVxcdFxcdHR4X2J1Zi1cXHUwMDNlbGVuID0gbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4tXFxuLVxcdFxcdGlmIChpIFxcdTAwM2MgKHR4X3NrYl9jbnQgLSAxKSlcXG4tXFx0XFx0XFx0dHhfYnVmLVxcdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVxcdTAwM2VsZW4gLSAxKSAvIDQpICsgMSkgKiA0O1xcbi1cXG4tXFx0XFx0aWYgKGkgPT0gKHR4X3NrYl9jbnQgLSAxKSlcXG4tXFx0XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gKz0gdHhfYnVmLVxcdTAwM2VvZmZzZXQ7XFxuK1xcdFxcdHR4X2J1Zi1cXHUwMDNlbGVuID0gdHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0O1xcbitcXHRcXHR0eF9idWYtXFx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVxcdTAwM2VsZW4gKyA0LCA0KTtcXG4gXFxuIFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcXG4gXFx0XFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjIxLjE0NDI0NjMxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODA1OTUwMTI0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIixcbiAgICBcIldMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hpZl91c2JfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZF90eFwiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCIsXG4gICAgXCJoaWZfdXNiX3R4X2NiXCIsXG4gICAgXCJhdGg5a19odGNfdHhfc3RhcnRcIixcbiAgICBcImF0aDlrX2h0Y190eF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDA6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFwiaHRjLmhcIlxuIFxuQEAgLTMyOCwxMSArMzI5LDE0IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xuLVx0XHRuc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdG5za2IgPSBza2JfcGVlayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdGlmICghbnNrYilcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0LyogU2hvdWxkIG5ldmVyIGJlIE5VTEwgKi9cbi1cdFx0QlVHX09OKCFuc2tiKTtcbitcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQgXHUwMDNlIE1BWF9UWF9CVUZfU0laRSlcbitcdFx0XHRicmVhaztcbiBcbitcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgKzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdFx0KmhkcisrID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgKz0gNDtcbiBcdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG4tXHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSBuc2tiLVx1MDAzZWxlbiArIDQ7XG4tXG4tXHRcdGlmIChpIFx1MDAzYyAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgKyAxKSAqIDQ7XG4tXG4tXHRcdGlmIChpID09ICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZWxlbiArPSB0eF9idWYtXHUwMDNlb2Zmc2V0O1xuK1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCArIG5za2ItXHUwMDNlbGVuICsgNDtcbitcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpO1xuIFxuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIG5za2IpO1xuIFx0XHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjIxLjE0NDI0NzQ4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxNzcyOTk3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYGhpZl91c2IuY2AgaXMgdXNlZCBieSBgYXRoOWtfaHRjYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbj8gQ2FuIEkgaGl0IGl0IHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgYSBVU0IgZ2FkZ2V0IHNldHVwLCBtYXliZSByYXctZ2FkZ2V0LCB2aGNpLCBvciBzb21lIG90aGVyIGVtdWxhdGlvbj8gSXMgYGF0aDlrX2h0Y2AgZXZlbiAqZGVzaWduZWQqIHRvIGJlIGEgVVNCIHdpcmVsZXNzIGRyaXZlcj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIG1vZHVsZSBhbmQgVVNCLiBUaGUgbmV4dCBzdGVwLCB0aGVuLCBpcyB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBgYXRoOWtfaHRjYCBpcyBjb25maWd1cmVkIOKAkyB3aGF0IG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uIGFuZCBvcGVyYXRpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjI4LjMyMTU0OTYyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTkzMTU3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5MC1cXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0yMDY9Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVMQVlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgKz0gaHRjX2Rydl9kZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM9MzM5MD1zdGF0aWMgYm9vbCBhdGg5a19od19hcjkzMDBfZmlsbF9lZXByb20oc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYzozNDAxOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BVEg5S19IVENfREVCVUdGUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjMzPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19za2JfcXVldWVfY29tcGxldGUoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzktXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHF1ZXVlKSkgIT0gTlVMTCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQwOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MS1cXHRcXHRpbnQgbG4gPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzk4LVxcdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24ndCB1c2UgdGhlIFRYIGJ1ZmZlciBwb29sICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTk6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX01HTVQpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMS1cXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDY6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDgtXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00ODY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX2luZGV4KHN0cnVjdCBza19idWZmICpza2IsIHU4IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDkyOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5My1cXHQgICAgKHR4X2N0bC1cXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTU2PWVudW0gaHRjX29wbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX0FNUERVICAxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX01HTVQgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JUU0NUUyAgICAgICAweDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVxcdHU4IHRpZG5vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3ODpcXHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVxcdHU4IGtleV90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNDk9c3RydWN0IGF0aDlrX3ZpZl9pdGVyX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU0OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9TVEEgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXFx0dTggaW5kZXg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcXHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2Ny1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg5OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JFU0VSVkUgMTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMxMjpcXHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXFx0dTggZXBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI5LSNkZWZpbmUgX19TVEFUX1NBRkUoaGlmX2RldiwgZXhwcilcXHRkbyB7ICgoaGlmX2RldiktXFx1MDAzZWh0Y19oYW5kbGUtXFx1MDAzZWRydl9wcml2ID8gKGV4cHIpIDogMCk7IH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKmJzbG90W0FUSDlLX0hUQ19NQVhfQkNOX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cXHR1MzIgYm1pc3NjbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDc4LVxcdHU4IHN0YV9zbG90O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XFx0dTggdmlmX3N0YV9wb3NbQVRIOUtfSFRDX01BWF9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXFx0dTggbnVtX2lic3NfdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NTM2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVxcdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1ZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0MzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjUxOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTExPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoxMTc6XFx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVxcdGF0aDlrX2h0Y19iZWFjb25faW5pdChwcml2LCBjb25mLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXFx0dHhfY3RsLVxcdTAwM2VlcGlkID0gcHJpdi1cXHUwMDNlYmVhY29uX2VwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzYtXFx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFxcdTAwM2VcXHUwMDNlIDMyLCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcXHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3ODpcXHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2ViZWFjb25fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XFx0dHNmYWRqdXN0ID0gY3VyX2NvbmYtXFx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgyLVxcdGF2cC1cXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzMtXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0OlxcdFxcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0OlxcdFdBUk5fT04oaSAhPSBBVEg5S19IVENfU1NUQVRTX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2NzQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXFx0XFx0cHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODQ9dm9pZCBhdGg5a19odGNfcmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjIzNDpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcXHRpZiAoKHByaXYtXFx1MDAzZW52aWZzIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTk6XFx0ICAgIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjYtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcXHRpZiAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4MS1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDgyOlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0OlxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz05MDc9c3RhdGljIGludCBhdGg5a19odGNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2MTpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Ni1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVxcdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxNjg5OlxcdFxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4NzQ9c3RydWN0IGllZWU4MDIxMV9vcHMgYXRoOWtfaHRjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxOTA3OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVxcdFxcdHFpLnRxaV9zdWJ0eXBlID0gc3VidHlwZV90eHFfdG9faHdxW3N1YnR5cGVdO1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXFx0cHJpdi1cXHUwMDNldHgucXVldWVkX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XFx0ICAgICEocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXFx0XFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OD12b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzE6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2MgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI6XFx0ICAgIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzQtXFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTItXFx0aWYgKHR4X2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9BTVBEVSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcnRzX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlxcdFxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE1LVxcdC8qIENUUy10by1zZWxmICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcXHRpZiAoIShmbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cXHQgICAgKHZpZiBcXHUwMDI2XFx1MDAyNiB2aWYtXFx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxODpcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcXHRpZiAoKHRpZCBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcXHUwMDI2XFx1MDAyNiAoaXN0YS1cXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NDQ1PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9wcm9jZXNzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ3OTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQUNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVxcdHJhdGUtXFx1MDAzZWNvdW50ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlxcdHJhdGUtXFx1MDAzZWlkeCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTQ6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTc6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTAwLVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Mzk9dm9pZCBhdGg5a19odGNfdHhfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NDQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NzQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nzg9dm9pZCBhdGg5a190eF9mYWlsZWRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVxcdHNwaW5fbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU4MzpcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcXHR1OCBlcGlkID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNC1cXHRcXHQgICAgICAgdHhfY3RsLVxcdTAwM2V0aW1lc3RhbXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjU6XFx0XFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjYtXFx0XFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFxcXCJEcm9wcGluZyBhIHBhY2tldCBkdWUgdG8gVFggdGltZW91dFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVxcdFxcdFxcdFxcdGV2ZW50LVxcdTAwM2V0eHMuY29va2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XFx0XFx0XFx0XFx0TVMoZXZlbnQtXFx1MDAzZXR4cy50c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1OlxcdFxcdGlmICgrK2V2ZW50LVxcdTAwM2Vjb3VudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmV2ZW50LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MDY6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzQtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgzNTpcXHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTYtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg1NzpcXHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfUlhCVUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVxcdFxcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMzg9dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUzOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTICAgIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU2OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9TR0kgICAgICAgIEJJVCg1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjI4LjM3NzQ4ODc0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDQxMDg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgQXRoZXJvcyBhdGg5ayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLiBUaGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSwgbmF0dXJhbGx5LCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZXhwZWN0IHRvIGZpbmQgdGhlIGNvbXBsZXRlIGRlZmluaXRpb25zIG9mIGFsbCB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgcGxhdGZvcm0gY29tcG9uZW50cy4gVGhpcyBpcyB0aGUgc29saWQgZm91bmRhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBidWlsdCBhbmQgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI1MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjMwLjg4MTYwMDA2OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbiAyMDc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAyMDg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVMQVlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6MzAuODgxNjcwODM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAyMzc5MTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaUZpIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgdGhlIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBIaWdoLUxldmVsIEludGVyZmFjZSAoYGhpZl91c2IuY2ApLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IHdpdGggdGhlIGNvcmUgb2YgdGhlIHRyYW5zbWl0IHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIGFjdHVhbGx5IHNlbnQgb3ZlciB0aGUgVVNCIGJ1cy5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gZm9sbG93IGl0LCBvZiBjb3Vyc2UsIHRvIHNlZSB3aGljaCBjYWxscyBhcmUgYWZmZWN0ZWQgYnkgdGhlIGNoYW5nZXMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBjb21wbGV0ZWx5IG5ldyBpbXBsZW1lbnRhdGlvbj8gT3IgaXMgaXQgYSB0d2VhayB0byBhbiBleGlzdGluZyBwcm9jZXNzPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgaW5wdXQgcGFyYW1ldGVycywgd2hhdCdzIGhhcHBlbmluZyBpbnNpZGUsIGFuZCBpdHMgb3ZlcmFsbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlIFVTQiBkcml2ZXIgYW5kIHBvdGVudGlhbGx5IHRoZSBoaWdoZXItbGV2ZWwgbmV0d29ya2luZyBzdGFjay4gVW5kZXJzdGFuZGluZyBhbGwgb2YgaXRzIGNhbGxlcnMgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBlYXNpZXIgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgY2hhbmdlIGlmIEkga25vdyB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIGluIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTExLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDozMy45MDU0NjUxMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4MjI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2hpZl91c2JfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTY4PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjcwOnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDItXFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAzOlxcdFxcdF9faGlmX3VzYl90eChoaWZfZGV2KTsgLyogQ2hlY2sgZm9yIHBlbmRpbmcgU0tCcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzA0LVxcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDgtLyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMwOTpzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzU9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXFx0ICAgIChoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250IFxcdTAwM2MgMikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNTpcXHRcXHRfX2hpZl91c2JfdHgoaGlmX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDozMy45NTE0NTI2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgzMTE3OTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYSBuZXR3b3JraW5nIGV4cGVydCBmYW1pbGlhciB3aXRoIHRoZSBBdGhlcm9zIGF0aDlrIGRyaXZlcjpcblxuKipEaXZpbmcgaW50byB0aGUgYXRoOWsgVVNCIEhJRiBNb2R1bGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBVU0IgSG9zdCBJbnRlcmZhY2UgKEhJRikgcG9ydGlvbiBvZiB0aGUgYGF0aDlrYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gSSdtIHpvbmluZyBpbiBvbiBsaW5lcyAzMDAgdGhyb3VnaCAzODAuIFRoYXQgcmFuZ2UgdXN1YWxseSBlbmNvbXBhc3NlcyBhIGNyaXRpY2FsIHNlY3Rpb24sIGEgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgYW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIGNvcmUgZnVuY3Rpb24gcmVsYXRlZCB0byBVU0IgY29tbXVuaWNhdGlvbiBoYW5kbGluZywgdGhlIEhJRiBsYXllciwgb3IgbWF5YmUgZXZlbiBlcnJvciBoYW5kbGluZyBmb3IgVVNCIHRyYW5zZmVycy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgY2h1bmsgb2YgdGhlIGNvZGUuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNDMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDo0NC43ODI2MzU1MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbiAzMDE6XFx0XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbiAzMDI6XFx0XFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbiAzMDM6XFx0XFx0XFx0X19oaWZfdXNiX3R4KGhpZl9kZXYpOyAvKiBDaGVjayBmb3IgcGVuZGluZyBTS0JzICovXFxuIDMwNDpcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBidWZfY29tcGxldGVkKTtcXG4gMzA1OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMzA2OlxcdH1cXG4gMzA3OlxcdFxcbiAzMDg6XFx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG4gMzA5OlxcdHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XFxuIDMxMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuIDMxMzpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMzE0OlxcdFxcdHUxNiB0eF9za2JfY250ID0gMDtcXG4gMzE1OlxcdFxcdHU4ICpidWY7XFxuIDMxNjpcXHRcXHRfX2xlMTYgKmhkcjtcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgPT0gMClcXG4gMzE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbiAzMjI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1ZikpXFxuIDMyMzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzI0OlxcdFxcbiAzMjU6XFx0XFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcXG4gMzI2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4gMzI3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG4gMzI4OlxcdFxcbiAzMjk6XFx0XFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xcbiAzMzI6XFx0XFx0XFx0bnNrYiA9IHNrYl9wZWVrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiAzMzM6XFx0XFx0XFx0aWYgKCFuc2tiKVxcbiAzMzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuIDMzNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzM4OlxcdFxcbiAzMzk6XFx0XFx0XFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuIDM0MDpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdFxcdGJ1ZiA9IHR4X2J1Zi1cXHUwMDNlYnVmO1xcbiAzNDM6XFx0XFx0XFx0YnVmICs9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0O1xcbiAzNDQ6XFx0XFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4gMzQ1OlxcdFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KG5za2ItXFx1MDAzZWxlbik7XFxuIDM0NjpcXHRcXHRcXHQqaGRyKysgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7XFxuIDM0NzpcXHRcXHRcXHRidWYgKz0gNDtcXG4gMzQ4OlxcdFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuIDM0OTpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICsgbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4gMzUwOlxcdFxcdFxcdHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICs9IHJvdW5kX3VwKG5za2ItXFx1MDAzZWxlbiArIDQsIDQpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XFxuIDM1MzpcXHRcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcXG4gMzU0OlxcdFxcdH1cXG4gMzU1OlxcdFxcbiAzNTY6XFx0XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDM1NzpcXHRcXHRcXHRcXHQgIHVzYl9zbmRidWxrcGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcXG4gMzU4OlxcdFxcdFxcdFxcdCAgdHhfYnVmLVxcdTAwM2VidWYsIHR4X2J1Zi1cXHUwMDNlbGVuLFxcbiAzNTk6XFx0XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRcXHRyZXQgPSB1c2Jfc3VibWl0X3VyYih0eF9idWYtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XFxuIDM2MjpcXHRcXHRpZiAocmV0KSB7XFxuIDM2MzpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG4gMzY0OlxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcXG4gMzY1OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAzNjY6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuIDM2NzpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9idWZfY250Kys7XFxuIDM2ODpcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdHJldHVybiByZXQ7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7XFxuIDM3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAzNzk6XFx0XFx0aW50IHJldCA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjQ0Ljc4Mjc3NjkwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDUzMTMxNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDlrX2h0YyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBgYXRoOWtfaHRjYCB3aXRoIHJlc3BlY3QgdG8gVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgVVNCIGVtdWxhdGlvbiAobGlrZSBzeXprYWxsZXIncyBgcmF3X2dhZGdldGAgb3IgdGhlIGBkdW1teV9oY2RgKS4gRG9lcyB0aGlzIGRyaXZlciBuZWVkIGZpcm13YXJlIGxvYWRpbmcgb3IgYW55dGhpbmcgZWxzZSB0aGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhlIHByb2Nlc3M/IFRoYW5rZnVsbHksIHN5emthbGxlciBoYXMgZXhwZXJpZW5jZSB3aXRoIFVTQiBmdXp6aW5nIGZvciBXaUZpIGRldmljZXMsIGluY2x1ZGluZyB0aGlzIG9uZSwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYGF0aDlrX2h0Y2AgaXMgZXZlbiByZWFjaGFibGUuIEdvdHRhIGtlZXAgdGhhdCBcInJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlXCIgY29uY2VwdCBpbiBtaW5kLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzIChzZWN0aW9ucyAxLCAyLCAzKSwgSSdtIHJlbWluZGVkIHRoYXQgZnV6emluZydzIHNjb3BlIGlzIGNvbmZpbmVkIHRvIGNvZGUgZXhlY3V0aW5nIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpbmNsdWRlcyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzLCBhbmQgdGhhdOKAmXMgbG9va2luZyBwcm9taXNpbmcgZm9yIFVTQiBnYWRnZXQgc2V0dXBzLCBuZXRkZXYsIHR1bi90YXAsIGV0Yy4gRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIGFyZSB0aGUgb25lcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiBBbHNvLCBhIHF1aWNrIG5vdGUsIEknbSB0aGlua2luZyBvZiB3aGV0aGVyIEkgY2FuIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGF0IGFueSBzdGFnZS4gSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBJICpvbmx5KiByZXR1cm4gYGZhbHNlYCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiBpczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMsIG9yIGNvZGUgZXhjbHVzaXZlIHRvIG90aGVyIGFyY2hpdGVjdHVyZXMuXG5cbkFscmlnaHQsIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciEgUGVyZmVjdC4gVVNCIGRyaXZlcnMgYXJlIGluaGVyZW50bHkgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBsaWtlIHRoZSBzZXR1cCBzeXprYWxsZXIgdXNlcy4gU28sIHRoYXQncyBhbHJlYWR5IGEgc2lnbmlmaWNhbnQgcG9zaXRpdmUgZmFjdG9yLlxuXG5Ob3csIGxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIGFkZHJlc3NpbmcgYWdncmVnYXRpb24gYW5kIGJ1ZmZlciBvZmZzZXQgaGFuZGxpbmcgd2l0aGluIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gQSBidWZmZXIgb3ZlcmZsb3cgaXMgYmVpbmcgcHJldmVudGVkOyB0aGUgZml4IGhhbmRsZXMgdGhlIGB0eF9idWYtXHUwMDNlb2Zmc2V0ICsgbnNrYi1cdTAwM2VsZW4gKyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkVgIGJvdW5kYXJ5IGNvbmRpdGlvbiwgYXMgd2VsbCBhcyBsZW4vb2Zmc2V0IGNhbGN1bGF0aW9uLlxuXG5OZXh0IHN0ZXA6IEkgbmVlZCB0byBhbmFseXplIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgaW1wYWN0ZWQgYW5kIHRyYWNlIHRoZWlyIGNhbGwgY2hhaW5zLiBMZXQncyBsb29rIGF0IGBfX2hpZl91c2JfdHhgLCBgaGlmX3VzYl9zZW5kX3R4YCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gSG9sZCBvbiwgYF9faGlmX3VzYl90eGAgaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3Mgc3RhdGljIGFuZCAqbm90KiBpbmxpbmVkIG9yLCB3ZWxsLCBpbmxpbmVkLiBJIHdpbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgX19oaWZfdXNiX3R4YCB3aXRoaW4gYGhpZl91c2IuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6NTIuODM1OTEwODY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkxNzc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoaWZfdXNiX3NlbmRfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz03Mj1zdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTAwOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMDEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTEzNj1zdGF0aWMgdm9pZCBoaWZfdXNiX21nbXRfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxODI6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfbWdtdChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zMDk9c3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzU6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAwLVxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ2ND1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzAtXFx0Y2FzZSBVU0JfV0xBTl9UWF9QSVBFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDcxOlxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF90eChoaWZfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDcyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDczLVxcdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3NDpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjUyLjg4MzgzMzk3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDAxNDMzMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBoaWZfdXNiX3NlbmRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgYGhpZl91c2Jfc2VuZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93OiBJcyBpdCBjYWxsZWQgZGlyZWN0bHkgYnkgb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHNvbWV3aGVyZT8gSWYgaXQncyBhIGNhbGxiYWNrLCB3aGVyZSBpcyBpdCByZWdpc3RlcmVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIGlzIGl0IHRyaWdnZXJlZD8gS25vd2luZyB0aGUgY2FsbGluZyBjb252ZW50aW9ucyBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludHMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyB0aGlzIFVTQiBzZW5kIG9wZXJhdGlvbiBpcyBpbml0aWF0ZWQuIFRoZSB0cmFjZSB3aWxsIHByb3ZpZGUgdmFsdWFibGUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODYxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6NTYuODg1MjY5MzU0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIyODcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoaWZfdXNiX3NlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcyPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMDA6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEwMS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTM2PXN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE4MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9tZ210KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4My1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM3NTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDAtXFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDM1PXN0YXRpYyB2b2lkIGhpZl91c2Jfc3RvcCh2b2lkICpoaWZfaGFuZGxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NjQ6c3RhdGljIGludCBoaWZfdXNiX3NlbmQodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MC1cXHRjYXNlIFVTQl9XTEFOX1RYX1BJUEU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NzE6XFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX3R4KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzMtXFx0Y2FzZSBVU0JfUkVHX09VVF9QSVBFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDc0OlxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9yZWdvdXQoaGlmX2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTIwPXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MjktXFx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTMwOlxcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTMxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjU2Ljk0MTUwMTExNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTA4NDkwMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyB0aGUgSElGIFNlbmQgUGF0aCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHByb2JsZW0gZGVzY3JpcHRpb24sIGlzIHRoYXQgd2UgaGF2ZSBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIHRoZSBISUYgdHJhbnNtaXNzaW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGhpZi1cdTAwM2VzZW5kYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGNhbGwuIEEgbGlrZWx5IGN1bHByaXQgd291bGQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGNvbW11bmljYXRpb24gaXRzZWxmLlxuXG5UaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIGNoZWNrIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSwgYW5kIEknbGwgc3RhcnQgd2l0aCBgaHRjX2Rydl90eHJ4LmNgLiBUaGF0IGZpbGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgc291bmRzIGxpa2UgaXQgbWF5IGRlYWwgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gYXNwZWN0cyBvZiB0aGUgSFRDIGRyaXZlciAob3Igd2hhdGV2ZXIgc3lzdGVtIGlzIGJlaW5nIHVzZWQpLiBJJ2xsIGFsc28gYmUgbWluZGZ1bCB0aGF0IEkgbWlnaHQgbmVlZCB0byBmb2xsb3cgdGhlIGNhbGxpbmcgcGF0aCBvZiBgaGlmLVx1MDAzZXNlbmRgLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBoaWYtXHUwMDNlc2VuZGAgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0J3MgYmVpbmcgdXNlZC4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZXJyb3JzIGluIGRhdGEgcHJlcGFyYXRpb24sIGJ1ZmZlciBtYW5hZ2VtZW50LCBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE0NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjAyLjg0OTk5MzI0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMDI0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VzZW5kXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTIxPXN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozNTpcXHRzdGF0dXMgPSB0YXJnZXQtXFx1MDAzZWhpZi1cXHUwMDNlc2VuZCh0YXJnZXQtXFx1MDAzZWhpZl9kZXYsIGVuZHBvaW50LVxcdTAwM2V1bF9waXBlaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MDIuOTAyMTAwODY0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMjQyNzY1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYGh0Y19pc3N1ZV9zZW5kYCBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJJ20gdGhpbmtpbmcsIGxldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsZXJzIG9mIGBodGNfaXNzdWVfc2VuZGAuIEl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgbm8gZG91YnQsIGFuZCB1bmRlcnN0YW5kaW5nIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZCBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGluIHdoYXRldmVyIHByb2JsZW0gSSdtIHRyeWluZyB0byBhZGRyZXNzLCBiZSBpdCBwZXJmb3JtYW5jZSwgYSBidWcsIG9yIGp1c3QgdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJ3MgaW50ZXJhY3Rpb24uIEdvdHRhIHRyYWNlIHRoZSBkYXRhIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggYGh0Y19pc3N1ZV9zZW5kYCBvcGVyYXRlcy4gVGhpcyBpbml0aWFsIGludmVzdGlnYXRpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBhIG1vcmUgdGFyZ2V0ZWQgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MDcuMDI2MzgwNTk5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI4ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodGNfaXNzdWVfc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyMTpzdGF0aWMgaW50IGh0Y19pc3N1ZV9zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmKiBza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMi1cXHRcXHRcXHQgIHUxNiBsZW4sIHU4IGZsYWdzLCB1OCBlcGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz0xNTQ9c3RhdGljIGludCBodGNfY29uZmlnX3BpcGVfY3JlZGl0cyhzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoxNzY6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTE5Mj1zdGF0aWMgaW50IGh0Y19zZXR1cF9jb21wbGV0ZShzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyMTE6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTI0MT1pbnQgaHRjX2Nvbm5lY3Rfc2VydmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyODY6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTMwNz1pbnQgaHRjX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzExLVxcdHR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjMxMjpcXHRyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCB0eF9jdGwtXFx1MDAzZWVwaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzEzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MzE1PWludCBodGNfc2VuZF9lcGlkKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTMxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozMTg6XFx0cmV0dXJuIGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXFx1MDAzZWxlbiwgMCwgZXBpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zMTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTowNy4wNzA2NzIyNjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjczMTExMTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBBVEg5S19IVEMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9mIGBBVEg5S19IVENgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZSwgc28gSSdsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBSaWdodCwgaGVyZSBpdCBpczogYGNvbmZpZyBBVEg5S19IVENgIGlzIGEgdHJpc3RhdGUgb3B0aW9uLCBtZWFuaW5nIGl0IGNhbiBiZSBlbmFibGVkIGFzIGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgZGlzYWJsZWQuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBpdCByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIEkgYWxzbyBzZWUgdGhhdCBpdCBzZWxlY3RzIGBNQUM4MDIxMV9MRURTYCB1bmRlciBjZXJ0YWluIExFRCBjbGFzcyBjb25kaXRpb25zIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBpY3R1cmUuXG5cbkJ1dCBJIGNhbid0IHN0b3AgaGVyZSwgSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgKmhpZ2hlci1sZXZlbCogZGVwZW5kZW5jaWVzIG9yIHBhcmVudCBtZW51cyB0aGF0IGltcGFjdCB0aGlzPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCDigJMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucywgbWVudXMsIG9yIGNvbnRleHQgdGhhdCBpbmZsdWVuY2VzIHRoZSBhdmFpbGFiaWxpdHkgb3IgYmVoYXZpb3Igb2YgYEFUSDlLX0hUQ2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgc3RydWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxMy44MDE3ODYwNzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDQyNjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDc2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfQVRINUspXFx0XFx0Kz0gYXRoNWsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUSDlLX0hXKVxcdFxcdCs9IGF0aDlrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS00LW9iai0kKENPTkZJR19DQVJMOTE3MClcXHRcXHQrPSBjYXJsOTE3MC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNjpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0ODpjb25maWcgQVRIOUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBPRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUxLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MTpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc2OmNvbmZpZyBBVEg5S19UWDk5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIldha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzU6XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Mi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEFUSDlLX0hXXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc3OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5MDpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI9YXRoOWsteSArPVxcdGJlYWNvbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTI6YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IG1jaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgKz0gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTQ6YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNTphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTc6YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgKz0gdHg5OS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE4OmF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTk6YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICs9IHJuZy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMTphdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSArPSBkZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMzphdGg5ay0kKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpICs9IGRlYnVnX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI3PWF0aDlrX2h3LXk6PVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NDg6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfV09XKSArPSBhcjkwMDNfd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjUwOmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSArPSBidGNvZXgubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTUxLVxcdFxcdFxcdFxcdFxcdCAgIGFyOTAwM19tY2kubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU0OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU2OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0RZTkFDSykgKz0gZHluYWNrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19BVEg5S19IVykgKz0gYXRoOWtfaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjEtYXRoOWtfY29tbW9uLXk6PVxcdGNvbW1vbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjU6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgKz0gY29tbW9uLWRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjY6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgKz0gY29tbW9uLXNwZWN0cmFsLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYW5pX29mZG1fbGV2ZWxfZW50cnkgb2ZkbV9sZXZlbF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUyOiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTlVNX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTMtXFx0QVJSQVlfU0laRShvZmRtX2xldmVsX3RhYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU1OlxcdChBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwtMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTY6I2RlZmluZSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01Ny1cXHQzIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9jY2tfbGV2ZWxfZW50cnkgY2NrX2xldmVsX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjk4OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05OS1cXHRBUlJBWV9TSVpFKGNja19sZXZlbF90YWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAwOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDE6XFx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAzOlxcdChBVEg5S19BTklfQ0NLX05VTV9MRVZFTC0zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDQ6I2RlZmluZSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTEwNS1cXHQyIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0xNDk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X29mZG1fbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1OCBpbW11bml0eUxldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2MC1cXHRcXHRpbW11bml0eUxldmVsLCBCRUFDT05fUlNTSShhaCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MTpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfTE9XLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjI6XFx0XFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NDpcXHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcXHUwMDI2XFx1MDAyNiBpbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjU6XFx0XFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3NC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTc1OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3Ni1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X29mZG0tXFx1MDAzZXNwdXJfaW1tdW5pdHlfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4MC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTgxOlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Mi1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X29mZG0tXFx1MDAzZWZpcl9zdGVwX2xldmVsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODUtXFx0aWYgKGFoLVxcdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODY6XFx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfSElHSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTg3LVxcdFxcdHdlYWtfc2lnID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDItXFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCAhPSB3ZWFrX3NpZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjAzOlxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLCBBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwNC1cXHRcXHRcXHRcXHQgICAgIHdlYWtfc2lnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIwOTpcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXFx1MDAzZT0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTE6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMTItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEzOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTQ6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9vZmRtX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjIyOlxcdGlmIChhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNjIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIzLVxcdFxcdGF0aDlrX2h3X3NldF9vZmRtX25pbChhaCwgYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgKyAxLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjI5PXN0YXRpYyB2b2lkIGF0aDlrX2h3X3NldF9jY2tfbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1X2ludDhfdCBpbW11bml0eUxldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIzOC1cXHRcXHRhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsLCBpbW11bml0eUxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMzk6XFx0XFx0QkVBQ09OX1JTU0koYWgpLCBBVEg5S19BTklfUlNTSV9USFJfTE9XLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDA6XFx0XFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MjpcXHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcXHUwMDI2XFx1MDAyNiBpbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MzpcXHRcXHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ1LVxcdGlmIChhaC1cXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ2OlxcdCAgICBCRUFDT05fUlNTSShhaCkgXFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0xPVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDc6XFx0ICAgIGltbXVuaXR5TGV2ZWwgXFx1MDAzZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ4OlxcdFxcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI1OC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjU5OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2MC1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X2Njay1cXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2OC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjY5OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX01SQ19DQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI3MC1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X2Njay1cXHUwMDNlbXJjX2Nja19vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjczPXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9jY2tfZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNzc6XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfQ0NLX01BWF9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc4LVxcdFxcdGF0aDlrX2h3X3NldF9jY2tfbmlsKGFoLCBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICsgMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0zMDk9dm9pZCBhdGg5a19hbmlfcmVzZXQoc3RydWN0IGF0aF9odyAqYWgsIGJvb2wgaXNfc2Nhbm5pbmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMjI6XFx0b2ZkbV9uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIzLVxcdFxcdFxcdCBhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyNDpcXHRjY2tfbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzI1LVxcdFxcdFxcdCBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMzYtXFx0XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsICE9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzNzpcXHRcXHQgICAgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzOC1cXHRcXHQgICAgYW5pU3RhdGUtXFx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCAhPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzk6XFx0XFx0ICAgIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0MC1cXHRcXHRcXHRhdGhfZGJnKGNvbW1vbiwgQU5JLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ4OlxcdFxcdFxcdG9mZG1fbmlsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDk6XFx0XFx0XFx0Y2NrX25pbCA9IEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNTAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTQ3Nz12b2lkIGF0aDlrX2h3X2FuaV9pbml0KHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4NC1cXHRpZiAoQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODU6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg2OlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODc6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5jY2tfdHJpZ19oaWdoID0gQVRIOUtfQU5JX0NDS19UUklHX0hJR0g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4ODpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2xvdyA9IEFUSDlLX0FOSV9DQ0tfVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTA6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MjpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MzpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2xvdyA9IEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NjpcXHRhbmktXFx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk3OlxcdGFuaS1cXHUwMDNlZmlyc3RlcExldmVsID0gQVRIOUtfQU5JX0ZJUlNURVBfTFZMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTgtXFx0YW5pLVxcdTAwM2VtcmNDQ0sgPSBBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpID8gdHJ1ZSA6IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMC1cXHRhbmktXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAxOlxcdGFuaS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwMjpcXHRhbmktXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MDctXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwODpcXHRhaC1cXHUwMDNlYW5pcGVyaW9kID0gQVRIOUtfQU5JX1BFUklPRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA5OlxcdGFoLVxcdTAwM2Vjb25maWcuYW5pX3BvbGxfaW50ZXJ2YWwgPSBBVEg5S19BTklfUE9MTElOVEVSVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjItLyogdW5pdHMgYXJlIGVycm9ycyBwZXIgc2Vjb25kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjIzOiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIICAgICAgICAgICAzNTAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX0JFTE9XX0lOSSAxMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI1OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRCAgICAgICA1MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI3OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1cgICAgICAgICAgIDQwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyODojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX0FCT1ZFX0lOSSA5MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mjk6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQgICAgICAgMjAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMTojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIICAgICAgICAgICA2MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzI6I2RlZmluZSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQgICAgICAgMjAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMzOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPVyAgICAgICAgICAgIDMwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEICAgICAgICAxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM2OiNkZWZpbmUgQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCAgICAgICAgIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzc6I2RlZmluZSBBVEg5S19BTklfRklSU1RFUF9MVkwgICAgICAgICAgICAgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzk6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfSElHSCAgICAgICAgICAgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDA6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfTE9XICAgICAgICAgICAgN1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC00MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDI6I2RlZmluZSBBVEg5S19BTklfUEVSSU9EICAgICAgICAgICAgICAgICAgMzAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC00NC0vKiBpbiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NTojZGVmaW5lIEFUSDlLX0FOSV9QT0xMSU5URVJWQUwgICAgICAgICAgICAxMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NzojZGVmaW5lIEFUSDlLX1NJR19GSVJTVEVQX1NFVFRJTkdfTUlOICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ4OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NQVggICAgIDIwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ5OiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUlOICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTA6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NQVggICAgMjJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg9NTQ9ZW51bSBhdGg5a19hbmlfY21kIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTU6XFx0QVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OID0gMHgxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NjpcXHRBVEg5S19BTklfRklSU1RFUF9MRVZFTCA9IDB4MixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTc6XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUwgPSAweDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU4OlxcdEFUSDlLX0FOSV9NUkNfQ0NLID0gMHg4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1OTpcXHRBVEg5S19BTklfQUxMID0gMHhmZmZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9OTUzPXN0YXRpYyBib29sIGFyNTAwOF9od19hbmlfY29udHJvbF9uZXcoc3RydWN0IGF0aF9odyAqYWgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2Mi1cXHRzd2l0Y2ggKGNtZCBcXHUwMDI2IGFoLVxcdTAwM2VhbmlfZnVuY3Rpb24pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjk2MzpcXHRjYXNlIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTjp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy05NjQtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0My1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDQ0OlxcdGNhc2UgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUw6e1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0NS1cXHRcXHR1MzIgbGV2ZWwgPSBwYXJhbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA1OC1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNTk6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2MC1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2Ni1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNjc6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2OC1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3Ny1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDc4OlxcdGNhc2UgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUw6e1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3OS1cXHRcXHR1MzIgbGV2ZWwgPSBwYXJhbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5My1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwOTQ6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTUtXFx0XFx0XFx0XFx0dmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDEtXFx0XFx0XFx0XFx0bGV2ZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMTAyOlxcdFxcdFxcdFxcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTAzLVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTEyLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMTM6XFx0Y2FzZSBBVEg5S19BTklfTVJDX0NDSzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTQtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9MTE2OT1zdGF0aWMgdm9pZCBhcjUwMDhfaHdfYW5pX2NhY2hlX2luaV9yZWdzKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjEzLVxcdC8qIHRoZXNlIGxldmVscyBqdXN0IGdvdCByZXNldCB0byBkZWZhdWx0cyBieSB0aGUgSU5JICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMjE0OlxcdGFuaVN0YXRlLVxcdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMjE1OlxcdGFuaVN0YXRlLVxcdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjE2LVxcdGFuaVN0YXRlLVxcdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMyPXN0YXRpYyBib29sIGFyOTAwMl9od19nZXRfaXNyKHN0cnVjdCBhdGhfaHcgKmFoLCBlbnVtIGF0aDlrX2ludCAqbWFza2VkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy02Ni1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9USU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2NzpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfVElNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjgtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfRFRJTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY5OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzAtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfRFRJTVNZTkMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3MTpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTVNZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Mi1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IChBUl9JU1JfUzJfQ0FCRU5EKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjczOlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9DQUJFTkQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03NC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9HVFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3NTpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfR1RUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzYtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfQ1NUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzc6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0NTVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTc4LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX1RTRk9PUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc5OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9UU0ZPT1I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjgxOlxcdFxcdFxcdGlmICghKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgyLVxcdFxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSX1MyLCBpc3IyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo4NzpcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODgtXFx0XFx0XFx0aXNyID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9SQUMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk1OlxcdFxcdCptYXNrZWQgPSBpc3IgXFx1MDAyNiBBVEg5S19JTlRfQ09NTU9OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk4LVxcdFxcdFxcdCAgIEFSX0lTUl9SWE9LIHwgQVJfSVNSX1JYRVJSKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk5OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1JYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDY6XFx0XFx0XFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVFg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDg6XFx0XFx0XFx0aWYgKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTA5LVxcdFxcdFxcdFxcdHMwX3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1MwX1MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNDA6XFx0XFx0aWYgKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTQxLVxcdFxcdFxcdHM1X3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1M1X1MoYWgpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTUyLVxcdFxcdGlmIChhaC1cXHUwMDNlaW50cl9nZW5fdGltZXJfdHJpZ2dlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1MzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9HRU5USU1FUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NS1cXHRcXHRpZiAoKHM1X3MgXFx1MDAyNiBBUl9JU1JfUzVfVElNX1RJTUVSKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU2OlxcdFxcdCAgICAhKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfQVVUT1NMRUVQKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1NzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9USU1fVElNRVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTk6XFx0XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTYwLVxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSX1M1LCBzNV9zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTY1OlxcdGlmICghKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE2Ni1cXHRcXHRSRUdfV1JJVEUoYWgsIEFSX0lTUiwgaXNyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTg5LVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5MDpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5Ni1cXHRcXHRcXHRSRUdfV1JJVEUoYWgsIEFSX1JDLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5NzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTIxMj1hcjkwMDJfc2V0X3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsIHN0cnVjdCBhdGhfdHhfaW5mbyAqaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYxOlxcdGN0bDEgfD0gKGktXFx1MDAzZWtleWl4ICE9IEFUSDlLX1RYS0VZSVhfSU5WQUxJRCA/IFNNKGktXFx1MDAzZWtleWl4LCBBUl9EZXN0SWR4KSA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjItXFx0XFx0fCBTTShpLVxcdTAwM2V0eXBlLCBBUl9GcmFtZVR5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjM6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfTk9BQ0sgPyBBUl9Ob0FjayA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjQ6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfRVhUX09OTFkgPyBBUl9FeHRPbmx5IDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfQU5EX0NUTCA/IEFSX0V4dEFuZEN0bCA6IDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODItXFx0V1JJVEVfT05DRShhZHMtXFx1MDAzZWRzX2N0bDAsIChpLVxcdTAwM2Vwa3RfbGVuIFxcdTAwMjYgQVJfRnJhbWVMZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODM6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfVk1GID8gQVJfVmlydE1vcmVGcmFnIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4NC1cXHRcXHR8IFNNKGktXFx1MDAzZXR4cG93ZXJbMF0sIEFSX1htaXRQb3dlcjApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODU6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfVkVPTCA/IEFSX1ZFT0wgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg2OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0lOVFJFUSA/IEFSX1R4SW50clJlcSA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODc6XFx0XFx0fCAoaS1cXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gQVJfRGVzdElkeFZhbGlkIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4ODpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19DTFJETUFTSyA/IEFSX0NsckRlc3RNYXNrIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4OTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19SVFNFTkEgPyBBUl9SVFNFbmFibGUgOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjkwOlxcdFxcdCAgIChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19DVFNFTkEgPyBBUl9DVFNFbmFibGUgOiAwKSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMTY9c3RhdGljIGludCBhcjkwMDJfaHdfcHJvY190eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzAtXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX1R4T3BFeGNlZWRlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjMzMTpcXHRcXHR0cy1cXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hUWE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMyLVxcdHRzLVxcdTAwM2V0aWQgPSBNUyhzdGF0dXMsIEFSX1R4VGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQwLVxcdGlmIChzdGF0dXMgXFx1MDAyNiBBUl9UeEJhU3RhdHVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNDE6XFx0XFx0dHMtXFx1MDAzZXRzX2ZsYWdzIHw9IEFUSDlLX1RYX0JBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQyLVxcdFxcdHRzLVxcdTAwM2ViYV9sb3cgPSBhZHMtXFx1MDAzZUFSX0JhQml0bWFwTG93O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDctXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX0ZybVhtaXRPSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0ODpcXHRcXHR0cy1cXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYX0FDS0VEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ5LVxcdGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzUwLVxcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiBBUl9FeGNlc3NpdmVSZXRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzUxOlxcdFxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhFUlJfWFJFVFJZO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxMy44NTU4MzMxODdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzNjc2NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBsb2NhdGlvbiBmb3IgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbW9kdWxlIGRlcGVuZGVuY2llcywgZmVhdHVyZSB0b2dnbGVzLCBwbGF0Zm9ybS1zcGVjaWZpYyBzZXR0aW5ncywgYW5kIHBvdGVudGlhbGx5IHNvbWUgZGVmYXVsdCB2YWx1ZXMuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBidWlsdCwgYW5kIGhvdyB2YXJpb3VzIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZS4gSXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEl0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjAwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MTYuNDkyNjAyMzUyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIEFUSF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9BVEhcXG4gICA2OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1xcXCJcXG4gICA3OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxMjpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMzpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDE0OlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIHRoaXMgbW9kdWxlIHlvdSBjYW4gdmlzaXQ6XFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBGb3IgaW5mb3JtYXRpb24gb24gYWxsIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycyB2aXNpdDpcXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL0F0aGVyb3NcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0aWYgV0xBTl9WRU5ET1JfQVRIXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBBVEhfREVCVUdcXG4gIDI3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3Mgd2lyZWxlc3MgZGVidWdnaW5nXFxcIlxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBTYXkgWSwgaWYgeW91IHdhbnQgdG8gZGVidWcgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxcbiAgMzA6XFx0XFx0ICBSaWdodCBub3cgb25seSBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xcbiAgMzM6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyB0cmFjaW5nXFxcIlxcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBBVEhfREVCVUdcXG4gIDM1OlxcdFxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRyYWNlcG9pbnRzIGZvciBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzODpcXHRcXHQgIEN1cnJlbnRseSwgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMgZmFjaWxpdHkuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MTYuNDkyNzYyMDEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzkyMzYyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgd2lyZWxlc3MgZHJpdmVycywgSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyBwb2ludCBvZiByZWZlcmVuY2UuIExldCBtZSBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGFuZCB6b29tIGluIG9uIGxpbmUgNDAgYW5kIGJleW9uZC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHNlZ21lbnQgb2YgdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIHdpbGwgYmUgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIGZvciB0aGUgdXNlciBvciBieSBkZWZhdWx0LCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGVzZSBvcHRpb25zIHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBmZWF0dXJlIHNldC4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzM4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxOS45NzIwMDExNDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA0MzpcXHRcXHRkZWZhdWx0IG5cXG4gIDQ0OlxcdFxcdGhlbHBcXG4gIDQ1OlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcXG4gIDQ2OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XFxuICA0NzpcXHRcXHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuICA1MDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcXFwiXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4gIDUyOlxcdFxcdGRlZmF1bHQgblxcbiAgNTM6XFx0XFx0aGVscFxcbiAgNTQ6XFx0XFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcXG4gIDU1OlxcdFxcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXFxuICA1NjpcXHRcXG4gIDU3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWdcXFwiXFxuICA1ODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXFxcIlxcbiAgNTk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG4gIDYwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXFxcIlxcbiAgNjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuICA2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbiAgNjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjE5Ljk3MjA3MTU2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjcwOTMwNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqTmV0d29yayBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBjb25maWd1cmluZyBhbiBBdGhlcm9zIFdMQU4gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIG9sZGVyLCBwb3NzaWJseSBIVEMtcmVsYXRlZCBoYXJkd2FyZS4gIEZpcnN0IHRoaW5nJ3MgZmlyc3Q6IGBDT05GSUdfV0xBTl9WRU5ET1JfQVRIPXlgIC0geWVwLCB0aGF0J3Mgd2hhdCB3ZSB3YW50LiAgV2UncmUgZXhwbGljaXRseSBlbmFibGluZyB0aGUgQXRoZXJvcyB2ZW5kb3IgZHJpdmVyLiBNYWtlcyBzZW5zZS5cblxuTm93LCB0aGUgYENPTkZJR19BVEg5S19IVEM9eSAob3IgbSlgIGxpbmUgaXMgbmV4dC4gIE9rYXksIHNvIHdlJ3ZlIGdvdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBsaWtlbHkgZm9yIG9sZGVyIFVTQiBBdGhlcm9zIGRldmljZXMuICBUaGUgXCIob3IgbSlcIiBpcyBrZXkg4oCTIHdlIGNhbiBlaXRoZXIgYnVpbGQgaXQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBvciBtYWtlIGl0IGEgbW9kdWxlLiBUaGUgY2hvaWNlIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLCBvZiBjb3Vyc2UuIEZvciB0aGlzIHByb2plY3QsIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvcyBhbmQgY29ucyBvZiBib3RoIG9wdGlvbnMsIGJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMuXG5cbkxldCdzIHNlZeKApml0ICpkZXBlbmRzKiBvbiBzZXZlcmFsIG90aGVyIHRoaW5ncywgbmF0dXJhbGx5OiBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBgQ09ORklHX1dMQU5gLCBhbmQgYENPTkZJR19ORVRERVZJQ0VTYC4gIER1aC4gIFVTQiBpcyBvYnZpb3VzOyB0aGUgZHJpdmVyIG5lZWRzIHRoZSBVU0Igc3Vic3lzdGVtLiAgYE1BQzgwMjExYCBpcyB0aGUgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLCBzbyB0aGF0J3MgZXhwZWN0ZWQuIGBXTEFOYCBpcyB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBlbmFibGUsIGFuZCBgTkVUREVWSUNFU2AgaXMgdGhlIGdlbmVyYWwgbmV0d29yayBkZXZpY2Ugc3VwcG9ydC4gIEFsbCB0aGUgcHJlcmVxdWlzaXRlcyBzZWVtIHNlbnNpYmxlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgaXQncyBhbHdheXMgYSBnb29kIGlkZWEgdG8gY3Jvc3MtcmVmZXJlbmNlIHdpdGggdGhlIG1hc3RlciBLY29uZmlnIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBvcHRpb25zIGluIHRoYXQgZGlyZWN0b3J5LiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjI0LjY0MzAwNDU4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuICAzNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXFxcIlxcbiAgMzc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9zdC9LY29uZmlnXFxcIlxcbiAgMzg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXFxcIlxcbiAgMzk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXFxcIlxcbiAgNDA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MjQuNjQzMDc4MDA4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4MTc5OTQzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIGF0aDlrX2h0YyBVU0IgVFggUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIG1hZGUgc29tZSBjaGFuZ2VzIHRvIHRoZSBUWCBhZ2dyZWdhdGlvbiBsb2dpYyBpbiBgYXRoOWtfaHRjYCBmb3IgdGhlIFVTQiBpbnRlcmZhY2UuIEZpcnN0LCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGluY2x1ZGluZyBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2UuIExldCBtZSBsb29rIHRocm91Z2ggdGhlIGRpZmYgaW4gZGV0YWlsLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9faGlmX3VzYl90eGAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBhZ2dyZWdhdGluZyBtdWx0aXBsZSBUWCBwYWNrZXRzIGludG8gYSBzaW5nbGUgVVNCIHRyYW5zZmVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZGlmZiBsb29rcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuT2theSwgc28gdGhlIGltcG9ydGFudCBwYXJ0cyBJIHNlZTogRmlyc3QsIHRoZXkgbm93IHVzZSBgc2tiX3BlZWtgIGJlZm9yZSBgX19za2JfZGVxdWV1ZWAgYW5kIGNoZWNrIGlmIHRoZSBwYWNrZXQgZml0cyB3aXRoaW4gdGhlIG1heGltdW0gVFggYnVmZmVyIHNpemUgKGBNQVhfVFhfQlVGX1NJWkVgKS4gVGhpcyBpcyBnb29kLiBIb3dldmVyLCBJIHRoaW5rIEkndmUgc3BvdHRlZCBhIHBvdGVudGlhbCBpc3N1ZSBoZXJlOiBJZiBgdHhfc2tiX2NudGAgaXMgZ3JlYXRlciB0aGFuIHplcm8sIGJ1dCB0aGUgKmZpcnN0KiBwYWNrZXQgZG9lc24ndCBmaXQgKGR1ZSB0byBpdHMgbGVuZ3RoIG9yIHRoZSBjdXJyZW50IG9mZnNldCksIG9yIGlzIGBOVUxMYCwgdGhlIGxvb3Agd2lsbCBicmVhayBpbW1lZGlhdGVseS4gSWYgdGhpcyBoYXBwZW5zLCBJIHNlZSB0aGF0IHRoZSBgdHhfYnVmLVx1MDAzZWxlbmAgd2lsbCBiZSB6ZXJvLiBUaGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIGRyaXZlciB3aWxsIHRoZW4gYXR0ZW1wdCB0byBzdWJtaXQgYSB6ZXJvLWxlbmd0aCBVU0IgYnVsayB0cmFuc2Zlci4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgdmFyaWV0eSBvZiBwcm9ibGVtcywgcG90ZW50aWFsbHkgaW5jbHVkaW5nIGEgbG9ja3VwIG9yIGFuIGluZmluaXRlIGxvb3Agd2hlbiB0aGUgZHJpdmVyIGlzIGNhbGxlZCBhZ2Fpbi4gSXQgc2VlbXMgdGhhdCB0aGUgcGFja2V0cyBtaWdodCBqdXN0IHN0YXkgaW4gdGhlIHF1ZXVlLCB3YWl0aW5nIGZvciBwcm9jZXNzaW5nLlxuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGEgcGFja2V0ICpsYXJnZXIqIHRoYW4gYE1BWF9UWF9CVUZfU0laRWAgaXMgZW5xdWV1ZWQsIGFsdGhvdWdoIHRoaXMgd291bGQgYmUgdW5saWtlbHkgZ2l2ZW4gdGhlIE1UVSBjaGVja3MsIGJ1dCBhIGZ1enplciBvciBjcmFmdGVkIHBhY2tldCBtaWdodCBieXBhc3MgdGhlc2UgY2hlY2tzLCB0aGVuIGBza2JfcGVla2AgaXMgY2FsbGVkIGFuZCBpbW1lZGlhdGVseSBicmVha3MgdGhlIGxvb3AsIGFuZCB0aGUgbmV4dCBjYWxsIHdpbGwgcmVwZWF0IHRoZSBwcm9jZXNzIGZvcmV2ZXIuXG5cblRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgVFggcGFja2V0IGFnZ3JlZ2F0aW9uIHBhdGggaXMgZXhwb3NlZCB0aHJvdWdoIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL2NmZzgwMjExLCBhbmQgZGlyZWN0bHkgd2l0aCByYXcgcGFja2V0cy9zb2NrZXQgaW5qZWN0aW9uLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGZvciBteSBhbmFseXNpcy4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19oaWZfdXNiX3R4YCwgYGhpZl91c2Jfc2VuZF90eGAgKHRoZSBjYWxsZXIgb2YgYF9faGlmX3VzYl90eGApLCBgaGlmX3VzYl9zZW5kYCwgYGF0aDlrX2h0Y190eF9kYXRhYCwgYGh0Y19pc3N1ZV9zZW5kYC9gaHRjX3NlbmRgLCBhbmQgYGhpZl91c2JfdHhfY2JgLiBUaGlzIHNob3VsZCBhbGxvdyBtZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZyb20gdGhlIGRyaXZlcidzIFRYIGVudHJ5IHBvaW50IGRvd24gdG8gdGhlIFVTQiBzdWJtaXNzaW9uIGFuZCBjb21wbGV0aW9uIGhhbmRsaW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSBub3QgdG9vIGdlbmVyaWMsIGFuZCB0aGVuIEknbGwgbG9vayBhdCB0aGVtIGluIGRldGFpbCB3aXRoaW4gdGhlIGRyaXZlcidzIHNvdXJjZSB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBUWCBwYXRoIGlzIHN0cnVjdHVyZWQuIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgbmFtZXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjMzLjQ2MTA3NDMyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2OTU4MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX3R4X2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI2MDpzdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI2MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM0MD1pbnQgYXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zODEtXFx0aWYgKGllZWU4MDIxMV9pc19kYXRhKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM4MjpcXHRcXHRhdGg5a19odGNfdHhfZGF0YShwcml2LCB2aWYsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzgzLVxcdFxcdFxcdFxcdCAgc3RhX2lkeCwgdmlmX2lkeCwgc2xvdCwgaXNfY2FiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MzMuNTA2Nzc1MTg4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxNTcxNTQ5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBhdGg5a19odGNfdHhfc3RhcnRgIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGBhdGg5a19odGNfdHhfc3RhcnRgIGlzIGludm9sdmVkLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBLY29uZmlnIG9wdGlvbnMgZW5hYmxlZC4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IHRvIGVuc3VyZSBgQVRIOUtfSFRDYCwgYFVTQmAsIGBNQUM4MDIxMWAsIGBXTEFOX1ZFTkRPUl9BVEhgLCBgV0xBTmAsIGFuZCBgTkVUREVWSUNFU2AgYXJlIGFsbCBzZXQgY29ycmVjdGx5LlxuXG5BbHJpZ2h0LCBub3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gTG9va2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUgY29uZmlybXMgdGhhdCBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGRlcGVuZHMgb24gYFdMQU5fVkVORE9SX0FUSGAgdW5kZXIgYFdMQU5gLiBTbyB5ZXMsIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAgYXJlIGluZGVlZCB0aGUgY29yZSBjb25maWdzIGhlcmUuIFRoYXQncyBnb29kLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoZSBmdXp6aW5nIHN0cmF0ZWd5IGl0c2VsZi4gVGhlIGxvZ2ljIHNheXMgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBhZ3JlZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZXNzZXMgd2l0aCBwYWNrZXQgYWdncmVnYXRpb24gYW5kIGhvdyBsZW5ndGgvb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCB3aXRoaW4gYF9faGlmX3VzYl90eGAsIGEgZnVuY3Rpb24gaW4gdGhlIGBhdGg5a19odGNgIFVTQiBXaUZpIGRyaXZlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBhbmQgc3RhbmRhcmQgbWFjODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiwgc28gdGhlIGF0dGFjayBzdXJmYWNlIGlzIGRlZmluaXRlbHkgcHJlc2VudC5cblxuSSd2ZSBnb3QgdGhlIGZvY3VzIHN5bWJvbHMgaWRlbnRpZmllZDogYF9faGlmX3VzYl90eGAsIGBoaWZfdXNiX3NlbmRfdHhgLCBgaGlmX3VzYl9zZW5kYCwgYGhpZl91c2JfdHhfY2JgLCBgYXRoOWtfaHRjX3R4X3N0YXJ0YCwgYW5kIGBhdGg5a19odGNfdHhfZGF0YWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEknbGwgYmUgdGFyZ2V0aW5nIGR1cmluZyB0aGUgZnV6emluZy5cblxuRmluYWxseSwganVzdCB0byByZWl0ZXJhdGUsIG15IGVuYWJsZSBjb25maWdzIGFyZTogYEFUSDlLX0hUQ2AsIGBVU0JgLCBgTUFDODAyMTFgLCBgV0xBTl9WRU5ET1JfQVRIYCwgYW5kIGBXTEFOYC5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIHBsYW4gaGVyZS4gVGltZSB0byBgc2V0LXJlc3VsdHNgIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDgzNiwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNjYzOTMyNjcyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzMjMyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCIsXG4gICAgXCJXTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oaWZfdXNiX3R4XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiLFxuICAgIFwiaGlmX3VzYl90eF9jYlwiLFxuICAgIFwiYXRoOWtfaHRjX3R4X3N0YXJ0XCIsXG4gICAgXCJhdGg5a19odGNfdHhfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBhZ2dyZWdhdGlvbiBib3VuZGFyeSBjaGVja3MsIHF1ZXVlIGhhbmRsaW5nLCBhbmQgYnVmZmVyIGxlbmd0aC9vZmZzZXQgY2FsY3VsYXRpb25zIGluIF9faGlmX3VzYl90eCBmb3IgdGhlIGF0aDlrX2h0YyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldHdvcmsgcGFja2V0IHRyYW5zbWlzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIixcbiAgICBcIldMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hpZl91c2JfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZF90eFwiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCIsXG4gICAgXCJoaWZfdXNiX3R4X2NiXCIsXG4gICAgXCJhdGg5a19odGNfdHhfc3RhcnRcIixcbiAgICBcImF0aDlrX2h0Y190eF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNzM5MjYyNDZaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDEwNjcwMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNzM5Njg4NTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NTQxMDI0MDQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDA6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFwiaHRjLmhcIlxuIFxuQEAgLTMyOCwxMSArMzI5LDE0IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xuLVx0XHRuc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdG5za2IgPSBza2JfcGVlayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdGlmICghbnNrYilcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0LyogU2hvdWxkIG5ldmVyIGJlIE5VTEwgKi9cbi1cdFx0QlVHX09OKCFuc2tiKTtcbitcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQgXHUwMDNlIE1BWF9UWF9CVUZfU0laRSlcbitcdFx0XHRicmVhaztcbiBcbitcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgKzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdFx0KmhkcisrID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgKz0gNDtcbiBcdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG4tXHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSBuc2tiLVx1MDAzZWxlbiArIDQ7XG4tXG4tXHRcdGlmIChpIFx1MDAzYyAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgKyAxKSAqIDQ7XG4tXG4tXHRcdGlmIChpID09ICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZWxlbiArPSB0eF9idWYtXHUwMDNlb2Zmc2V0O1xuK1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCArIG5za2ItXHUwMDNlbGVuICsgNDtcbitcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpO1xuIFxuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIG5za2IpO1xuIFx0XHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjQxLjczOTY4OTUyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MzkxNDUyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLlxuXG4qKkFuYWx5emluZyB0aGlzIFBhdGNoIGFuZCBpdHMgU3Vycm91bmRpbmdzKipcblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5zdGluY3QgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gVGhhdCBmaWxlIHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBvaW50IG9mIGRlcGFydHVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlIGluIGEgd2lyZWxlc3MgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIHRoZSB0b29scyBhbmQgc3RhcnQgc2lmdGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo0NS42Nzg4Mzc1ODVaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbiAzMDE6XFx0XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbiAzMDI6XFx0XFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbiAzMDM6XFx0XFx0XFx0X19oaWZfdXNiX3R4KGhpZl9kZXYpOyAvKiBDaGVjayBmb3IgcGVuZGluZyBTS0JzICovXFxuIDMwNDpcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBidWZfY29tcGxldGVkKTtcXG4gMzA1OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMzA2OlxcdH1cXG4gMzA3OlxcdFxcbiAzMDg6XFx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG4gMzA5OlxcdHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XFxuIDMxMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuIDMxMzpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMzE0OlxcdFxcdHUxNiB0eF9za2JfY250ID0gMDtcXG4gMzE1OlxcdFxcdHU4ICpidWY7XFxuIDMxNjpcXHRcXHRfX2xlMTYgKmhkcjtcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgPT0gMClcXG4gMzE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbiAzMjI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1ZikpXFxuIDMyMzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzI0OlxcdFxcbiAzMjU6XFx0XFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcXG4gMzI2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4gMzI3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG4gMzI4OlxcdFxcbiAzMjk6XFx0XFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xcbiAzMzI6XFx0XFx0XFx0bnNrYiA9IHNrYl9wZWVrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiAzMzM6XFx0XFx0XFx0aWYgKCFuc2tiKVxcbiAzMzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuIDMzNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzM4OlxcdFxcbiAzMzk6XFx0XFx0XFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuIDM0MDpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdFxcdGJ1ZiA9IHR4X2J1Zi1cXHUwMDNlYnVmO1xcbiAzNDM6XFx0XFx0XFx0YnVmICs9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0O1xcbiAzNDQ6XFx0XFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4gMzQ1OlxcdFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KG5za2ItXFx1MDAzZWxlbik7XFxuIDM0NjpcXHRcXHRcXHQqaGRyKysgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7XFxuIDM0NzpcXHRcXHRcXHRidWYgKz0gNDtcXG4gMzQ4OlxcdFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuIDM0OTpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICsgbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4gMzUwOlxcdFxcdFxcdHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICs9IHJvdW5kX3VwKG5za2ItXFx1MDAzZWxlbiArIDQsIDQpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XFxuIDM1MzpcXHRcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcXG4gMzU0OlxcdFxcdH1cXG4gMzU1OlxcdFxcbiAzNTY6XFx0XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDM1NzpcXHRcXHRcXHRcXHQgIHVzYl9zbmRidWxrcGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcXG4gMzU4OlxcdFxcdFxcdFxcdCAgdHhfYnVmLVxcdTAwM2VidWYsIHR4X2J1Zi1cXHUwMDNlbGVuLFxcbiAzNTk6XFx0XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRcXHRyZXQgPSB1c2Jfc3VibWl0X3VyYih0eF9idWYtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XFxuIDM2MjpcXHRcXHRpZiAocmV0KSB7XFxuIDM2MzpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG4gMzY0OlxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcXG4gMzY1OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAzNjY6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuIDM2NzpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9idWZfY250Kys7XFxuIDM2ODpcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdHJldHVybiByZXQ7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7XFxuIDM3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAzNzk6XFx0XFx0aW50IHJldCA9IDA7XFxuIDM4MDpcXHRcXG4gMzgxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuIDM4MjpcXHRcXG4gMzgzOlxcdFxcdGlmIChoaWZfZGV2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEhJRl9VU0JfVFhfU1RPUCkge1xcbiAzODQ6XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xcbiAzODU6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDM4NjpcXHRcXHR9XFxuIDM4NzpcXHRcXG4gMzg4OlxcdFxcdC8qIENoZWNrIGlmIHRoZSBtYXggcXVldWUgY291bnQgaGFzIGJlZW4gcmVhY2hlZCAqL1xcbiAzODk6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgXFx1MDAzZSBNQVhfVFhfQlVGX05VTSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo0NS42Nzg5NDQ3NDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NTc4ODE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGUgYGhpZl91c2JfdHhfY2JgIGNhbGxiYWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBoaWZfdXNiLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHRyYW5zbWl0IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGluIHJlbGF0aW9uIHRvIHRoYXQgY2FsbGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIGFjdHVhbGx5IHByZXBhcmVkIGZvciBhbmQgdHJpZ2dlcmVkIHRvIGJlIHRyYW5zbWl0dGVkIG92ZXIgVVNCLiBMb29raW5nIGF0IHRoaXMgY2FsbGJhY2sgaW4gaXNvbGF0aW9uIGlzbid0IGdvaW5nIHRvIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCDigJMgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGhpZl91c2IuY2AsIHRoZSBpbnRlcmFjdGlvbnMsIGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGJ1ZmZlciBsaWZlY3ljbGUg4oCTIGZyb20gaW5pdGlhbGl6YXRpb24sIHRocm91Z2ggZGF0YSBwb3B1bGF0aW9uLCBhbmQgZmluYWxseSwgdG8gd2hlbiB0aGUgYGhpZl91c2JfdHhfY2JgIGdldHMgaW52b2tlZC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyBVU0IgdHJhbnNmZXIgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo1MC4yNDQ3MzU4ODlaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdGNhc2UgLUVOT0RFVjpcXG4gMjcxOlxcdFxcdGNhc2UgLUVTSFVURE9XTjpcXG4gMjcyOlxcdFxcdFxcdHR4b2sgPSBmYWxzZTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0XFx0XFx0LypcXG4gMjc1OlxcdFxcdFxcdCAqIElmIHRoZSBVUkJzIGFyZSBiZWluZyBmbHVzaGVkLCBubyBuZWVkIHRvIGFkZCB0aGlzXFxuIDI3NjpcXHRcXHRcXHQgKiBVUkIgdG8gdGhlIGZyZWUgbGlzdC5cXG4gMjc3OlxcdFxcdFxcdCAqL1xcbiAyNzg6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMjc5OlxcdFxcdFxcdGlmIChoaWZfZGV2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEhJRl9VU0JfVFhfRkxVU0gpIHtcXG4gMjgwOlxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMjgxOlxcdFxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9wdXJnZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAyODI6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAyODM6XFx0XFx0XFx0fVxcbiAyODQ6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbiAyODU6XFx0XFxuIDI4NjpcXHRcXHRcXHRicmVhaztcXG4gMjg3OlxcdFxcdGRlZmF1bHQ6XFxuIDI4ODpcXHRcXHRcXHR0eG9rID0gZmFsc2U7XFxuIDI4OTpcXHRcXHRcXHRicmVhaztcXG4gMjkwOlxcdFxcdH1cXG4gMjkxOlxcdFxcbiAyOTI6XFx0XFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgdHhvayk7XFxuIDI5MzpcXHRcXG4gMjk0OlxcdFxcdC8qIFJlLWluaXRpYWxpemUgdGhlIFNLQiBxdWV1ZSAqL1xcbiAyOTU6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCA9IDA7XFxuIDI5NjpcXHRcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0LyogQWRkIHRoaXMgVFggYnVmZmVyIHRvIHRoZSBmcmVlIGxpc3QgKi9cXG4gMjk5OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuIDMwMDpcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0LCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmKTtcXG4gMzAxOlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQrKztcXG4gMzAyOlxcdFxcdGlmICghKGhpZl9kZXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcXG4gMzAzOlxcdFxcdFxcdF9faGlmX3VzYl90eChoaWZfZGV2KTsgLyogQ2hlY2sgZm9yIHBlbmRpbmcgU0tCcyAqL1xcbiAzMDQ6XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX2NvbXBsZXRlZCk7XFxuIDMwNTpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuIDMwNjpcXHR9XFxuIDMwNzpcXHRcXG4gMzA4OlxcdC8qIFRYIGxvY2sgaGFzIHRvIGJlIHRha2VuICovXFxuIDMwOTpcXHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjUwLjI0NDg1OTQwOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTU5MjIxOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBCdWZmZXIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgbGF5b3V0IGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgdHhfYnVmYCBzdHJ1Y3R1cmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGB0eF9idWZgICppdHNlbGYqIGFsbG9jYXRlZD8gSXMgaXQgb24gdGhlIHN0YWNrLCBoZWFwLCBvciBzb21lIG90aGVyIG1lbW9yeSByZWdpb24/IFRoYXQgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBsaWZldGltZSBhbmQgc2NvcGUuXG5cbkFuZCwgZXZlbiBtb3JlIGltcG9ydGFudGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgb3JpZ2luIG9mIGB0eF9idWYtXHUwMDNlYnVmYC4gVGhpcyBpcyB0aGUgKnJlYWwqIGJ1ZmZlciwgcmlnaHQ/IElzIGl0IGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgYXJyYXkgd2l0aGluIGB0eF9idWZgLCBvciBpcyBpdCBhIHBvaW50ZXIgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeT8gQW5kIGlmIHRoZSBsYXR0ZXIsIHdoZXJlIGFuZCBob3cgaXMgdGhhdCBtZW1vcnkgYmVpbmcgbWFuYWdlZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBgbWFsbG9jYCwgYSBjdXN0b20gYWxsb2NhdG9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZiBgdHhfYnVmLVx1MDAzZWJ1ZmAgaXMga2V5IHRvIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzLCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgZW5zdXJpbmcgcHJvcGVyIGRhdGEgYWNjZXNzIGFuZCBkZWFsbG9jYXRpb24gZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlIGNvZGUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NTMuMjA0MDgzNTkxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEyNTQwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eF9idWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD0yMzQ9c3RydWN0IGF0aF9hdHhfdGlkIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTIzOC1cXHRzdHJ1Y3QgYXRoX3R4cSAqdHhxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjIzOTpcXHR1bnNpZ25lZCBsb25nIHR4X2J1ZltCSVRTX1RPX0xPTkdTKEFUSF9USURfTUFYX0JVRlMpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0yNDAtXFx0dTE2IHNlcV9zdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI1NjpcXHRzdHJ1Y3QgdHhfYnVmICp0eF9idWYgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNTctXFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjA6XFx0aWYgKCF0eF9idWYgfHwgIXR4X2J1Zi1cXHUwMDNlaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2MS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjM6XFx0aGlmX2RldiA9IHR4X2J1Zi1cXHUwMDNlaGlmX2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjgwLVxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI4MTpcXHRcXHRcXHRhdGg5a19za2JfcXVldWVfcHVyZ2UoaGlmX2RldiwgXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI4Mi1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5MjpcXHRhdGg5a19za2JfcXVldWVfY29tcGxldGUoaGlmX2RldiwgXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlLCB0eG9rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5NC1cXHQvKiBSZS1pbml0aWFsaXplIHRoZSBTS0IgcXVldWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NTpcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NjpcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjk5LVxcdHNwaW5fbG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMDA6XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMDE6XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVxcdGlmICghKGhpZl9kZXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzA5PXN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTE6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyMS1cXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzIyOlxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzIzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI1OlxcdHR4X2J1ZiA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMjY6XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3BlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI3OlxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzM2OlxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MjpcXHRcXHRidWYgPSB0eF9idWYtXFx1MDAzZWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MzpcXHRcXHRidWYgKz0gdHhfYnVmLVxcdTAwM2VvZmZzZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNDQtXFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzQ4LVxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDk6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTA6XFx0XFx0dHhfYnVmLVxcdTAwM2VvZmZzZXQgKz0gcm91bmRfdXAobnNrYi1cXHUwMDNlbGVuICsgNCwgNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTI6XFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIG5za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzUzLVxcdFxcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIHNrYl9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTY6XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTctXFx0XFx0XFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cXHUwMDNldWRldiwgVVNCX1dMQU5fVFhfUElQRSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTg6XFx0XFx0XFx0ICB0eF9idWYtXFx1MDAzZWJ1ZiwgdHhfYnVmLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTk6XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYxOlxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNjM6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNjQ6XFx0XFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY1OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2OC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzU9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTItXFx0LyogQ2hlY2sgaWYgQU1QRFVzIGhhdmUgdG8gYmUgc2VudCBpbW1lZGlhdGVseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDEzOlxcdGlmICgoaGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCA9PSBNQVhfVFhfVVJCX05VTSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNC1cXHQgICAgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgXFx1MDAzYyAyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00MzU9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzNy1cXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYgPSBoaWZfaGFuZGxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDM4OlxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEwsICp0eF9idWZfdG1wID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzOS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NDgtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ0OTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDUwLVxcdFxcdFxcdFxcdCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfcGVuZGluZywgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDUxOlxcdFxcdHVzYl9nZXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ1Mi1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NTM6XFx0XFx0dXNiX2tpbGxfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NDpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NTpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDU2OlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTctXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODAyPXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MDQ6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTCwgKnR4X2J1Zl90bXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODA1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgwNy1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODA4OlxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MDk6XFx0XFx0XFx0XFx0IFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMDpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMTpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODEyOlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MjAtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyMTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODIyLVxcdFxcdFxcdFxcdCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfcGVuZGluZywgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODIzOlxcdFxcdHVzYl9nZXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyNC1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MjU6XFx0XFx0dXNiX2tpbGxfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNjpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNzpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODI4OlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MjktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODM2PXN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9hbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgzNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mzg6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODM5LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODQxOlxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQyLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQ3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfVFhfVVJCX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NDg6XFx0XFx0dHhfYnVmID0ga3phbGxvY19mbGV4KCp0eF9idWYsIGJ1ZiwgTUFYX1RYX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0OTpcXHRcXHRpZiAoIXR4X2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MC1cXHRcXHRcXHRnb3RvIGVycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1MjpcXHRcXHR0eF9idWYtXFx1MDAzZXVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTM6XFx0XFx0aWYgKCF0eF9idWYtXFx1MDAzZXVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1NC1cXHRcXHRcXHRnb3RvIGVycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1NjpcXHRcXHR0eF9idWYtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODU3OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODU5OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODYyOlxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQgPSBNQVhfVFhfVVJCX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODY1LWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg2NjpcXHRrZnJlZSh0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODY3LVxcdGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKGhpZl9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaD0zOT1leHRlcm4gaW50IGh0Y191c2VfZGV2X2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oOjc5OnN0cnVjdCB0eF9idWYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtODAtXFx0dTE2IGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg9OTc9c3RydWN0IGhpZl91c2JfdHgge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtOTgtXFx0dTggZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaDo5OTpcXHR1OCB0eF9idWZfY250O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAwLVxcdHUxNiB0eF9za2JfY250O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAxLVxcdHN0cnVjdCBza19idWZmX2hlYWQgdHhfc2tiX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6MTAyOlxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAzLVxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfcGVuZGluZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MzE3PXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjMyOTpcXHRfX2NsZWFyX2JpdChjaW5kZXgsIHRpZC1cXHUwMDNldHhfYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjMzMTpcXHR3aGlsZSAodGlkLVxcdTAwM2ViYXdfaGVhZCAhPSB0aWQtXFx1MDAzZWJhd190YWlsIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdCh0aWQtXFx1MDAzZWJhd19oZWFkLCB0aWQtXFx1MDAzZXR4X2J1ZikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMzMi1cXHRcXHRJTkNSKHRpZC1cXHUwMDNlc2VxX3N0YXJ0LCBJRUVFODAyMTFfU0VRX01BWCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTMzOT1zdGF0aWMgdm9pZCBhdGhfdHhfYWRkdG9fYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTM0OS1cXHRjaW5kZXggPSAodGlkLVxcdTAwM2ViYXdfaGVhZCArIGluZGV4KSBcXHUwMDI2IChBVEhfVElEX01BWF9CVUZTIC0gMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzozNTA6XFx0X19zZXRfYml0KGNpbmRleCwgdGlkLVxcdTAwM2V0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzUxLVxcdGZpLVxcdTAwM2ViYXdfdHJhY2tlZCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE1NzE9aW50IGF0aF90eF9hZ2dyX3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTYwMzpcXHRtZW1zZXQodHh0aWQtXFx1MDAzZXR4X2J1ZiwgMCwgc2l6ZW9mKHR4dGlkLVxcdTAwM2V0eF9idWYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2MDQtXFx0dHh0aWQtXFx1MDAzZWJhd19oZWFkID0gdHh0aWQtXFx1MDAzZWJhd190YWlsID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NTMuMjUxMjE4MTM0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTQxMTk0NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIFRYIEFnZ3JlZ2F0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgZG9pbmcgYW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBhdHRlbXB0aW5nIHRvIGZpeC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVuY29uZGl0aW9uYWxseSBkZXF1ZXVpbmcgdXAgdG8gYHR4X3NrYl9jbnRgIHNrYnMuIFRoYXQgYWxyZWFkeSByYWlzZXMgYSBmbGFnLiBNb3JlIGltcG9ydGFudGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIGhhdmUgYmVlbiB3cml0aW5nIGludG8gYHR4X2J1Zi1cdTAwM2VidWYgKyB0eF9idWYtXHUwMDNlb2Zmc2V0YCAqd2l0aG91dCogYW55IGJvdW5kYXJ5IGNoZWNrcyEgU3BlY2lmaWNhbGx5LCB3aXRob3V0IGNoZWNraW5nIGlmIHRoZSBjdXJyZW50IGBvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDRgIGV4Y2VlZHMgYE1BWF9UWF9CVUZfU0laRWAuIFRoYXQncyBhIGNsYXNzaWMgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2FpdGluZyB0byBoYXBwZW4uXG5cblRoZSBwYXRjaCB0cmllcyB0byBhZGRyZXNzIHRoaXMuIE5vdywgYmVmb3JlIGRlcXVldWluZywgdGhlcmUncyBhIGNoZWNrIHVzaW5nIGBza2JfcGVla2AgdG8gbG9vayBhdCB0aGUgbmV4dCBTS0IuICBJZiB0aGUgY29tYmluZWQgbGVuZ3RoIHdvdWxkIGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgdGhlIGxvb3AgYnJlYWtzLiAqVGhlbiosIGFuZCBvbmx5IHRoZW4sIGRvZXMgaXQgZGVxdWV1ZSB3aXRoIGBfX3NrYl9kZXF1ZXVlYC4gVGhlIG9yaWdpbmFsIHVuY29uZGl0aW9uYWwgYEJVR19PTmAgY2FsbCBpcyBub3cgcmVwbGFjZWQgd2l0aCB0aGlzIGxlbmd0aCBjaGVjayB3aGljaCBpcyBiZXR0ZXIgdGhhbiBhIHBhbmljLlxuXG5Ob3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIHRyaWNreSBiaXQgd2l0aCBgdHhfYnVmLVx1MDAzZWxlbmAuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBzb21lIHBlY3VsaWFyIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBgdHhfYnVmLVx1MDAzZWxlbmAgYW5kIGB0eF9idWYtXHUwMDNlb2Zmc2V0YC4gSXQgc2VlbXMgdGhhdCBpZiB0aGUgbG9vcCBicm9rZSBlYXJseSwgZHVlIHRvIGNhcGFjaXR5IGlzc3VlcyBvciBhbm90aGVyIGNvbmRpdGlvbiwgdGhlIGZpbmFsIGB0eF9idWYtXHUwMDNlbGVuYCB3b3VsZCBvbmx5IGJlIHVwZGF0ZWQgb24gdGhlICpsYXN0KiBpdGVyYXRpb24sIHdoaWNoIGlzIHdyb25nLiBUaGlzIGlzIHdoZXJlIEkgdGhpbmsgdGhlIHJlYWwgYnVnIHdhcy5cblxuVGhlIHBhdGNoJ3MgY2hhbmdlcyB0byBjYWxjdWxhdGUgYHR4X2J1Zi1cdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVx1MDAzZW9mZnNldGAgYXJlIGNyaXRpY2FsLiBJdCdzIG5vdyBjYWxjdWxhdGVkIGluY3JlbWVudGFsbHkgYW5kIGNvcnJlY3RseSB3aXRoaW4gdGhlIGxvb3A6ICBgdHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQ7YCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gcm91bmRfdXAobnNrYi1cdTAwM2VsZW4gKyA0LCA0KTtgLiBUaGlzIG1ha2VzIG1vcmUgc2Vuc2UgYW5kIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGxhc3QgaXRlcmF0aW9uLiBUaGlzIGNoYW5nZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwsIGJ1dCB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGN1bGF0aW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUsIGJlY2F1c2UgdGhlIGxvb3AgbWlnaHQgdGVybWluYXRlIGVhcmx5LiBUaGlzIGZpeGVzIHRoZSBvZmYtYnktb25lIGVycm9ycyBmcm9tIHRoZSBvbGQgbWV0aG9kLCBtYWtpbmcgaXQgY29ycmVjdC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgY2FsY3VsYXRpb25zIGFyZSBjb25zaXN0ZW50IHdpdGggYHN0cnVjdCB0eF9idWZgJ3MgYWxpZ25tZW50IGFuZCBwYWRkaW5nIHJlcXVpcmVtZW50cywgaG93ZXZlci4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBzdHJ1Y3R1cmUgY2xvc2VseS4gVGhpcyBwYXRjaCBhcHBlYXJzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYzMCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzI6MTIuMzkyNDE0OTQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzU6XFx0XFxuICA3NjpcXHQjZGVmaW5lIEhJRl9VU0JfTUFYX1JYUElQRVMgMlxcbiAgNzc6XFx0I2RlZmluZSBISUZfVVNCX01BWF9UWFBJUEVTIDRcXG4gIDc4OlxcdFxcbiAgNzk6XFx0c3RydWN0IHR4X2J1ZiB7XFxuICA4MDpcXHRcXHR1MTYgbGVuO1xcbiAgODE6XFx0XFx0dTE2IG9mZnNldDtcXG4gIDgyOlxcdFxcdHN0cnVjdCB1cmIgKnVyYjtcXG4gIDgzOlxcdFxcdHN0cnVjdCBza19idWZmX2hlYWQgc2tiX3F1ZXVlO1xcbiAgODQ6XFx0XFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xcbiAgODU6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgODY6XFx0XFx0dTggYnVmW107XFxuICA4NzpcXHR9O1xcbiAgODg6XFx0XFxuICA4OTpcXHRzdHJ1Y3QgcnhfYnVmIHtcXG4gIDkwOlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuICA5MTpcXHRcXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXY7XFxuICA5MjpcXHR9O1xcbiAgOTM6XFx0XFxuICA5NDpcXHQjZGVmaW5lIEhJRl9VU0JfVFhfU1RPUCAgQklUKDApXFxuICA5NTpcXHQjZGVmaW5lIEhJRl9VU0JfVFhfRkxVU0ggQklUKDEpXFxuICA5NjpcXHRcXG4gIDk3OlxcdHN0cnVjdCBoaWZfdXNiX3R4IHtcXG4gIDk4OlxcdFxcdHU4IGZsYWdzO1xcbiAgOTk6XFx0XFx0dTggdHhfYnVmX2NudDtcXG4gMTAwOlxcdFxcdHUxNiB0eF9za2JfY250O1xcbiAxMDE6XFx0XFx0c3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9za2JfcXVldWU7XFxuIDEwMjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X2J1ZjtcXG4gMTAzOlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfcGVuZGluZztcXG4gMTA0OlxcdFxcdHNwaW5sb2NrX3QgdHhfbG9jaztcXG4gMTA1OlxcdH07XFxuIDEwNjpcXHRcXG4gMTA3OlxcdHN0cnVjdCBjbWRfYnVmIHtcXG4gMTA4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIDEwOTpcXHRcXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMyOjEyLjM5MjQ4NjgzN1oiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDc1NzQyMjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBVU0IgSElGIFRYIEFnZ3JlZ2F0aW9uIGFuZCBNZW1vcnkgU2FmZXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwYWRkaW5nIHdpdGhpbiB0aGUgYHR4X2J1Zi1cdTAwM2VidWZgIHdoZW4gYWdncmVnYXRpbmcgcGFja2V0cyBpbiB0aGUgYGF0aDlrYCBVU0IgSElGIFRYIHBhdGguICBJJ20gdHJhY2tpbmcgdGhlIGJlaGF2aW9yIGFmdGVyIGByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpYC4gIFRoZSBwb3RlbnRpYWwgZm9yIHBhZGRpbmcgaW50cm9kdWNlcyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uOiBJcyB0aGlzIHBhZGRpbmcgaW5pdGlhbGl6ZWQ/ICBUaGUgYnVmZmVyIGl0c2VsZiwgYHR4X2J1ZmAsIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX2ZsZXhgLiAqVGhhdCdzIGdvb2QqLCBzbywgYXQgYWxsb2NhdGlvbiB0aGUgYnVmZmVyIGlzIHplcm9lZCBvdXQuIFRoZSBidWZmZXIgaXMgdGhlbiByZXVzZWQgYWZ0ZXIgYSB0cmFuc21pc3Npb24gdXNpbmcgYHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtgLCBidXQgaXQgaXMgKm5vdCogcmUtemVyb2VkLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnkgbGVhayBvZiB1bmluaXRpYWxpemVkIGRhdGEgaW4gdGhpcyBwYXRoLlxuXG5DcnVjaWFsbHksIHRoaXMgZGF0YSBpcyBzZW50IHRvIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IHZpYSBgdXNiX2ZpbGxfYnVsa191cmJgIHRvIHRoZSBVU0IgZGV2aWNlIChgVVNCX1dMQU5fVFhfUElQRWApLiBTbywgbXkgZmlyc3QgYXNzdW1wdGlvbiBpcyB0aGF0LCBzaW5jZSBpdCBpcyBnb2luZyB0byBoYXJkd2FyZSwgdGhpcyBpc24ndCBhIGRpcmVjdCB1c2VyLXNwYWNlIGV4cG9zdXJlLiBIb3dldmVyLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5mb3JtYXRpb24gbGVhayB0byB0aGUgVVNCIGRldmljZS4gSSBjYW4gY29uZmlybSB0aGUgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHVzYWdlIGRldGFpbHMsIGFuZCB0aGUgcmVzZXQgb2YgdGhlIGB0eF9idWZgLCBhbmQgY2FuIGNvbmZpcm0gdGhlIGJ1ZmZlciBnb2VzIHRvIHRoZSBVU0IgZGV2aWNlLlxuXG5UaGF0IGxlYWRzIG1lIHRvIGNvbnNpZGVyIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIERvZXMgS01TQU4gZXZlbiBhcHBseSBoZXJlPyBMZXQncyBjaGVjayB0aGUgY3JpdGVyaWEuIE15IGZpZWxkIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBLTVNBTiBpcyB0YXJnZXRlZCBhdCBtZW1vcnkgbGVha3MgdG8gdXNlciBzcGFjZS4gIEkgc2VlIGNyaXRlcmlhIGV4cGxpY2l0bHkgbGlzdGluZyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB2aWEgdGhpbmdzIGxpa2UgYGNvcHlfdG9fdXNlcmAsIGBwdXRfdXNlcmAsIGBuZXRsaW5rYCwgZXRjLiBJIGFsc28ga25vdyB0aGF0IEtNU0FOIGNoZWNrcyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIGFuZCBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuXG5cblNvLCBsZXQncyBhc3Nlc3MgdGhlIHBhdGNoIGl0c2VsZiBhbmQgd2hhdCBpdCBmaXhlcy4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgd2hhdCB0aGUgY29kZSAqZGlkKiBwcmV2aW91c2x5LiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUgZGVxdWV1ZWQgdXAgdG8gYE1BWF9UWF9BR0dSX05VTWAgc2ticyB3aXRob3V0IGNoZWNraW5nIGFnZ3JlZ2F0aW9uIHNpemUuIFRoaXMgY291bGQgbGVhZCB0byBhIGhlYXAgYnVmZmVyIG92ZXJmbG93LiAgVGhlIHBhdGNoIG5vdyBjaGVja3MgZm9yIHRoYXQgb3ZlcmZsb3cgYW5kIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEl0IGFsc28gY29ycmVjdHMgY2FsY3VsYXRpb25zIG9mIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgdGhlIGJ1ZmZlciBvZmZzZXQuIE5vdyB0aGUgcGF0Y2ggcHJldmVudHMgb3V0LW9mLWJvdW5kcyB3cml0ZXMgaW50byBgdHhfYnVmLVx1MDAzZWJ1ZmAsIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBOVUxMIGRlcmVmZXJlbmNlIGFuZCBoYW5kbGVzIGFnZ3JlZ2F0aW9uIGJ1ZmZlciBsaW1pdHMgY29ycmVjdGx5LlxuXG5Eb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlICphbnkqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzPyBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFsbG9jYXRpb24gd2l0aCBga3phbGxvY19mbGV4YCwgdGhlIGluaXRpYWxpemF0aW9uL3Jlc2V0dGluZyBvZiBgdHhfYnVmLVx1MDAzZWxlbmAgYW5kIGB0eF9idWYtXHUwMDNlb2Zmc2V0YCwgYW5kIHRoZSBjaGVja3MgZm9yIGBuc2tiYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbnNrYi1cdTAwM2VsZW5gIGFuZCBgbnNrYi1cdTAwM2VkYXRhYCBwcmV2ZW50cyBpbnRyb2R1Y2luZyB0aGlzIGlzc3VlLiBObyBuZXcgbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFyZSByZWFkIG9yIGJyYW5jaGVkIG9uLiBUaGUgcGF0Y2gncyBwcmltYXJ5IGZ1bmN0aW9uIGlzICoqYm91bmRzIGNoZWNraW5nIGFuZCBidWZmZXIgb3ZlcmZsb3cgcHJldmVudGlvbiBpbiB0aGUgYXRoOWsgVVNCIEhJRiBUWCBwYXRoKiouXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhpcyBhc3Nlc3NtZW50LCB0aGlzIHBhdGNoICpkb2VzIG5vdCogaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFN0YW5kYXJkIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGZ1enppbmcgaXMgKnBlcmZlY3RseSBhZGVxdWF0ZSogdG8gZGV0ZWN0IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdG8gc3RhdGUgdGhhdCBleHBsaWNpdGx5LlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZSBjaGVjayB1c2luZyB0aGUgS01TQU4gY3JpdGVyaWEuXG4xLiAgSXMgYSBrZXJuZWwgc3RydWN0dXJlIHNlbnQgdG8gdXNlciBzcGFjZT8gTm8sIG9ubHkgVVNCIGRldmljZSAoYnVsayBvdXQgdHJhbnNmZXIpLlxuMi4gIElzIHRoZXJlIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQXJlIHRoZXJlIGNvbXBsZXggc3RydWN0dXJlcyBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgd2l0aCB1bmluaXQgZmllbGRzPyBOby5cbjQuICBEbyB0aGUgYm91bmRzIGNoZWNrcyBvciBsZW5ndGhzIGFsbG93IGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyBOby4gYHR4X2J1Zi1cdTAwM2VsZW5gIGNvbnRhaW5zIHRoZSBleGFjdCBieXRlIGNvdW50IG9mIHZhbGlkIGRhdGEsIGFuZCB0aGUgYnVmZmVyIChgYnVmYCkgd2FzIGBremFsbG9jYCdkIGluaXRpYWxseS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgYGZhbHNlYC4gSSdtIGdvaW5nIHRvIGRvY3VtZW50IHRoaXMgaW4gbXkgcmVhc29uaW5nIHdoZW4gY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOIGFwcGxpY2FiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjgwLCJPdXRwdXRUb2tlbnMiOjI2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMjoyNy4xNDk5MTEwOTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlcidzIFRYIGFnZ3JlZ2F0aW9uIHBhdGggKGBfX2hpZl91c2JfdHhgKSBieSBjaGVja2luZyB0aGF0IHRoZSBhZ2dyZWdhdGVkIHBhY2tldCBzaXplIChgdHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0YCkgZG9lcyBub3QgZXhjZWVkIGBNQVhfVFhfQlVGX1NJWkVgLCBhbmQgdXBkYXRpbmcgYHR4X2J1Zi1cXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cXHUwMDNlb2Zmc2V0YCBwZXIgcGFja2V0IHVzaW5nIGByb3VuZF91cCgpYC5cXG5cXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXFx1MDAzZWJ1ZmAuIEFueSBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCBvciBsaXN0L3NrYiBtaXNtYW5hZ2VtZW50IGluIHRoaXMgcGF0aCBpcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLlxcbi0gS01TQU4gYXBwbGljYWJpbGl0eTogTm8ga2VybmVsIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGludHJvZHVjZWQgb3IgcmVhZCwgYW5kIGFsbCBidWZmZXIgbWVtb3J5IChgdHhfYnVmYCkgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX2ZsZXhgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgcmlza3MuXFxuXFxuVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkOyBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 00:27:23 +0000 UTC FinishedAt: 2026-09-11 00:32:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH", "WLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH", "WLAN" ], "series_id": "8106112d-bee3-48d2-8ce6-c573ec413f7c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__hif_usb_tx", "hif_usb_send_tx", "hif_usb_send", "hif_usb_tx_cb", "ath9k_htc_tx_start", "ath9k_htc_tx_data" ], "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+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUxOWQ0MjBjMDRlNDBiNjUyZGQzYTQxYjg3NDI2MzY5NTE0ZTE1OWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMDozMDoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICYjNDM7MTQsNyBAQFxuICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gICovXG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21hdGguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7aHRjLmhcJiMzNDtcbiBcbkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxuIFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuJiM0MztcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiYjNDM7XHRcdGlmICghbnNrYilcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXG4tXHRcdC8qIFNob3VsZCBuZXZlciBiZSBOVUxMICovXG4tXHRcdEJVR19PTighbnNrYik7XG4mIzQzO1x0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgJiM0MzszNDYsOCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gXHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgJiM0Mzs9IDQ7XG4gXHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuLVx0XHR0eF9idWYtXHUwMDNlbGVuID0gbnNrYi1cdTAwM2VsZW4gJiM0MzsgNDtcbi1cbi1cdFx0aWYgKGkgXHUwMDNjICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgJiM0MzsgMSkgKiA0O1xuLVxuLVx0XHRpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gJiM0Mzs9IHR4X2J1Zi1cdTAwM2VvZmZzZXQ7XG4mIzQzO1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuJiM0MztcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOz0gcm91bmRfdXAobnNrYi1cdTAwM2VsZW4gJiM0MzsgNCwgNCk7XG4gXG4gXHRcdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XG4gXHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIHNrYl9xdWV1ZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTE5ZDQyMGMwNGU0MGI2NTJkZDNhNDFiODc0MjYzNjk1MTRlMTU5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21hdGguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogCkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCXR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbnNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtoaWZfZGV2LSZndDt0eC50eF9za2JfcXVldWUpOwomIzQzOwkJbnNrYiA9IHNrYl9wZWVrKCZhbXA7aGlmX2Rldi0mZ3Q7dHgudHhfc2tiX3F1ZXVlKTsKJiM0MzsJCWlmICghbnNrYikKJiM0MzsJCQlicmVhazsKIAotCQkvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqLwotCQlCVUdfT04oIW5za2IpOwomIzQzOwkJaWYgKHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFKQomIzQzOwkJCWJyZWFrOwogCiYjNDM7CQluc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO2hpZl9kZXYtJmd0O3R4LnR4X3NrYl9xdWV1ZSk7CiAJCWhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQtLTsKIAogCQlidWYgPSB0eF9idWYtJmd0O2J1ZjsKQEAgLTM0MiwxMyAmIzQzOzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldikKIAkJKmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7CiAJCWJ1ZiAmIzQzOz0gNDsKIAkJbWVtY3B5KGJ1ZiwgbnNrYi0mZ3Q7ZGF0YSwgbnNrYi0mZ3Q7bGVuKTsKLQkJdHhfYnVmLSZndDtsZW4gPSBuc2tiLSZndDtsZW4gJiM0MzsgNDsKLQotCQlpZiAoaSAmbHQ7ICh0eF9za2JfY250IC0gMSkpCi0JCQl0eF9idWYtJmd0O29mZnNldCAmIzQzOz0gKCgodHhfYnVmLSZndDtsZW4gLSAxKSAvIDQpICYjNDM7IDEpICogNDsKLQotCQlpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKQotCQkJdHhfYnVmLSZndDtsZW4gJiM0Mzs9IHR4X2J1Zi0mZ3Q7b2Zmc2V0OwomIzQzOwkJdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDsKJiM0MzsJCXR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNCk7CiAKIAkJX19za2JfcXVldWVfdGFpbCgmYW1wO3R4X2J1Zi0mZ3Q7c2tiX3F1ZXVlLCBuc2tiKTsKIAkJVFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MjIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9faGlmX3VzYl90eGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYGhpZl91c2IuY2AgaXMgdXNlZCBieSBgYXRoOWtfaHRjYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbj8gQ2FuIEkgaGl0IGl0IHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgYSBVU0IgZ2FkZ2V0IHNldHVwLCBtYXliZSByYXctZ2FkZ2V0LCB2aGNpLCBvciBzb21lIG90aGVyIGVtdWxhdGlvbj8gSXMgYGF0aDlrX2h0Y2AgZXZlbiAqZGVzaWduZWQqIHRvIGJlIGEgVVNCIHdpcmVsZXNzIGRyaXZlcj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIG1vZHVsZSBhbmQgVVNCLiBUaGUgbmV4dCBzdGVwLCB0aGVuLCBpcyB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgYGF0aDlrX2h0Y2AgaXMgY29uZmlndXJlZCDigJMgd2hhdCBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiBhbmQgb3BlcmF0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMz1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOS1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQwOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQxLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OC1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTk6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMS1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA2Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDc6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA4LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MjpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkzLVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjUyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIGF0aDlrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLiBUaGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSwgbmF0dXJhbGx5LCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBleHBlY3QgdG8gZmluZCB0aGUgY29tcGxldGUgZGVmaW5pdGlvbnMgb2YgYWxsIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciwgYWxvbmcgd2l0aCBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBwbGF0Zm9ybSBjb21wb25lbnRzLiBUaGlzIGlzIHRoZSBzb2xpZCBmb3VuZGF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGJ1aWx0IGFuZCB3aGljaCBvcHRpb25zIGFyZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuIDIwNzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuIDIwOTpcdFx0c2VsZWN0IFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIFdpRmkgVVNCIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdG8gcmV2aWV3LCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYGF0aDlrYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgVVNCIEhpZ2gtTGV2ZWwgSW50ZXJmYWNlIChgaGlmX3VzYi5jYCkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc3RhcnQgd2l0aCB0aGUgY29yZSBvZiB0aGUgdHJhbnNtaXQgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRhdGEgaXMgYWN0dWFsbHkgc2VudCBvdmVyIHRoZSBVU0IgYnVzLgoKTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyBpdCwgb2YgY291cnNlLCB0byBzZWUgd2hpY2ggY2FsbHMgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VzLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgY29tcGxldGVseSBuZXcgaW1wbGVtZW50YXRpb24/IE9yIGlzIGl0IGEgdHdlYWsgdG8gYW4gZXhpc3RpbmcgcHJvY2Vzcz8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGlucHV0IHBhcmFtZXRlcnMsIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluc2lkZSwgYW5kIGl0cyBvdmVyYWxsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgVVNCIGRyaXZlciBhbmQgcG90ZW50aWFsbHkgdGhlIGhpZ2hlci1sZXZlbCBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIGFsbCBvZiBpdHMgY2FsbGVycyBpcyBnb2luZyB0byBiZSBjcnVjaWFsIHRvIGRldGVybWluaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGVhc2llciB0byBmdWxseSBhcHByZWNpYXRlIHRoZSBjaGFuZ2UgaWYgSSBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Njg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDlrX2hpZl91c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjcwOnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVx0aWYgKCEoaGlmX2Rldi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAzOlx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzA0LVx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX2NvbXBsZXRlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDgtLyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzA5OnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3NT1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXHQgICAgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2MgMikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDE1Olx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNi1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA0MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGEgbmV0d29ya2luZyBleHBlcnQgZmFtaWxpYXIgd2l0aCB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXI6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGg5ayBVU0IgSElGIE1vZHVsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBVU0IgSG9zdCBJbnRlcmZhY2UgKEhJRikgcG9ydGlvbiBvZiB0aGUgYGF0aDlrYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkmIzM5O20gem9uaW5nIGluIG9uIGxpbmVzIDMwMCB0aHJvdWdoIDM4MC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIGEgY3JpdGljYWwgc2VjdGlvbiwgYSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBhbiBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBvciBwZXJoYXBzIGEgY29yZSBmdW5jdGlvbiByZWxhdGVkIHRvIFVTQiBjb21tdW5pY2F0aW9uIGhhbmRsaW5nLCB0aGUgSElGIGxheWVyLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIGZvciBVU0IgdHJhbnNmZXJzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgY2h1bmsgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gMzEwOlx0e1xuIDMxMTpcdFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcbiAzMTI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiAzMTM6XHRcdGludCByZXQgPSAwLCBpO1xuIDMxNDpcdFx0dTE2IHR4X3NrYl9jbnQgPSAwO1xuIDMxNTpcdFx0dTggKmJ1ZjtcbiAzMTY6XHRcdF9fbGUxNiAqaGRyO1xuIDMxNzpcdFxuIDMxODpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCA9PSAwKVxuIDMxOTpcdFx0XHRyZXR1cm4gMDtcbiAzMjA6XHRcbiAzMjE6XHRcdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG4gMzIyOlx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZikpXG4gMzIzOlx0XHRcdHJldHVybiAwO1xuIDMyNDpcdFxuIDMyNTpcdFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XG4gMzI2Olx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbiAzMjc6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuIDMyODpcdFxuIDMyOTpcdFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIDMzMDpcdFxuIDMzMTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbiAzMzI6XHRcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzMzM6XHRcdFx0aWYgKCFuc2tiKVxuIDMzNDpcdFx0XHRcdGJyZWFrO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4gMzM3Olx0XHRcdFx0YnJlYWs7XG4gMzM4Olx0XG4gMzM5Olx0XHRcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzNDA6XHRcdFx0aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LS07XG4gMzQxOlx0XG4gMzQyOlx0XHRcdGJ1ZiA9IHR4X2J1Zi1cdTAwM2VidWY7XG4gMzQzOlx0XHRcdGJ1ZiAmIzQzOz0gdHhfYnVmLVx1MDAzZW9mZnNldDtcbiAzNDQ6XHRcdFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcbiAzNDU6XHRcdFx0KmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihuc2tiLVx1MDAzZWxlbik7XG4gMzQ2Olx0XHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIDM0NzpcdFx0XHRidWYgJiM0Mzs9IDQ7XG4gMzQ4Olx0XHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuIDM0OTpcdFx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuIDM1MDpcdFx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcbiAzNTM6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHR1c2JfZmlsbF9idWxrX3VyYih0eF9idWYtXHUwMDNldXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMzU3Olx0XHRcdFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcbiAzNTg6XHRcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG4gMzU5Olx0XHRcdFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xuIDM2MDpcdFxuIDM2MTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG4gMzYyOlx0XHRpZiAocmV0KSB7XG4gMzYzOlx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbiAzNjQ6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbiAzNjU6XHRcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDM2NjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9idWYpO1xuIDM2NzpcdFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuIDM2ODpcdFx0fSBlbHNlIHtcbiAzNjk6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XG4gMzcyOlx0XHRyZXR1cm4gcmV0O1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzc2Olx0e1xuIDM3NzpcdFx0c3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDtcbiAzNzg6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMzc5Olx0XHRpbnQgcmV0ID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3OTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgYGF0aDlrX2h0Y2Agd2l0aCByZXNwZWN0IHRvIFVTQiBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdXRpbGl6aW5nIFVTQiBlbXVsYXRpb24gKGxpa2Ugc3l6a2FsbGVyJiMzOTtzIGByYXdfZ2FkZ2V0YCBvciB0aGUgYGR1bW15X2hjZGApLiBEb2VzIHRoaXMgZHJpdmVyIG5lZWQgZmlybXdhcmUgbG9hZGluZyBvciBhbnl0aGluZyBlbHNlIHRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGUgcHJvY2Vzcz8gVGhhbmtmdWxseSwgc3l6a2FsbGVyIGhhcyBleHBlcmllbmNlIHdpdGggVVNCIGZ1enppbmcgZm9yIFdpRmkgZGV2aWNlcywgaW5jbHVkaW5nIHRoaXMgb25lLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBhdGg5a19odGNgIGlzIGV2ZW4gcmVhY2hhYmxlLiBHb3R0YSBrZWVwIHRoYXQgJiMzNDtyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZSYjMzQ7IGNvbmNlcHQgaW4gbWluZC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBmdXp6aW5nIGd1aWRlbGluZXMgKHNlY3Rpb25zIDEsIDIsIDMpLCBJJiMzOTttIHJlbWluZGVkIHRoYXQgZnV6emluZyYjMzk7cyBzY29wZSBpcyBjb25maW5lZCB0byBjb2RlIGV4ZWN1dGluZyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgaW5jbHVkZXMgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcywgYW5kIHRoYXTigJlzIGxvb2tpbmcgcHJvbWlzaW5nIGZvciBVU0IgZ2FkZ2V0IHNldHVwcywgbmV0ZGV2LCB0dW4vdGFwLCBldGMuIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBhcmUgdGhlIG9uZXMgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIEFsc28sIGEgcXVpY2sgbm90ZSwgSSYjMzk7bSB0aGlua2luZyBvZiB3aGV0aGVyIEkgY2FuIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGF0IGFueSBzdGFnZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgSSAqb25seSogcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLCBvciBjb2RlIGV4Y2x1c2l2ZSB0byBvdGhlciBhcmNoaXRlY3R1cmVzLgoKQWxyaWdodCwgYGF0aDlrX2h0Y2AgaXMgYSBVU0Igd2lyZWxlc3MgZHJpdmVyISBQZXJmZWN0LiBVU0IgZHJpdmVycyBhcmUgaW5oZXJlbnRseSByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24sIGxpa2UgdGhlIHNldHVwIHN5emthbGxlciB1c2VzLiBTbywgdGhhdCYjMzk7cyBhbHJlYWR5IGEgc2lnbmlmaWNhbnQgcG9zaXRpdmUgZmFjdG9yLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBhZ2dyZWdhdGlvbiBhbmQgYnVmZmVyIG9mZnNldCBoYW5kbGluZyB3aXRoaW4gdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLiBBIGJ1ZmZlciBvdmVyZmxvdyBpcyBiZWluZyBwcmV2ZW50ZWQ7IHRoZSBmaXggaGFuZGxlcyB0aGUgYHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFYCBib3VuZGFyeSBjb25kaXRpb24sIGFzIHdlbGwgYXMgbGVuL29mZnNldCBjYWxjdWxhdGlvbi4KCk5leHQgc3RlcDogSSBuZWVkIHRvIGFuYWx5emUgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBpbXBhY3RlZCBhbmQgdHJhY2UgdGhlaXIgY2FsbCBjaGFpbnMuIExldCYjMzk7cyBsb29rIGF0IGBfX2hpZl91c2JfdHhgLCBgaGlmX3VzYl9zZW5kX3R4YCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gSG9sZCBvbiwgYF9faGlmX3VzYl90eGAgaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHN0YXRpYyBhbmQgKm5vdCogaW5saW5lZCBvciwgd2VsbCwgaW5saW5lZC4gSSB3aWxsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYF9faGlmX3VzYl90eGAgd2l0aGluIGBoaWZfdXNiLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWZfdXNiX3NlbmRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcyPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMDA6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAxLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTM2PXN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE4MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9tZ210KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTgzLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM3NTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDAtXHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDY0PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzAtXHRjYXNlIFVTQl9XTEFOX1RYX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3MTpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3R4KGhpZl9kZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3My1cdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDc0Olx0XHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3NS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODYxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgaGlmX3VzYl9zZW5kYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgYGhpZl91c2Jfc2VuZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93OiBJcyBpdCBjYWxsZWQgZGlyZWN0bHkgYnkgb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHNvbWV3aGVyZT8gSWYgaXQmIzM5O3MgYSBjYWxsYmFjaywgd2hlcmUgaXMgaXQgcmVnaXN0ZXJlZCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpcyBpdCB0cmlnZ2VyZWQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udmVudGlvbnMgYW5kIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBVU0Igc2VuZCBvcGVyYXRpb24gaXMgaW5pdGlhdGVkLiBUaGUgdHJhY2Ugd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoaWZfdXNiX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NzI9c3RhdGljIHZvaWQgaGlmX3VzYl9yZWdvdXRfY2Ioc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEwMDpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMDEtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMzY9c3RhdGljIHZvaWQgaGlmX3VzYl9tZ210X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTgyOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX21nbXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODMtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzA5PXN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzc1OnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzc2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMC1cdCAgICAodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0XHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00MzU9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ2NDpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDcwLVx0Y2FzZSBVU0JfV0xBTl9UWF9QSVBFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NzE6XHRcdHJldCA9IGhpZl91c2Jfc2VuZF90eChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzMtXHRjYXNlIFVTQl9SRUdfT1VUX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3NDpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3JlZ291dChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTIwPXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTI5LVx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MzA6XHQuc2VuZCA9IGhpZl91c2Jfc2VuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTMxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgdGhlIEhJRiBTZW5kIFBhdGgqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbml0aWFsIGh1bmNoLCBnaXZlbiB0aGUgcHJvYmxlbSBkZXNjcmlwdGlvbiwgaXMgdGhhdCB3ZSBoYXZlIGEgcG90ZW50aWFsIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEhJRiB0cmFuc21pc3Npb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgaGlmLSZndDtzZW5kYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhhdCBjYWxsLiBBIGxpa2VseSBjdWxwcml0IHdvdWxkIGJlIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBjb21tdW5pY2F0aW9uIGl0c2VsZi4KClRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCBhbmQgSSYjMzk7bGwgc3RhcnQgd2l0aCBgaHRjX2Rydl90eHJ4LmNgLiBUaGF0IGZpbGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgc291bmRzIGxpa2UgaXQgbWF5IGRlYWwgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gYXNwZWN0cyBvZiB0aGUgSFRDIGRyaXZlciAob3Igd2hhdGV2ZXIgc3lzdGVtIGlzIGJlaW5nIHVzZWQpLiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gZm9sbG93IHRoZSBjYWxsaW5nIHBhdGggb2YgYGhpZi0mZ3Q7c2VuZGAuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBoaWYtJmd0O3NlbmRgIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBiZWluZyB1c2VkLiBJIHdpbGwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBlcnJvcnMgaW4gZGF0YSBwcmVwYXJhdGlvbiwgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0Oy1cdTAwM2VzZW5kXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTIxPXN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozNTpcdHN0YXR1cyA9IHRhcmdldC1cdTAwM2VoaWYtXHUwMDNlc2VuZCh0YXJnZXQtXHUwMDNlaGlmX2RldiwgZW5kcG9pbnQtXHUwMDNldWxfcGlwZWlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGBodGNfaXNzdWVfc2VuZGAgQ2FsbGVycyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMuIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyB0aGUgY2FsbGVycyBvZiBgaHRjX2lzc3VlX3NlbmRgLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBubyBkb3VidCwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGluIHdoYXRldmVyIHByb2JsZW0gSSYjMzk7bSB0cnlpbmcgdG8gYWRkcmVzcywgYmUgaXQgcGVyZm9ybWFuY2UsIGEgYnVnLCBvciBqdXN0IHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSYjMzk7cyBpbnRlcmFjdGlvbi4gR290dGEgdHJhY2UgdGhlIGRhdGEgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBgaHRjX2lzc3VlX3NlbmRgIG9wZXJhdGVzLiBUaGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGEgbW9yZSB0YXJnZXRlZCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHRjX2lzc3VlX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjIxOnN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjItXHRcdFx0ICB1MTYgbGVuLCB1OCBmbGFncywgdTggZXBpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTE1ND1zdGF0aWMgaW50IGh0Y19jb25maWdfcGlwZV9jcmVkaXRzKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjE3NjpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MTkyPXN0YXRpYyBpbnQgaHRjX3NldHVwX2NvbXBsZXRlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjIxMTpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MjQxPWludCBodGNfY29ubmVjdF9zZXJ2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjI4NjpcdHJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MzA3PWludCBodGNfc2VuZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzExLVx0dHhfY3RsID0gSFRDX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozMTI6XHRyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cdTAwM2VsZW4sIDAsIHR4X2N0bC1cdTAwM2VlcGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzEzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTMxNT1pbnQgaHRjX3NlbmRfZXBpZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzE3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6MzE4Olx0cmV0dXJuIGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXHUwMDNlbGVuLCAwLCBlcGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzE5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NzUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQVRIOUtfSFRDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYEFUSDlLX0hUQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBSaWdodCwgaGVyZSBpdCBpczogYGNvbmZpZyBBVEg5S19IVENgIGlzIGEgdHJpc3RhdGUgb3B0aW9uLCBtZWFuaW5nIGl0IGNhbiBiZSBlbmFibGVkIGFzIGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgZGlzYWJsZWQuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBpdCByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIEkgYWxzbyBzZWUgdGhhdCBpdCBzZWxlY3RzIGBNQUM4MDIxMV9MRURTYCB1bmRlciBjZXJ0YWluIExFRCBjbGFzcyBjb25kaXRpb25zIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBpY3R1cmUuCgpCdXQgSSBjYW4mIzM5O3Qgc3RvcCBoZXJlLCBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXJlIGFueSAqaGlnaGVyLWxldmVsKiBkZXBlbmRlbmNpZXMgb3IgcGFyZW50IG1lbnVzIHRoYXQgaW1wYWN0IHRoaXM/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCDigJMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucywgbWVudXMsIG9yIGNvbnRleHQgdGhhdCBpbmZsdWVuY2VzIHRoZSBhdmFpbGFiaWxpdHkgb3IgYmVoYXZpb3Igb2YgYEFUSDlLX0hUQ2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgc3RydWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEg5SyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19BVEg1SylcdFx0JiM0Mzs9IGF0aDVrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUSDlLX0hXKVx0XHQmIzQzOz0gYXRoOWsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfQ0FSTDkxNzApXHRcdCYjNDM7PSBjYXJsOTE3MC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Nzpjb25maWcgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTpjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjU6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2Olx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBPRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTc6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjQ6Y29uZmlnIEFUSDlLX1dPV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVx0Ym9vbCBcJiMzNDtXYWtlIG9uIFdpcmVsZXNzIExBTiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI3LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcdGRlcGVuZHMgb24gUkZLSUxMPXkgfHwgUkZLSUxMPUFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtDaGFubmVsIENvbnRleHQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQ1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1wmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1MzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc2Olx0c2VsZWN0IEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cdGJvb2wgXCYjMzQ7UmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVx0c2VsZWN0IFJFTEFZXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI9YXRoOWsteSAmIzQzOz1cdGJlYWNvbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEyOmF0aDlrLSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSAmIzQzOz0gbWNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxMzphdGg5ay0kKENPTkZJR19BVEg5S19QQ0kpICYjNDM7PSBwY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE0OmF0aDlrLSQoQ09ORklHX0FUSDlLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTU6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0RFQlVHRlMpICYjNDM7PSBkZnNfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE2OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICYjNDM7PSBkZnMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE3OmF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICYjNDM7PSB0eDk5Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxODphdGg5ay0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE5OmF0aDlrLSQoQ09ORklHX0FUSDlLX0hXUk5HKSAmIzQzOz0gcm5nLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMTphdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgJiM0Mzs9IGRlYnVnX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDlLKSAmIzQzOz0gYXRoOWsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI3PWF0aDlrX2h3LXk6PVx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NDg6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfV09XKSAmIzQzOz0gYXI5MDAzX3dvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTA6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBidGNvZXgubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTUxLVx0XHRcdFx0XHQgICBhcjkwMDNfbWNpLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTQ6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfUENPRU0pICYjNDM7PSBhcjkwMDNfcnR0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1NjphdGg5a19ody0kKENPTkZJR19BVEg5S19EWU5BQ0spICYjNDM7PSBkeW5hY2sub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19BVEg5S19IVykgJiM0Mzs9IGF0aDlrX2h3Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfQVRIOUtfQ09NTU9OKSAmIzQzOz0gYXRoOWtfY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02MS1hdGg5a19jb21tb24teTo9XHRjb21tb24ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NTphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSAmIzQzOz0gY29tbW9uLWRlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfb2ZkbV9sZXZlbF9lbnRyeSBvZmRtX2xldmVsX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTI6I2RlZmluZSBBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01My1cdEFSUkFZX1NJWkUob2ZkbV9sZXZlbF90YWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU1Olx0KEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTC0xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU2OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTctXHQzIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfY2NrX2xldmVsX2VudHJ5IGNja19sZXZlbF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo5ODojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtOTktXHRBUlJBWV9TSVpFKGNja19sZXZlbF90YWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDA6I2RlZmluZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMTpcdChBVEg5S19BTklfQ0NLX05VTV9MRVZFTC0xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAzOlx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTA0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xMDUtXHQyIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MTQ5PXN0YXRpYyB2b2lkIGF0aDlrX2h3X3NldF9vZmRtX25pbChzdHJ1Y3QgYXRoX2h3ICphaCwgdTggaW1tdW5pdHlMZXZlbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYwLVx0XHRpbW11bml0eUxldmVsLCBCRUFDT05fUlNTSShhaCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYxOlx0XHRBVEg5S19BTklfUlNTSV9USFJfTE9XLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MjpcdFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjQ6XHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcdTAwMjZcdTAwMjYgaW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NTpcdFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3NC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTc1Olx0XHRcdFx0ICAgICBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNzYtXHRcdFx0XHQgICAgIGVudHJ5X29mZG0tXHUwMDNlc3B1cl9pbW11bml0eV9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4MC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTgxOlx0XHRcdFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODItXHRcdFx0XHQgICAgIGVudHJ5X29mZG0tXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODUtXHRpZiAoYWgtXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTg2Olx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcdTAwM2M9IEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Ny1cdFx0d2Vha19zaWcgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDItXHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbVdlYWtTaWdEZXRlY3QgIT0gd2Vha19zaWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjAzOlx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCwgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwNC1cdFx0XHRcdCAgICAgd2Vha19zaWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjA5Olx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXHUwMDNlPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTA6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTE6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxMi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEzOlx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxNDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a19od19hbmlfb2ZkbV9lcnJfdHJpZ2dlcihzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIyMjpcdGlmIChhbmlTdGF0ZS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfT0ZETV9NQVhfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIzLVx0XHRhdGg5a19od19zZXRfb2ZkbV9uaWwoYWgsIGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgJiM0MzsgMSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMjk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X2Nja19uaWwoc3RydWN0IGF0aF9odyAqYWgsIHVfaW50OF90IGltbXVuaXR5TGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIzOC1cdFx0YW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsLCBpbW11bml0eUxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIzOTpcdFx0QkVBQ09OX1JTU0koYWgpLCBBVEg5S19BTklfUlNTSV9USFJfTE9XLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MDpcdFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDI6XHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcdTAwMjZcdTAwMjYgaW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQzOlx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0NS1cdGlmIChhaC1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDY6XHQgICAgQkVBQ09OX1JTU0koYWgpIFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0xPVyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDc6XHQgICAgaW1tdW5pdHlMZXZlbCBcdTAwM2UgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ4Olx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNTgtXHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI1OTpcdFx0XHRcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjYwLVx0XHRcdFx0ICAgICBlbnRyeV9jY2stXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNjgtXHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI2OTpcdFx0XHRcdCAgICAgQVRIOUtfQU5JX01SQ19DQ0ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjcwLVx0XHRcdFx0ICAgICBlbnRyeV9jY2stXHUwMDNlbXJjX2Nja19vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTI3Mz1zdGF0aWMgdm9pZCBhdGg5a19od19hbmlfY2NrX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6Mjc3Olx0aWYgKGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCBcdTAwM2MgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc4LVx0XHRhdGg5a19od19zZXRfY2NrX25pbChhaCwgYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICYjNDM7IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTMwOT12b2lkIGF0aDlrX2FuaV9yZXNldChzdHJ1Y3QgYXRoX2h3ICphaCwgYm9vbCBpc19zY2FubmluZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyMjpcdG9mZG1fbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIzLVx0XHRcdCBhbmlTdGF0ZS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMjQ6XHRjY2tfbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjUtXHRcdFx0IGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzNi1cdFx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgIT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzc6XHRcdCAgICBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMzgtXHRcdCAgICBhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgIT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzk6XHRcdCAgICBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0MC1cdFx0XHRhdGhfZGJnKGNvbW1vbiwgQU5JLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ4Olx0XHRcdG9mZG1fbmlsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjM0OTpcdFx0XHRjY2tfbmlsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzUwLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTQ3Nz12b2lkIGF0aDlrX2h3X2FuaV9pbml0KHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00ODQtXHRpZiAoQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NjpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODc6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19oaWdoID0gQVRIOUtfQU5JX0NDS19UUklHX0hJR0g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg4Olx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPVztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00ODktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTE6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfT0xEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MjpcdFx0YWgtXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkzOlx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk0LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTY6XHRhbmktXHUwMDNlc3B1ckltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NzpcdGFuaS1cdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk4LVx0YW5pLVx1MDAzZW1yY0NDSyA9IEFSX1NSRVZfOTMwMF8yMF9PUl9MQVRFUihhaCkgPyB0cnVlIDogZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMC1cdGFuaS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAxOlx0YW5pLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwMjpcdGFuaS1cdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTA3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA4Olx0YWgtXHUwMDNlYW5pcGVyaW9kID0gQVRIOUtfQU5JX1BFUklPRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDk6XHRhaC1cdTAwM2Vjb25maWcuYW5pX3BvbGxfaW50ZXJ2YWwgPSBBVEg5S19BTklfUE9MTElOVEVSVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjItLyogdW5pdHMgYXJlIGVycm9ycyBwZXIgc2Vjb25kICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjM6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0ggICAgICAgICAgIDM1MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyNDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkkgMTAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI1OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRCAgICAgICA1MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyNzojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XICAgICAgICAgICA0MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyODojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX0FCT1ZFX0lOSSA5MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyOTojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRCAgICAgICAyMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMTojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIICAgICAgICAgICA2MDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRCAgICAgICAyMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMzojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1cgICAgICAgICAgICAzMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEICAgICAgICAxMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNjojZGVmaW5lIEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwgICAgICAgICAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzc6I2RlZmluZSBBVEg5S19BTklfRklSU1RFUF9MVkwgICAgICAgICAgICAgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM5OiNkZWZpbmUgQVRIOUtfQU5JX1JTU0lfVEhSX0hJR0ggICAgICAgICAgIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDA6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfTE9XICAgICAgICAgICAgN1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQyOiNkZWZpbmUgQVRIOUtfQU5JX1BFUklPRCAgICAgICAgICAgICAgICAgIDMwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ0LS8qIGluIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDU6I2RlZmluZSBBVEg5S19BTklfUE9MTElOVEVSVkFMICAgICAgICAgICAgMTAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ3OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NSU4gICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0ODojZGVmaW5lIEFUSDlLX1NJR19GSVJTVEVQX1NFVFRJTkdfTUFYICAgICAyMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ5OiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUlOICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1MDojZGVmaW5lIEFUSDlLX1NJR19TUFVSX0lNTV9TRVRUSU5HX01BWCAgICAyMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTUxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaD01ND1lbnVtIGF0aDlrX2FuaV9jbWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU1Olx0QVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OID0gMHgxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU2Olx0QVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwgPSAweDIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTc6XHRBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCA9IDB4NCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1ODpcdEFUSDlLX0FOSV9NUkNfQ0NLID0gMHg4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU5Olx0QVRIOUtfQU5JX0FMTCA9IDB4ZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jPTk1Mz1zdGF0aWMgYm9vbCBhcjUwMDhfaHdfYW5pX2NvbnRyb2xfbmV3KHN0cnVjdCBhdGhfaHcgKmFoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTYyLVx0c3dpdGNoIChjbWQgXHUwMDI2IGFoLVx1MDAzZWFuaV9mdW5jdGlvbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzo5NjM6XHRjYXNlIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTjp7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2NC1cdFx0Lypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNDMtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNDQ6XHRjYXNlIEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMOntcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0NS1cdFx0dTMyIGxldmVsID0gcGFyYW07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDU4LVx0XHRcdFx0bGV2ZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNTk6XHRcdFx0XHRBVEg5S19BTklfRklSU1RFUF9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNjAtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNjYtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA2NzpcdFx0XHRcdEFUSDlLX0FOSV9GSVJTVEVQX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2OC1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3Ny1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA3ODpcdGNhc2UgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUw6e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc5LVx0XHR1MzIgbGV2ZWwgPSBwYXJhbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTMtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA5NDpcdFx0XHRcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTUtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDEtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTEwMjpcdFx0XHRcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDMtXHRcdFx0XHR2YWx1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTItXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMTM6XHRjYXNlIEFUSDlLX0FOSV9NUkNfQ0NLOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTE0LVx0XHQvKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9MTE2OT1zdGF0aWMgdm9pZCBhcjUwMDhfaHdfYW5pX2NhY2hlX2luaV9yZWdzKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTIxMy1cdC8qIHRoZXNlIGxldmVscyBqdXN0IGdvdCByZXNldCB0byBkZWZhdWx0cyBieSB0aGUgSU5JICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTQ6XHRhbmlTdGF0ZS1cdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTU6XHRhbmlTdGF0ZS1cdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTYtXHRhbmlTdGF0ZS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMj1zdGF0aWMgYm9vbCBhcjkwMDJfaHdfZ2V0X2lzcihzdHJ1Y3QgYXRoX2h3ICphaCwgZW51bSBhdGg5a19pbnQgKm1hc2tlZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY2LVx0XHRcdGlmIChpc3IyIFx1MDAyNiBBUl9JU1JfUzJfVElNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2NzpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9USU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY4LVx0XHRcdGlmIChpc3IyIFx1MDAyNiBBUl9JU1JfUzJfRFRJTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Njk6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzAtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9EVElNU1lOQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzE6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTVNZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTcyLVx0XHRcdGlmIChpc3IyIFx1MDAyNiAoQVJfSVNSX1MyX0NBQkVORCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjczOlx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0NBQkVORDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzQtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9HVFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc1Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0dUVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzYtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9DU1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc3Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX0NTVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzgtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9UU0ZPT1IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc5Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX1RTRk9PUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjgxOlx0XHRcdGlmICghKHBDYXAtXHUwMDNlaHdfY2FwcyBcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgyLVx0XHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzIsIGlzcjIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjg3Olx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODgtXHRcdFx0aXNyID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9SQUMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk1Olx0XHQqbWFza2VkID0gaXNyIFx1MDAyNiBBVEg5S19JTlRfQ09NTU9OO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk4LVx0XHRcdCAgIEFSX0lTUl9SWE9LIHwgQVJfSVNSX1JYRVJSKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTk6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfUlg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTA2Olx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1RYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwODpcdFx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDktXHRcdFx0XHRzMF9zID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9TMF9TKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTQwOlx0XHRpZiAocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNDEtXHRcdFx0czVfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzVfUyhhaCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTUyLVx0XHRpZiAoYWgtXHUwMDNlaW50cl9nZW5fdGltZXJfdHJpZ2dlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTUzOlx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0dFTlRJTUVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NS1cdFx0aWYgKChzNV9zIFx1MDAyNiBBUl9JU1JfUzVfVElNX1RJTUVSKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU2Olx0XHQgICAgIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9BVVRPU0xFRVApKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTc6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVElNX1RJTUVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1OTpcdFx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTYwLVx0XHRcdFJFR19XUklURShhaCwgQVJfSVNSX1M1LCBzNV9zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTY1Olx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY2LVx0XHRSRUdfV1JJVEUoYWgsIEFSX0lTUiwgaXNyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE4OS1cdFx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5MDpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTkxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTYtXHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9SQywgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5NzpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0yMTI9YXI5MDAyX3NldF90eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLCBzdHJ1Y3QgYXRoX3R4X2luZm8gKmkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MTpcdGN0bDEgfD0gKGktXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gU00oaS1cdTAwM2VrZXlpeCwgQVJfRGVzdElkeCkgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjItXHRcdHwgU00oaS1cdTAwM2V0eXBlLCBBUl9GcmFtZVR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MzpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX05PQUNLID8gQVJfTm9BY2sgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjQ6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfT05MWSA/IEFSX0V4dE9ubHkgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjU6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfQU5EX0NUTCA/IEFSX0V4dEFuZEN0bCA6IDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODItXHRXUklURV9PTkNFKGFkcy1cdTAwM2Vkc19jdGwwLCAoaS1cdTAwM2Vwa3RfbGVuIFx1MDAyNiBBUl9GcmFtZUxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjgzOlx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfVk1GID8gQVJfVmlydE1vcmVGcmFnIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjg0LVx0XHR8IFNNKGktXHUwMDNldHhwb3dlclswXSwgQVJfWG1pdFBvd2VyMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg1Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfVkVPTCA/IEFSX1ZFT0wgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODY6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19JTlRSRVEgPyBBUl9UeEludHJSZXEgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODc6XHRcdHwgKGktXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gQVJfRGVzdElkeFZhbGlkIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg4Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfQ0xSRE1BU0sgPyBBUl9DbHJEZXN0TWFzayA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4OTpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX1JUU0VOQSA/IEFSX1JUU0VuYWJsZSA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI5MDpcdFx0ICAgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19DVFNFTkEgPyBBUl9DVFNFbmFibGUgOiAwKSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMTY9c3RhdGljIGludCBhcjkwMDJfaHdfcHJvY190eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMwLVx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfVHhPcEV4Y2VlZGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozMzE6XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YVFhPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMyLVx0dHMtXHUwMDNldGlkID0gTVMoc3RhdHVzLCBBUl9UeFRpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDAtXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9UeEJhU3RhdHVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0MTpcdFx0dHMtXHUwMDNldHNfZmxhZ3MgfD0gQVRIOUtfVFhfQkE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0Mi1cdFx0dHMtXHUwMDNlYmFfbG93ID0gYWRzLVx1MDAzZUFSX0JhQml0bWFwTG93O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ3LVx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfRnJtWG1pdE9LKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNDg6XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWF9BQ0tFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ5LVx0ZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM1MC1cdFx0aWYgKHN0YXR1cyBcdTAwMjYgQVJfRXhjZXNzaXZlUmV0cmllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzUxOlx0XHRcdHRzLVx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YUkVUUlk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk2MDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gbG9jYXRpb24gZm9yIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGRyaXZlci4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhbGwgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgZGVwZW5kZW5jaWVzLCBmZWF0dXJlIHRvZ2dsZXMsIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZWZhdWx0IHZhbHVlcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGJ1aWx0LCBhbmQgaG93IHZhcmlvdXMgZmVhdHVyZXMgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEl0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIEFUSF9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zL1F1YWxjb21tIGRldmljZXNcJiMzNDtcbiAgIDc6XHRcdGRlZmF1bHQgeVxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAxMDpcdFxuICAxMTpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTI6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxNDpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIHRoaXMgbW9kdWxlIHlvdSBjYW4gdmlzaXQ6XG4gIDE3Olx0XG4gIDE4Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoXG4gIDE5Olx0XG4gIDIwOlx0XHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxuICAyMTpcdFxuICAyMjpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL0F0aGVyb3NcbiAgMjM6XHRcbiAgMjQ6XHRpZiBXTEFOX1ZFTkRPUl9BVEhcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgQVRIX0RFQlVHXG4gIDI3Olx0XHRib29sIFwmIzM0O0F0aGVyb3Mgd2lyZWxlc3MgZGVidWdnaW5nXCYjMzQ7XG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXG4gIDMwOlx0XHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBBVEhfVFJBQ0VQT0lOVFNcbiAgMzM6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyB0cmFjaW5nXCYjMzQ7XG4gIDM0Olx0XHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xuICAzNTpcdFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzg6XHRcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfUkVHX0hJTlRTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzM4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgd2lyZWxlc3MgZHJpdmVycywgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgc3BlY2lmaWMgcG9pbnQgb2YgcmVmZXJlbmNlLiBMZXQgbWUgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBhbmQgem9vbSBpbiBvbiBsaW5lIDQwIGFuZCBiZXlvbmQuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBzZWdtZW50IG9mIHRoZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciB3aWxsIGJlIGRlZmluZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIGZvciB0aGUgdXNlciBvciBieSBkZWZhdWx0LCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGVzZSBvcHRpb25zIHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBmZWF0dXJlIHNldC4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQxOlx0XHRib29sIFwmIzM0O0F0aGVyb3MgZHluYW1pYyB1c2VyIHJlZ3VsYXRvcnkgaGludHNcJiMzNDtcbiAgNDI6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4gIDQzOlx0XHRkZWZhdWx0IG5cbiAgNDQ6XHRcdGhlbHBcbiAgNDU6XHRcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcbiAgNDY6XHRcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XG4gIDQ3Olx0XHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxuICA0ODpcdFxuICA0OTpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9DRVJUX1RFU1RJTkdcbiAgNTA6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSB0ZXN0aW5nXCYjMzQ7XG4gIDUxOlx0XHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4gIDUyOlx0XHRkZWZhdWx0IG5cbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBvbiBzeXN0ZW1zXG4gIDU1Olx0XHQgIHVuZGVyZ29pbmcgY2VydGlmaWNhdGlvbiB0ZXN0aW5nLlxuICA1NjpcdFxuICA1NzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZ1wmIzM0O1xuICA1ODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wmIzM0O1xuICA1OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1wmIzM0O1xuICA2MDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWdcJiMzNDtcbiAgNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnXCYjMzQ7XG4gIDYyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcJiMzNDtcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCYjMzQ7XG4gIDY0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcJiMzNDtcbiAgNjU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCYjMzQ7XG4gIDY2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wmIzM0O1xuICA2NzpcdFxuICA2ODpcdGVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgYW4gQXRoZXJvcyBXTEFOIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGVpciBvbGRlciwgcG9zc2libHkgSFRDLXJlbGF0ZWQgaGFyZHdhcmUuICBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogYENPTkZJR19XTEFOX1ZFTkRPUl9BVEg9eWAgLSB5ZXAsIHRoYXQmIzM5O3Mgd2hhdCB3ZSB3YW50LiAgV2UmIzM5O3JlIGV4cGxpY2l0bHkgZW5hYmxpbmcgdGhlIEF0aGVyb3MgdmVuZG9yIGRyaXZlci4gTWFrZXMgc2Vuc2UuCgpOb3csIHRoZSBgQ09ORklHX0FUSDlLX0hUQz15IChvciBtKWAgbGluZSBpcyBuZXh0LiAgT2theSwgc28gd2UmIzM5O3ZlIGdvdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBsaWtlbHkgZm9yIG9sZGVyIFVTQiBBdGhlcm9zIGRldmljZXMuICBUaGUgJiMzNDsob3IgbSkmIzM0OyBpcyBrZXkg4oCTIHdlIGNhbiBlaXRoZXIgYnVpbGQgaXQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBvciBtYWtlIGl0IGEgbW9kdWxlLiBUaGUgY2hvaWNlIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLCBvZiBjb3Vyc2UuIEZvciB0aGlzIHByb2plY3QsIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvcyBhbmQgY29ucyBvZiBib3RoIG9wdGlvbnMsIGJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMuCgpMZXQmIzM5O3Mgc2Vl4oCmaXQgKmRlcGVuZHMqIG9uIHNldmVyYWwgb3RoZXIgdGhpbmdzLCBuYXR1cmFsbHk6IGBDT05GSUdfVVNCYCwgYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfV0xBTmAsIGFuZCBgQ09ORklHX05FVERFVklDRVNgLiAgRHVoLiAgVVNCIGlzIG9idmlvdXM7IHRoZSBkcml2ZXIgbmVlZHMgdGhlIFVTQiBzdWJzeXN0ZW0uICBgTUFDODAyMTFgIGlzIHRoZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIHNvIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIGBXTEFOYCBpcyB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBlbmFibGUsIGFuZCBgTkVUREVWSUNFU2AgaXMgdGhlIGdlbmVyYWwgbmV0d29yayBkZXZpY2Ugc3VwcG9ydC4gIEFsbCB0aGUgcHJlcmVxdWlzaXRlcyBzZWVtIHNlbnNpYmxlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgbWFzdGVyIEtjb25maWcgZmlsZSBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSBuZWVkIHRvIHRha2UgYSBxdWljayBwZWVrIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IG9wdGlvbnMgaW4gdGhhdCBkaXJlY3RvcnkuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcJiMzNDtcbiAgMzg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvS2NvbmZpZ1wmIzM0O1xuICAzOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXCYjMzQ7XG4gIDQwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTgzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTU3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiB0aGUgYXRoOWtfaHRjIFVTQiBUWCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbWFkZSBzb21lIGNoYW5nZXMgdG8gdGhlIFRYIGFnZ3JlZ2F0aW9uIGxvZ2ljIGluIGBhdGg5a19odGNgIGZvciB0aGUgVVNCIGludGVyZmFjZS4gRmlyc3QsIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgaW5jbHVkaW5nICZsdDtsaW51eC9tYXRoLmgmZ3Q7LiBMZXQgbWUgbG9vayB0aHJvdWdoIHRoZSBkaWZmIGluIGRldGFpbC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgYWdncmVnYXRpbmcgbXVsdGlwbGUgVFggcGFja2V0cyBpbnRvIGEgc2luZ2xlIFVTQiB0cmFuc2Zlci4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBkaWZmIGxvb2tzIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCk9rYXksIHNvIHRoZSBpbXBvcnRhbnQgcGFydHMgSSBzZWU6IEZpcnN0LCB0aGV5IG5vdyB1c2UgYHNrYl9wZWVrYCBiZWZvcmUgYF9fc2tiX2RlcXVldWVgIGFuZCBjaGVjayBpZiB0aGUgcGFja2V0IGZpdHMgd2l0aGluIHRoZSBtYXhpbXVtIFRYIGJ1ZmZlciBzaXplIChgTUFYX1RYX0JVRl9TSVpFYCkuIFRoaXMgaXMgZ29vZC4gSG93ZXZlciwgSSB0aGluayBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIGlzc3VlIGhlcmU6IElmIGB0eF9za2JfY250YCBpcyBncmVhdGVyIHRoYW4gemVybywgYnV0IHRoZSAqZmlyc3QqIHBhY2tldCBkb2VzbiYjMzk7dCBmaXQgKGR1ZSB0byBpdHMgbGVuZ3RoIG9yIHRoZSBjdXJyZW50IG9mZnNldCksIG9yIGlzIGBOVUxMYCwgdGhlIGxvb3Agd2lsbCBicmVhayBpbW1lZGlhdGVseS4gSWYgdGhpcyBoYXBwZW5zLCBJIHNlZSB0aGF0IHRoZSBgdHhfYnVmLSZndDtsZW5gIHdpbGwgYmUgemVyby4gVGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSwgaWYgSSYjMzk7bSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgZHJpdmVyIHdpbGwgdGhlbiBhdHRlbXB0IHRvIHN1Ym1pdCBhIHplcm8tbGVuZ3RoIFVTQiBidWxrIHRyYW5zZmVyLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSB2YXJpZXR5IG9mIHByb2JsZW1zLCBwb3RlbnRpYWxseSBpbmNsdWRpbmcgYSBsb2NrdXAgb3IgYW4gaW5maW5pdGUgbG9vcCB3aGVuIHRoZSBkcml2ZXIgaXMgY2FsbGVkIGFnYWluLiBJdCBzZWVtcyB0aGF0IHRoZSBwYWNrZXRzIG1pZ2h0IGp1c3Qgc3RheSBpbiB0aGUgcXVldWUsIHdhaXRpbmcgZm9yIHByb2Nlc3NpbmcuCgpGdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGEgcGFja2V0ICpsYXJnZXIqIHRoYW4gYE1BWF9UWF9CVUZfU0laRWAgaXMgZW5xdWV1ZWQsIGFsdGhvdWdoIHRoaXMgd291bGQgYmUgdW5saWtlbHkgZ2l2ZW4gdGhlIE1UVSBjaGVja3MsIGJ1dCBhIGZ1enplciBvciBjcmFmdGVkIHBhY2tldCBtaWdodCBieXBhc3MgdGhlc2UgY2hlY2tzLCB0aGVuIGBza2JfcGVla2AgaXMgY2FsbGVkIGFuZCBpbW1lZGlhdGVseSBicmVha3MgdGhlIGxvb3AsIGFuZCB0aGUgbmV4dCBjYWxsIHdpbGwgcmVwZWF0IHRoZSBwcm9jZXNzIGZvcmV2ZXIuCgpUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4gVGhlIFRYIHBhY2tldCBhZ2dyZWdhdGlvbiBwYXRoIGlzIGV4cG9zZWQgdGhyb3VnaCBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9jZmc4MDIxMSwgYW5kIGRpcmVjdGx5IHdpdGggcmF3IHBhY2tldHMvc29ja2V0IGluamVjdGlvbi4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgZm9yIG15IGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYF9faGlmX3VzYl90eGAsIGBoaWZfdXNiX3NlbmRfdHhgICh0aGUgY2FsbGVyIG9mIGBfX2hpZl91c2JfdHhgKSwgYGhpZl91c2Jfc2VuZGAsIGBhdGg5a19odGNfdHhfZGF0YWAsIGBodGNfaXNzdWVfc2VuZGAvYGh0Y19zZW5kYCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmcm9tIHRoZSBkcml2ZXImIzM5O3MgVFggZW50cnkgcG9pbnQgZG93biB0byB0aGUgVVNCIHN1Ym1pc3Npb24gYW5kIGNvbXBsZXRpb24gaGFuZGxpbmcuCgpJIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSBub3QgdG9vIGdlbmVyaWMsIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgYXQgdGhlbSBpbiBkZXRhaWwgd2l0aGluIHRoZSBkcml2ZXImIzM5O3Mgc291cmNlIHRvIHNlZSBleGFjdGx5IGhvdyB0aGlzIFRYIHBhdGggaXMgc3RydWN0dXJlZC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCBuYW1lcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjX3R4X2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjYwOnN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNjEtXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzQwPWludCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zODEtXHRpZiAoaWVlZTgwMjExX2lzX2RhdGEoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM4MjpcdFx0YXRoOWtfaHRjX3R4X2RhdGEocHJpdiwgdmlmLCBza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzgzLVx0XHRcdFx0ICBzdGFfaWR4LCB2aWZfaWR4LCBzbG90LCBpc19jYWIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgzNgoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBhdGg5a19odGNfdHhfc3RhcnRgIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgYWxsIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGBhdGg5a19odGNfdHhfc3RhcnRgIGlzIGludm9sdmVkLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBLY29uZmlnIG9wdGlvbnMgZW5hYmxlZC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGBXTEFOYCwgYW5kIGBORVRERVZJQ0VTYCBhcmUgYWxsIHNldCBjb3JyZWN0bHkuCgpBbHJpZ2h0LCBub3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gTG9va2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUgY29uZmlybXMgdGhhdCBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGRlcGVuZHMgb24gYFdMQU5fVkVORE9SX0FUSGAgdW5kZXIgYFdMQU5gLiBTbyB5ZXMsIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAgYXJlIGluZGVlZCB0aGUgY29yZSBjb25maWdzIGhlcmUuIFRoYXQmIzM5O3MgZ29vZC4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBmdXp6aW5nIHN0cmF0ZWd5IGl0c2VsZi4gVGhlIGxvZ2ljIHNheXMgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBhZ3JlZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZXNzZXMgd2l0aCBwYWNrZXQgYWdncmVnYXRpb24gYW5kIGhvdyBsZW5ndGgvb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCB3aXRoaW4gYF9faGlmX3VzYl90eGAsIGEgZnVuY3Rpb24gaW4gdGhlIGBhdGg5a19odGNgIFVTQiBXaUZpIGRyaXZlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBhbmQgc3RhbmRhcmQgbWFjODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiwgc28gdGhlIGF0dGFjayBzdXJmYWNlIGlzIGRlZmluaXRlbHkgcHJlc2VudC4KCkkmIzM5O3ZlIGdvdCB0aGUgZm9jdXMgc3ltYm9scyBpZGVudGlmaWVkOiBgX19oaWZfdXNiX3R4YCwgYGhpZl91c2Jfc2VuZF90eGAsIGBoaWZfdXNiX3NlbmRgLCBgaGlmX3VzYl90eF9jYmAsIGBhdGg5a19odGNfdHhfc3RhcnRgLCBhbmQgYGF0aDlrX2h0Y190eF9kYXRhYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSYjMzk7bGwgYmUgdGFyZ2V0aW5nIGR1cmluZyB0aGUgZnV6emluZy4KCkZpbmFsbHksIGp1c3QgdG8gcmVpdGVyYXRlLCBteSBlbmFibGUgY29uZmlncyBhcmU6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAuCgpPa2F5LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBhIHNvbGlkIHBsYW4gaGVyZS4gVGltZSB0byBgc2V0LXJlc3VsdHNgIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9BVEgmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faGlmX3VzYl90eCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3NlbmRfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDssCiAgICAmIzM0O2hpZl91c2JfdHhfY2ImIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX3R4X3N0YXJ0JiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBhZ2dyZWdhdGlvbiBib3VuZGFyeSBjaGVja3MsIHF1ZXVlIGhhbmRsaW5nLCBhbmQgYnVmZmVyIGxlbmd0aC9vZmZzZXQgY2FsY3VsYXRpb25zIGluIF9faGlmX3VzYl90eCBmb3IgdGhlIGF0aDlrX2h0YyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldHdvcmsgcGFja2V0IHRyYW5zbWlzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2hpZl91c2JfdHgmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3R4JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3R4X2NiJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y190eF9zdGFydCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfdHhfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJiMzOTtzIFRYIGFnZ3JlZ2F0aW9uIHBhdGggKGBfX2hpZl91c2JfdHhgKSBieSBjaGVja2luZyB0aGF0IHRoZSBhZ2dyZWdhdGVkIHBhY2tldCBzaXplIChgdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0YCkgZG9lcyBub3QgZXhjZWVkIGBNQVhfVFhfQlVGX1NJWkVgLCBhbmQgdXBkYXRpbmcgYHR4X2J1Zi1cdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVx1MDAzZW9mZnNldGAgcGVyIHBhY2tldCB1c2luZyBgcm91bmRfdXAoKWAuXG5cbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cdTAwM2VidWZgLiBBbnkgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgb3IgbGlzdC9za2IgbWlzbWFuYWdlbWVudCBpbiB0aGlzIHBhdGggaXMgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi5cbi0gS01TQU4gYXBwbGljYWJpbGl0eTogTm8ga2VybmVsIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGludHJvZHVjZWQgb3IgcmVhZCwgYW5kIGFsbCBidWZmZXIgbWVtb3J5IChgdHhfYnVmYCkgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX2ZsZXhgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgcmlza3MuXG5cblRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZDsgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTE5ZDQyMGMwNGU0MGI2NTJkZDNhNDFiODc0MjYzNjk1MTRlMTU5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21hdGguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogCkBAIC0zMjgsMTEgJiM0MzszMjksMTQgQEAgc3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCXR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHsKLQkJbnNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtoaWZfZGV2LSZndDt0eC50eF9za2JfcXVldWUpOwomIzQzOwkJbnNrYiA9IHNrYl9wZWVrKCZhbXA7aGlmX2Rldi0mZ3Q7dHgudHhfc2tiX3F1ZXVlKTsKJiM0MzsJCWlmICghbnNrYikKJiM0MzsJCQlicmVhazsKIAotCQkvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqLwotCQlCVUdfT04oIW5za2IpOwomIzQzOwkJaWYgKHR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0ICZndDsgTUFYX1RYX0JVRl9TSVpFKQomIzQzOwkJCWJyZWFrOwogCiYjNDM7CQluc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO2hpZl9kZXYtJmd0O3R4LnR4X3NrYl9xdWV1ZSk7CiAJCWhpZl9kZXYtJmd0O3R4LnR4X3NrYl9jbnQtLTsKIAogCQlidWYgPSB0eF9idWYtJmd0O2J1ZjsKQEAgLTM0MiwxMyAmIzQzOzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldikKIAkJKmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7CiAJCWJ1ZiAmIzQzOz0gNDsKIAkJbWVtY3B5KGJ1ZiwgbnNrYi0mZ3Q7ZGF0YSwgbnNrYi0mZ3Q7bGVuKTsKLQkJdHhfYnVmLSZndDtsZW4gPSBuc2tiLSZndDtsZW4gJiM0MzsgNDsKLQotCQlpZiAoaSAmbHQ7ICh0eF9za2JfY250IC0gMSkpCi0JCQl0eF9idWYtJmd0O29mZnNldCAmIzQzOz0gKCgodHhfYnVmLSZndDtsZW4gLSAxKSAvIDQpICYjNDM7IDEpICogNDsKLQotCQlpZiAoaSA9PSAodHhfc2tiX2NudCAtIDEpKQotCQkJdHhfYnVmLSZndDtsZW4gJiM0Mzs9IHR4X2J1Zi0mZ3Q7b2Zmc2V0OwomIzQzOwkJdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDsKJiM0MzsJCXR4X2J1Zi0mZ3Q7b2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNCk7CiAKIAkJX19za2JfcXVldWVfdGFpbCgmYW1wO3R4X2J1Zi0mZ3Q7c2tiX3F1ZXVlLCBuc2tiKTsKIAkJVFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCioqQW5hbHl6aW5nIHRoaXMgUGF0Y2ggYW5kIGl0cyBTdXJyb3VuZGluZ3MqKgoKUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5zdGluY3QgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gVGhhdCBmaWxlIHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBvaW50IG9mIGRlcGFydHVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlIGluIGEgd2lyZWxlc3MgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIHRoZSB0b29scyBhbmQgc3RhcnQgc2lmdGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gMzEwOlx0e1xuIDMxMTpcdFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcbiAzMTI6XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbiAzMTM6XHRcdGludCByZXQgPSAwLCBpO1xuIDMxNDpcdFx0dTE2IHR4X3NrYl9jbnQgPSAwO1xuIDMxNTpcdFx0dTggKmJ1ZjtcbiAzMTY6XHRcdF9fbGUxNiAqaGRyO1xuIDMxNzpcdFxuIDMxODpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCA9PSAwKVxuIDMxOTpcdFx0XHRyZXR1cm4gMDtcbiAzMjA6XHRcbiAzMjE6XHRcdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG4gMzIyOlx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZikpXG4gMzIzOlx0XHRcdHJldHVybiAwO1xuIDMyNDpcdFxuIDMyNTpcdFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XG4gMzI2Olx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbiAzMjc6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuIDMyODpcdFxuIDMyOTpcdFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LCBNQVhfVFhfQUdHUl9OVU0pO1xuIDMzMDpcdFxuIDMzMTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHhfc2tiX2NudDsgaSYjNDM7JiM0MzspIHtcbiAzMzI6XHRcdFx0bnNrYiA9IHNrYl9wZWVrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzMzM6XHRcdFx0aWYgKCFuc2tiKVxuIDMzNDpcdFx0XHRcdGJyZWFrO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAodHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXG4gMzM3Olx0XHRcdFx0YnJlYWs7XG4gMzM4Olx0XG4gMzM5Olx0XHRcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlKTtcbiAzNDA6XHRcdFx0aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfY250LS07XG4gMzQxOlx0XG4gMzQyOlx0XHRcdGJ1ZiA9IHR4X2J1Zi1cdTAwM2VidWY7XG4gMzQzOlx0XHRcdGJ1ZiAmIzQzOz0gdHhfYnVmLVx1MDAzZW9mZnNldDtcbiAzNDQ6XHRcdFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcbiAzNDU6XHRcdFx0KmhkciYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihuc2tiLVx1MDAzZWxlbik7XG4gMzQ2Olx0XHRcdCpoZHImIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIDM0NzpcdFx0XHRidWYgJiM0Mzs9IDQ7XG4gMzQ4Olx0XHRcdG1lbWNweShidWYsIG5za2ItXHUwMDNlZGF0YSwgbnNrYi1cdTAwM2VsZW4pO1xuIDM0OTpcdFx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCAmIzQzOyBuc2tiLVx1MDAzZWxlbiAmIzQzOyA0O1xuIDM1MDpcdFx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcbiAzNTM6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHR1c2JfZmlsbF9idWxrX3VyYih0eF9idWYtXHUwMDNldXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMzU3Olx0XHRcdFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcbiAzNTg6XHRcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG4gMzU5Olx0XHRcdFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xuIDM2MDpcdFxuIDM2MTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG4gMzYyOlx0XHRpZiAocmV0KSB7XG4gMzYzOlx0XHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbiAzNjQ6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbiAzNjU6XHRcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDM2NjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCwgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9idWYpO1xuIDM2NzpcdFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuIDM2ODpcdFx0fSBlbHNlIHtcbiAzNjk6XHRcdFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XG4gMzcyOlx0XHRyZXR1cm4gcmV0O1xuIDM3MzpcdH1cbiAzNzQ6XHRcbiAzNzU6XHRzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzc2Olx0e1xuIDM3NzpcdFx0c3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDtcbiAzNzg6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gMzc5Olx0XHRpbnQgcmV0ID0gMDtcbiAzODA6XHRcbiAzODE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuIDM4MjpcdFxuIDM4MzpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEhJRl9VU0JfVFhfU1RPUCkge1xuIDM4NDpcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuIDM4NTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAzODY6XHRcdH1cbiAzODc6XHRcbiAzODg6XHRcdC8qIENoZWNrIGlmIHRoZSBtYXggcXVldWUgY291bnQgaGFzIGJlZW4gcmVhY2hlZCAqL1xuIDM4OTpcdFx0aWYgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2UgTUFYX1RYX0JVRl9OVU0pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ5NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgdGhlIGBoaWZfdXNiX3R4X2NiYCBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgaGlmX3VzYi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0cmFuc21pdCBidWZmZXIgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCBpbiByZWxhdGlvbiB0byB0aGF0IGNhbGxiYWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGF0YSBpcyBhY3R1YWxseSBwcmVwYXJlZCBmb3IgYW5kIHRyaWdnZXJlZCB0byBiZSB0cmFuc21pdHRlZCBvdmVyIFVTQi4gTG9va2luZyBhdCB0aGlzIGNhbGxiYWNrIGluIGlzb2xhdGlvbiBpc24mIzM5O3QgZ29pbmcgdG8gZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgaGlmX3VzYi5jYCwgdGhlIGludGVyYWN0aW9ucywgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIEkgbmVlZCB0byB0cmFjZSB0aGUgYnVmZmVyIGxpZmVjeWNsZSDigJMgZnJvbSBpbml0aWFsaXphdGlvbiwgdGhyb3VnaCBkYXRhIHBvcHVsYXRpb24sIGFuZCBmaW5hbGx5LCB0byB3aGVuIHRoZSBgaGlmX3VzYl90eF9jYmAgZ2V0cyBpbnZva2VkLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyBVU0IgdHJhbnNmZXIgbWVjaGFuaXNtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0Y2FzZSAtRU5PREVWOlxuIDI3MTpcdFx0Y2FzZSAtRVNIVVRET1dOOlxuIDI3MjpcdFx0XHR0eG9rID0gZmFsc2U7XG4gMjczOlx0XG4gMjc0Olx0XHRcdC8qXG4gMjc1Olx0XHRcdCAqIElmIHRoZSBVUkJzIGFyZSBiZWluZyBmbHVzaGVkLCBubyBuZWVkIHRvIGFkZCB0aGlzXG4gMjc2Olx0XHRcdCAqIFVSQiB0byB0aGUgZnJlZSBsaXN0LlxuIDI3NzpcdFx0XHQgKi9cbiAyNzg6XHRcdFx0c3Bpbl9sb2NrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jayk7XG4gMjc5Olx0XHRcdGlmIChoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX0ZMVVNIKSB7XG4gMjgwOlx0XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAyODE6XHRcdFx0XHRhdGg5a19za2JfcXVldWVfcHVyZ2UoaGlmX2RldiwgXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSk7XG4gMjgyOlx0XHRcdFx0cmV0dXJuO1xuIDI4MzpcdFx0XHR9XG4gMjg0Olx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jayk7XG4gMjg1Olx0XG4gMjg2Olx0XHRcdGJyZWFrO1xuIDI4NzpcdFx0ZGVmYXVsdDpcbiAyODg6XHRcdFx0dHhvayA9IGZhbHNlO1xuIDI4OTpcdFx0XHRicmVhaztcbiAyOTA6XHRcdH1cbiAyOTE6XHRcbiAyOTI6XHRcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlLCB0eG9rKTtcbiAyOTM6XHRcbiAyOTQ6XHRcdC8qIFJlLWluaXRpYWxpemUgdGhlIFNLQiBxdWV1ZSAqL1xuIDI5NTpcdFx0dHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgPSAwO1xuIDI5NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuIDI5NzpcdFxuIDI5ODpcdFx0LyogQWRkIHRoaXMgVFggYnVmZmVyIHRvIHRoZSBmcmVlIGxpc3QgKi9cbiAyOTk6XHRcdHNwaW5fbG9jayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2spO1xuIDMwMDpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbiAzMDE6XHRcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCYjNDM7JiM0Mzs7XG4gMzAyOlx0XHRpZiAoIShoaWZfZGV2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxuIDMwMzpcdFx0XHRfX2hpZl91c2JfdHgoaGlmX2Rldik7IC8qIENoZWNrIGZvciBwZW5kaW5nIFNLQnMgKi9cbiAzMDQ6XHRcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xuIDMwNTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbiAzMDY6XHR9XG4gMzA3Olx0XG4gMzA4Olx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cbiAzMDk6XHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBCdWZmZXIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVtb3J5IGxheW91dCBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgYHR4X2J1ZmAgc3RydWN0dXJlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBgdHhfYnVmYCAqaXRzZWxmKiBhbGxvY2F0ZWQ/IElzIGl0IG9uIHRoZSBzdGFjaywgaGVhcCwgb3Igc29tZSBvdGhlciBtZW1vcnkgcmVnaW9uPyBUaGF0IGNvbnRleHQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgbGlmZXRpbWUgYW5kIHNjb3BlLgoKQW5kLCBldmVuIG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4gb2YgYHR4X2J1Zi0mZ3Q7YnVmYC4gVGhpcyBpcyB0aGUgKnJlYWwqIGJ1ZmZlciwgcmlnaHQ/IElzIGl0IGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgYXJyYXkgd2l0aGluIGB0eF9idWZgLCBvciBpcyBpdCBhIHBvaW50ZXIgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeT8gQW5kIGlmIHRoZSBsYXR0ZXIsIHdoZXJlIGFuZCBob3cgaXMgdGhhdCBtZW1vcnkgYmVpbmcgbWFuYWdlZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBgbWFsbG9jYCwgYSBjdXN0b20gYWxsb2NhdG9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZiBgdHhfYnVmLSZndDtidWZgIGlzIGtleSB0byBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGVuc3VyaW5nIHByb3BlciBkYXRhIGFjY2VzcyBhbmQgZGVhbGxvY2F0aW9uIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZSBjb2RlIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MjM0PXN0cnVjdCBhdGhfYXR4X3RpZCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMjM4LVx0c3RydWN0IGF0aF90eHEgKnR4cTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjIzOTpcdHVuc2lnbmVkIGxvbmcgdHhfYnVmW0JJVFNfVE9fTE9OR1MoQVRIX1RJRF9NQVhfQlVGUyldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMjQwLVx0dTE2IHNlcV9zdGFydDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTI1ND1zdGF0aWMgdm9pZCBoaWZfdXNiX3R4X2NiKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU2Olx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI1Ny1cdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjYwOlx0aWYgKCF0eF9idWYgfHwgIXR4X2J1Zi1cdTAwM2VoaWZfZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNjEtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjM6XHRoaWZfZGV2ID0gdHhfYnVmLVx1MDAzZWhpZl9kZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI4MC1cdFx0XHRzcGluX3VubG9jayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODE6XHRcdFx0YXRoOWtfc2tiX3F1ZXVlX3B1cmdlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yODItXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyOTI6XHRhdGg5a19za2JfcXVldWVfY29tcGxldGUoaGlmX2RldiwgXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgdHhvayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjk0LVx0LyogUmUtaW5pdGlhbGl6ZSB0aGUgU0tCIHF1ZXVlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NTpcdHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjk2Olx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yOTktXHRzcGluX2xvY2soXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAwOlx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAxOlx0aGlmX2Rldi1cdTAwM2V0eC50eF9idWZfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVx0aWYgKCEoaGlmX2Rldi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMxMTpcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMi1cdHN0cnVjdCBza19idWZmICpuc2tiID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyMS1cdC8qIENoZWNrIGlmIGEgZnJlZSBUWCBidWZmZXIgaXMgYXZhaWxhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyMjpcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzIzLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMjU6XHR0eF9idWYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI2Olx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfcGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyNzpcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudC0tO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMzNjpcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNCBcdTAwM2UgTUFYX1RYX0JVRl9TSVpFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzctXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MjpcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzQzOlx0XHRidWYgJiM0Mzs9IHR4X2J1Zi1cdTAwM2VvZmZzZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0NC1cdFx0aGRyID0gKF9fbGUxNiAqKWJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0OC1cdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0OTpcdFx0dHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzUwOlx0XHR0eF9idWYtXHUwMDNlb2Zmc2V0ICYjNDM7PSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiAmIzQzOyA0LCA0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTI6XHRcdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM1My1cdFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1NjpcdHVzYl9maWxsX2J1bGtfdXJiKHR4X2J1Zi1cdTAwM2V1cmIsIGhpZl9kZXYtXHUwMDNldWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzU3LVx0XHRcdCAgdXNiX3NuZGJ1bGtwaXBlKGhpZl9kZXYtXHUwMDNldWRldiwgVVNCX1dMQU5fVFhfUElQRSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1ODpcdFx0XHQgIHR4X2J1Zi1cdTAwM2VidWYsIHR4X2J1Zi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1OTpcdFx0XHQgIGhpZl91c2JfdHhfY2IsIHR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYxOlx0cmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLVx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2Mi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYzOlx0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2NDpcdFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY1Olx0XHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2dHhfYnVmLVx1MDAzZXNrYl9xdWV1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2NjpcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY3Olx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNjgtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxMi1cdC8qIENoZWNrIGlmIEFNUERVcyBoYXZlIHRvIGJlIHNlbnQgaW1tZWRpYXRlbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDEzOlx0aWYgKChoaWZfZGV2LVx1MDAzZXR4LnR4X2J1Zl9jbnQgPT0gTUFYX1RYX1VSQl9OVU0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXHQgICAgKGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCBcdTAwM2MgMikpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQzNT1zdGF0aWMgdm9pZCBoaWZfdXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzNy1cdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiA9IGhpZl9oYW5kbGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQzODpcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEwsICp0eF9idWZfdG1wID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDM5LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ0OC1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NDk6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTAtXHRcdFx0XHQgXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nLCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1MTpcdFx0dXNiX2dldF91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ1Mi1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDUzOlx0XHR1c2Jfa2lsbF91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NDpcdFx0bGlzdF9kZWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NTU6XHRcdHVzYl9mcmVlX3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDU2Olx0XHRrZnJlZSh0eF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTctXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODAyPXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODA0Olx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTCwgKnR4X2J1Zl90bXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MDUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODA3LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgwODpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgwOTpcdFx0XHRcdCBcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X2J1ZiwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MTA6XHRcdGxpc3RfZGVsKFx1MDAyNnR4X2J1Zi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODExOlx0XHR1c2JfZnJlZV91cmIodHhfYnVmLVx1MDAzZXVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMjpcdFx0a2ZyZWUodHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODEzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODIwLVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyMTpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyMi1cdFx0XHRcdCBcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3BlbmRpbmcsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODIzOlx0XHR1c2JfZ2V0X3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODI0LVx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MjU6XHRcdHVzYl9raWxsX3VyYih0eF9idWYtXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODI2Olx0XHRsaXN0X2RlbChcdTAwMjZ0eF9idWYtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNzpcdFx0dXNiX2ZyZWVfdXJiKHR4X2J1Zi1cdTAwM2V1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mjg6XHRcdGtmcmVlKHR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyOS1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz04MzY9c3RhdGljIGludCBhdGg5a19oaWZfdXNiX2FsbG9jX3R4X3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04Mzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mzg6XHRzdHJ1Y3QgdHhfYnVmICp0eF9idWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgzOS1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0MTpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQyLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9wZW5kaW5nKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg0Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9UWF9VUkJfTlVNOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NDg6XHRcdHR4X2J1ZiA9IGt6YWxsb2NfZmxleCgqdHhfYnVmLCBidWYsIE1BWF9UWF9CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0OTpcdFx0aWYgKCF0eF9idWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MC1cdFx0XHRnb3RvIGVycjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTI6XHRcdHR4X2J1Zi1cdTAwM2V1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTM6XHRcdGlmICghdHhfYnVmLVx1MDAzZXVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU0LVx0XHRcdGdvdG8gZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1NjpcdFx0dHhfYnVmLVx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTc6XHRcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZ0eF9idWYtXHUwMDNlc2tiX3F1ZXVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTk6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dHhfYnVmLVx1MDAzZWxpc3QsIFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODYwLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg2MjpcdGhpZl9kZXYtXHUwMDNldHgudHhfYnVmX2NudCA9IE1BWF9UWF9VUkJfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjUtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NjY6XHRrZnJlZSh0eF9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjctXHRhdGg5a19oaWZfdXNiX2RlYWxsb2NfdHhfdXJicyhoaWZfZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oPTM5PWV4dGVybiBpbnQgaHRjX3VzZV9kZXZfZnc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6Nzk6c3RydWN0IHR4X2J1ZiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oLTgwLVx0dTE2IGxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oPTk3PXN0cnVjdCBoaWZfdXNiX3R4IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtOTgtXHR1OCBmbGFncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6OTk6XHR1OCB0eF9idWZfY250O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC0xMDAtXHR1MTYgdHhfc2tiX2NudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAxLVx0c3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9za2JfcXVldWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oOjEwMjpcdHN0cnVjdCBsaXN0X2hlYWQgdHhfYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC0xMDMtXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X3BlbmRpbmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0zMTc9c3RhdGljIHZvaWQgYXRoX3R4X3VwZGF0ZV9iYXcoc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsIHN0cnVjdCBhdGhfYnVmICpiZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MzI5Olx0X19jbGVhcl9iaXQoY2luZGV4LCB0aWQtXHUwMDNldHhfYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzozMzE6XHR3aGlsZSAodGlkLVx1MDAzZWJhd19oZWFkICE9IHRpZC1cdTAwM2ViYXdfdGFpbCBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KHRpZC1cdTAwM2ViYXdfaGVhZCwgdGlkLVx1MDAzZXR4X2J1ZikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzMyLVx0XHRJTkNSKHRpZC1cdTAwM2VzZXFfc3RhcnQsIElFRUU4MDIxMV9TRVFfTUFYKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTMzOT1zdGF0aWMgdm9pZCBhdGhfdHhfYWRkdG9fYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0zNDktXHRjaW5kZXggPSAodGlkLVx1MDAzZWJhd19oZWFkICYjNDM7IGluZGV4KSBcdTAwMjYgKEFUSF9USURfTUFYX0JVRlMgLSAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MzUwOlx0X19zZXRfYml0KGNpbmRleCwgdGlkLVx1MDAzZXR4X2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTM1MS1cdGZpLVx1MDAzZWJhd190cmFja2VkID0gMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE1NzE9aW50IGF0aF90eF9hZ2dyX3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTYwMzpcdG1lbXNldCh0eHRpZC1cdTAwM2V0eF9idWYsIDAsIHNpemVvZih0eHRpZC1cdTAwM2V0eF9idWYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYwNC1cdHR4dGlkLVx1MDAzZWJhd19oZWFkID0gdHh0aWQtXHUwMDNlYmF3X3RhaWwgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYzMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgVFggQWdncmVnYXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIGRvaW5nIGFuZCB3aGF0IHRoaXMgcGF0Y2ggaXMgYXR0ZW1wdGluZyB0byBmaXguIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1bmNvbmRpdGlvbmFsbHkgZGVxdWV1aW5nIHVwIHRvIGB0eF9za2JfY250YCBza2JzLiBUaGF0IGFscmVhZHkgcmFpc2VzIGEgZmxhZy4gTW9yZSBpbXBvcnRhbnRseSwgaXQgc2VlbXMgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBjb3VsZCBoYXZlIGJlZW4gd3JpdGluZyBpbnRvIGB0eF9idWYtJmd0O2J1ZiAmIzQzOyB0eF9idWYtJmd0O29mZnNldGAgKndpdGhvdXQqIGFueSBib3VuZGFyeSBjaGVja3MhIFNwZWNpZmljYWxseSwgd2l0aG91dCBjaGVja2luZyBpZiB0aGUgY3VycmVudCBgb2Zmc2V0ICYjNDM7IG5za2ItJmd0O2xlbiAmIzQzOyA0YCBleGNlZWRzIGBNQVhfVFhfQlVGX1NJWkVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSB3YWl0aW5nIHRvIGhhcHBlbi4KClRoZSBwYXRjaCB0cmllcyB0byBhZGRyZXNzIHRoaXMuIE5vdywgYmVmb3JlIGRlcXVldWluZywgdGhlcmUmIzM5O3MgYSBjaGVjayB1c2luZyBgc2tiX3BlZWtgIHRvIGxvb2sgYXQgdGhlIG5leHQgU0tCLiAgSWYgdGhlIGNvbWJpbmVkIGxlbmd0aCB3b3VsZCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIHRoZSBsb29wIGJyZWFrcy4gKlRoZW4qLCBhbmQgb25seSB0aGVuLCBkb2VzIGl0IGRlcXVldWUgd2l0aCBgX19za2JfZGVxdWV1ZWAuIFRoZSBvcmlnaW5hbCB1bmNvbmRpdGlvbmFsIGBCVUdfT05gIGNhbGwgaXMgbm93IHJlcGxhY2VkIHdpdGggdGhpcyBsZW5ndGggY2hlY2sgd2hpY2ggaXMgYmV0dGVyIHRoYW4gYSBwYW5pYy4KCk5vdywgbGV0JiMzOTtzIHRhbGsgYWJvdXQgdGhlIHRyaWNreSBiaXQgd2l0aCBgdHhfYnVmLSZndDtsZW5gLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgc29tZSBwZWN1bGlhciBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YC4gSXQgc2VlbXMgdGhhdCBpZiB0aGUgbG9vcCBicm9rZSBlYXJseSwgZHVlIHRvIGNhcGFjaXR5IGlzc3VlcyBvciBhbm90aGVyIGNvbmRpdGlvbiwgdGhlIGZpbmFsIGB0eF9idWYtJmd0O2xlbmAgd291bGQgb25seSBiZSB1cGRhdGVkIG9uIHRoZSAqbGFzdCogaXRlcmF0aW9uLCB3aGljaCBpcyB3cm9uZy4gVGhpcyBpcyB3aGVyZSBJIHRoaW5rIHRoZSByZWFsIGJ1ZyB3YXMuCgpUaGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyB0byBjYWxjdWxhdGUgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YCBhcmUgY3JpdGljYWwuIEl0JiMzOTtzIG5vdyBjYWxjdWxhdGVkIGluY3JlbWVudGFsbHkgYW5kIGNvcnJlY3RseSB3aXRoaW4gdGhlIGxvb3A6ICBgdHhfYnVmLSZndDtsZW4gPSB0eF9idWYtJmd0O29mZnNldCAmIzQzOyBuc2tiLSZndDtsZW4gJiM0MzsgNDtgIGFuZCBgdHhfYnVmLSZndDtvZmZzZXQgJiM0Mzs9IHJvdW5kX3VwKG5za2ItJmd0O2xlbiAmIzQzOyA0LCA0KTtgLiBUaGlzIG1ha2VzIG1vcmUgc2Vuc2UgYW5kIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGxhc3QgaXRlcmF0aW9uLiBUaGlzIGNoYW5nZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwsIGJ1dCB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGN1bGF0aW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUsIGJlY2F1c2UgdGhlIGxvb3AgbWlnaHQgdGVybWluYXRlIGVhcmx5LiBUaGlzIGZpeGVzIHRoZSBvZmYtYnktb25lIGVycm9ycyBmcm9tIHRoZSBvbGQgbWV0aG9kLCBtYWtpbmcgaXQgY29ycmVjdC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXNlIGNhbGN1bGF0aW9ucyBhcmUgY29uc2lzdGVudCB3aXRoIGBzdHJ1Y3QgdHhfYnVmYCYjMzk7cyBhbGlnbm1lbnQgYW5kIHBhZGRpbmcgcmVxdWlyZW1lbnRzLCBob3dldmVyLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBzdHJ1Y3R1cmUgY2xvc2VseS4gVGhpcyBwYXRjaCBhcHBlYXJzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc1Olx0XG4gIDc2Olx0I2RlZmluZSBISUZfVVNCX01BWF9SWFBJUEVTIDJcbiAgNzc6XHQjZGVmaW5lIEhJRl9VU0JfTUFYX1RYUElQRVMgNFxuICA3ODpcdFxuICA3OTpcdHN0cnVjdCB0eF9idWYge1xuICA4MDpcdFx0dTE2IGxlbjtcbiAgODE6XHRcdHUxNiBvZmZzZXQ7XG4gIDgyOlx0XHRzdHJ1Y3QgdXJiICp1cmI7XG4gIDgzOlx0XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9xdWV1ZTtcbiAgODQ6XHRcdHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldjtcbiAgODU6XHRcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiAgODY6XHRcdHU4IGJ1ZltdO1xuICA4NzpcdH07XG4gIDg4Olx0XG4gIDg5Olx0c3RydWN0IHJ4X2J1ZiB7XG4gIDkwOlx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA5MTpcdFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xuICA5MjpcdH07XG4gIDkzOlx0XG4gIDk0Olx0I2RlZmluZSBISUZfVVNCX1RYX1NUT1AgIEJJVCgwKVxuICA5NTpcdCNkZWZpbmUgSElGX1VTQl9UWF9GTFVTSCBCSVQoMSlcbiAgOTY6XHRcbiAgOTc6XHRzdHJ1Y3QgaGlmX3VzYl90eCB7XG4gIDk4Olx0XHR1OCBmbGFncztcbiAgOTk6XHRcdHU4IHR4X2J1Zl9jbnQ7XG4gMTAwOlx0XHR1MTYgdHhfc2tiX2NudDtcbiAxMDE6XHRcdHN0cnVjdCBza19idWZmX2hlYWQgdHhfc2tiX3F1ZXVlO1xuIDEwMjpcdFx0c3RydWN0IGxpc3RfaGVhZCB0eF9idWY7XG4gMTAzOlx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X3BlbmRpbmc7XG4gMTA0Olx0XHRzcGlubG9ja190IHR4X2xvY2s7XG4gMTA1Olx0fTtcbiAxMDY6XHRcbiAxMDc6XHRzdHJ1Y3QgY21kX2J1ZiB7XG4gMTA4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIDEwOTpcdFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4MAoJCQkJCQkJb3V0cHV0OiAyNjkKCQkJCQkJCXRob3VnaHRzOiAxNzg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFVTQiBISUYgVFggQWdncmVnYXRpb24gYW5kIE1lbW9yeSBTYWZldHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgcGFkZGluZyB3aXRoaW4gdGhlIGB0eF9idWYtJmd0O2J1ZmAgd2hlbiBhZ2dyZWdhdGluZyBwYWNrZXRzIGluIHRoZSBgYXRoOWtgIFVTQiBISUYgVFggcGF0aC4gIEkmIzM5O20gdHJhY2tpbmcgdGhlIGJlaGF2aW9yIGFmdGVyIGByb3VuZF91cChuc2tiLSZndDtsZW4gJiM0MzsgNCwgNClgLiAgVGhlIHBvdGVudGlhbCBmb3IgcGFkZGluZyBpbnRyb2R1Y2VzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb246IElzIHRoaXMgcGFkZGluZyBpbml0aWFsaXplZD8gIFRoZSBidWZmZXIgaXRzZWxmLCBgdHhfYnVmYCwgaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NfZmxleGAuICpUaGF0JiMzOTtzIGdvb2QqLCBzbywgYXQgYWxsb2NhdGlvbiB0aGUgYnVmZmVyIGlzIHplcm9lZCBvdXQuIFRoZSBidWZmZXIgaXMgdGhlbiByZXVzZWQgYWZ0ZXIgYSB0cmFuc21pc3Npb24gdXNpbmcgYHR4X2J1Zi0mZ3Q7bGVuID0gdHhfYnVmLSZndDtvZmZzZXQgPSAwO2AsIGJ1dCBpdCBpcyAqbm90KiByZS16ZXJvZWQuICBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSBsZWFrIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiB0aGlzIHBhdGguCgpDcnVjaWFsbHksIHRoaXMgZGF0YSBpcyBzZW50IHRvIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IHZpYSBgdXNiX2ZpbGxfYnVsa191cmJgIHRvIHRoZSBVU0IgZGV2aWNlIChgVVNCX1dMQU5fVFhfUElQRWApLiBTbywgbXkgZmlyc3QgYXNzdW1wdGlvbiBpcyB0aGF0LCBzaW5jZSBpdCBpcyBnb2luZyB0byBoYXJkd2FyZSwgdGhpcyBpc24mIzM5O3QgYSBkaXJlY3QgdXNlci1zcGFjZSBleHBvc3VyZS4gSG93ZXZlciwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGluZm9ybWF0aW9uIGxlYWsgdG8gdGhlIFVTQiBkZXZpY2UuIEkgY2FuIGNvbmZpcm0gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCB1c2FnZSBkZXRhaWxzLCBhbmQgdGhlIHJlc2V0IG9mIHRoZSBgdHhfYnVmYCwgYW5kIGNhbiBjb25maXJtIHRoZSBidWZmZXIgZ29lcyB0byB0aGUgVVNCIGRldmljZS4KClRoYXQgbGVhZHMgbWUgdG8gY29uc2lkZXIgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKS4gRG9lcyBLTVNBTiBldmVuIGFwcGx5IGhlcmU/IExldCYjMzk7cyBjaGVjayB0aGUgY3JpdGVyaWEuIE15IGZpZWxkIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBLTVNBTiBpcyB0YXJnZXRlZCBhdCBtZW1vcnkgbGVha3MgdG8gdXNlciBzcGFjZS4gIEkgc2VlIGNyaXRlcmlhIGV4cGxpY2l0bHkgbGlzdGluZyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB2aWEgdGhpbmdzIGxpa2UgYGNvcHlfdG9fdXNlcmAsIGBwdXRfdXNlcmAsIGBuZXRsaW5rYCwgZXRjLiBJIGFsc28ga25vdyB0aGF0IEtNU0FOIGNoZWNrcyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIGFuZCBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuCgpTbywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgcGF0Y2ggaXRzZWxmIGFuZCB3aGF0IGl0IGZpeGVzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgd2hhdCB0aGUgY29kZSAqZGlkKiBwcmV2aW91c2x5LiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUgZGVxdWV1ZWQgdXAgdG8gYE1BWF9UWF9BR0dSX05VTWAgc2ticyB3aXRob3V0IGNoZWNraW5nIGFnZ3JlZ2F0aW9uIHNpemUuIFRoaXMgY291bGQgbGVhZCB0byBhIGhlYXAgYnVmZmVyIG92ZXJmbG93LiAgVGhlIHBhdGNoIG5vdyBjaGVja3MgZm9yIHRoYXQgb3ZlcmZsb3cgYW5kIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEl0IGFsc28gY29ycmVjdHMgY2FsY3VsYXRpb25zIG9mIGB0eF9idWYtJmd0O2xlbmAgYW5kIHRoZSBidWZmZXIgb2Zmc2V0LiBOb3cgdGhlIHBhdGNoIHByZXZlbnRzIG91dC1vZi1ib3VuZHMgd3JpdGVzIGludG8gYHR4X2J1Zi0mZ3Q7YnVmYCwgcHJldmVudGluZyBhIHBvc3NpYmxlIE5VTEwgZGVyZWZlcmVuY2UgYW5kIGhhbmRsZXMgYWdncmVnYXRpb24gYnVmZmVyIGxpbWl0cyBjb3JyZWN0bHkuCgpEb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlICphbnkqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzPyBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBhbGxvY2F0aW9uIHdpdGggYGt6YWxsb2NfZmxleGAsIHRoZSBpbml0aWFsaXphdGlvbi9yZXNldHRpbmcgb2YgYHR4X2J1Zi0mZ3Q7bGVuYCBhbmQgYHR4X2J1Zi0mZ3Q7b2Zmc2V0YCwgYW5kIHRoZSBjaGVja3MgZm9yIGBuc2tiYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbnNrYi0mZ3Q7bGVuYCBhbmQgYG5za2ItJmd0O2RhdGFgIHByZXZlbnRzIGludHJvZHVjaW5nIHRoaXMgaXNzdWUuIE5vIG5ldyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIHN0cnVjdCBmaWVsZHMgYXJlIHJlYWQgb3IgYnJhbmNoZWQgb24uIFRoZSBwYXRjaCYjMzk7cyBwcmltYXJ5IGZ1bmN0aW9uIGlzICoqYm91bmRzIGNoZWNraW5nIGFuZCBidWZmZXIgb3ZlcmZsb3cgcHJldmVudGlvbiBpbiB0aGUgYXRoOWsgVVNCIEhJRiBUWCBwYXRoKiouCgpUaGVyZWZvcmUsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgYW5kIHRoaXMgYXNzZXNzbWVudCwgdGhpcyBwYXRjaCAqZG9lcyBub3QqIGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTdGFuZGFyZCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBmdXp6aW5nIGlzICpwZXJmZWN0bHkgYWRlcXVhdGUqIHRvIGRldGVjdCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gbWFrZSBjZXJ0YWluIHRvIHN0YXRlIHRoYXQgZXhwbGljaXRseS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZSBjaGVjayB1c2luZyB0aGUgS01TQU4gY3JpdGVyaWEuCjEuICBJcyBhIGtlcm5lbCBzdHJ1Y3R1cmUgc2VudCB0byB1c2VyIHNwYWNlPyBObywgb25seSBVU0IgZGV2aWNlIChidWxrIG91dCB0cmFuc2ZlcikuCjIuICBJcyB0aGVyZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vLgozLiAgQXJlIHRoZXJlIGNvbXBsZXggc3RydWN0dXJlcyBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgd2l0aCB1bmluaXQgZmllbGRzPyBOby4KNC4gIERvIHRoZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgYWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/IE5vLiBgdHhfYnVmLSZndDtsZW5gIGNvbnRhaW5zIHRoZSBleGFjdCBieXRlIGNvdW50IG9mIHZhbGlkIGRhdGEsIGFuZCB0aGUgYnVmZmVyIChgYnVmYCkgd2FzIGBremFsbG9jYCYjMzk7ZCBpbml0aWFsbHkuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBgZmFsc2VgLiBJJiMzOTttIGdvaW5nIHRvIGRvY3VtZW50IHRoaXMgaW4gbXkgcmVhc29uaW5nIHdoZW4gY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOIGFwcGxpY2FiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAwOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlciYjMzk7cyBUWCBhZ2dyZWdhdGlvbiBwYXRoIChgX19oaWZfdXNiX3R4YCkgYnkgY2hlY2tpbmcgdGhhdCB0aGUgYWdncmVnYXRlZCBwYWNrZXQgc2l6ZSAoYHR4X2J1Zi1cdTAwM2VvZmZzZXQgJiM0MzsgbnNrYi1cdTAwM2VsZW4gJiM0MzsgNGApIGRvZXMgbm90IGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgYW5kIHVwZGF0aW5nIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxuXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXG4tIEtNU0FOIGFwcGxpY2FiaWxpdHk6IE5vIGtlcm5lbCBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBzdHJ1Y3QgZmllbGRzIGFyZSBpbnRyb2R1Y2VkIG9yIHJlYWQsIGFuZCBhbGwgYnVmZmVyIG1lbW9yeSAoYHR4X2J1ZmApIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBga3phbGxvY19mbGV4YC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHJpc2tzLlxuXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6MTkuNjc0MDg4MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDc1ODUzMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCIsXG4gICAgXCJXTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oaWZfdXNiX3R4XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiLFxuICAgIFwiaGlmX3VzYl90eF9jYlwiLFxuICAgIFwiYXRoOWtfaHRjX3R4X3N0YXJ0XCIsXG4gICAgXCJhdGg5a19odGNfdHhfZGF0YVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgYWdncmVnYXRpb24gYm91bmRhcnkgY2hlY2tzLCBxdWV1ZSBoYW5kbGluZywgYW5kIGJ1ZmZlciBsZW5ndGgvb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbiBfX2hpZl91c2JfdHggZm9yIHRoZSBhdGg5a19odGMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXR3b3JrIHBhY2tldCB0cmFuc21pc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDoxOS42NzQxMDEzMjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njk0NTUzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDAwOjMwOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xcbkBAIC0xNCw2ICsxNCw3IEBAXFxuICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXFxuICAqL1xcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21hdGguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaHRjLmhcXFwiXFxuIFxcbkBAIC0zMjgsMTEgKzMyOSwxNCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuIFxcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQsIE1BWF9UWF9BR0dSX05VTSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdHhfc2tiX2NudDsgaSsrKSB7XFxuLVxcdFxcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbitcXHRcXHRuc2tiID0gc2tiX3BlZWsoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuK1xcdFxcdGlmICghbnNrYilcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcbi1cXHRcXHQvKiBTaG91bGQgbmV2ZXIgYmUgTlVMTCAqL1xcbi1cXHRcXHRCVUdfT04oIW5za2IpO1xcbitcXHRcXHRpZiAodHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0IFxcdTAwM2UgTUFYX1RYX0JVRl9TSVpFKVxcbitcXHRcXHRcXHRicmVhaztcXG4gXFxuK1xcdFxcdG5za2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiBcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIFxcbiBcXHRcXHRidWYgPSB0eF9idWYtXFx1MDAzZWJ1ZjtcXG5AQCAtMzQyLDEzICszNDYsOCBAQCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuIFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KEFUSF9VU0JfVFhfU1RSRUFNX01PREVfVEFHKTtcXG4gXFx0XFx0YnVmICs9IDQ7XFxuIFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuLVxcdFxcdHR4X2J1Zi1cXHUwMDNlbGVuID0gbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4tXFxuLVxcdFxcdGlmIChpIFxcdTAwM2MgKHR4X3NrYl9jbnQgLSAxKSlcXG4tXFx0XFx0XFx0dHhfYnVmLVxcdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVxcdTAwM2VsZW4gLSAxKSAvIDQpICsgMSkgKiA0O1xcbi1cXG4tXFx0XFx0aWYgKGkgPT0gKHR4X3NrYl9jbnQgLSAxKSlcXG4tXFx0XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gKz0gdHhfYnVmLVxcdTAwM2VvZmZzZXQ7XFxuK1xcdFxcdHR4X2J1Zi1cXHUwMDNlbGVuID0gdHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0O1xcbitcXHRcXHR0eF9idWYtXFx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVxcdTAwM2VsZW4gKyA0LCA0KTtcXG4gXFxuIFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlLCBuc2tiKTtcXG4gXFx0XFx0VFhfU1RBVF9JTkMoaGlmX2Rldiwgc2tiX3F1ZXVlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjIxLjE0NDI0NjMxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODA1OTUwMTI0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIixcbiAgICBcIldMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hpZl91c2JfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZF90eFwiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCIsXG4gICAgXCJoaWZfdXNiX3R4X2NiXCIsXG4gICAgXCJhdGg5a19odGNfdHhfc3RhcnRcIixcbiAgICBcImF0aDlrX2h0Y190eF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDA6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFwiaHRjLmhcIlxuIFxuQEAgLTMyOCwxMSArMzI5LDE0IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xuLVx0XHRuc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdG5za2IgPSBza2JfcGVlayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdGlmICghbnNrYilcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0LyogU2hvdWxkIG5ldmVyIGJlIE5VTEwgKi9cbi1cdFx0QlVHX09OKCFuc2tiKTtcbitcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQgXHUwMDNlIE1BWF9UWF9CVUZfU0laRSlcbitcdFx0XHRicmVhaztcbiBcbitcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgKzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdFx0KmhkcisrID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgKz0gNDtcbiBcdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG4tXHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSBuc2tiLVx1MDAzZWxlbiArIDQ7XG4tXG4tXHRcdGlmIChpIFx1MDAzYyAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgKyAxKSAqIDQ7XG4tXG4tXHRcdGlmIChpID09ICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZWxlbiArPSB0eF9idWYtXHUwMDNlb2Zmc2V0O1xuK1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCArIG5za2ItXHUwMDNlbGVuICsgNDtcbitcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpO1xuIFxuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIG5za2IpO1xuIFx0XHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjIxLjE0NDI0NzQ4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxNzcyOTk3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2hpZl91c2JfdHhgIGZ1bmN0aW9uLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGJlY2F1c2UgYGhpZl91c2IuY2AgaXMgdXNlZCBieSBgYXRoOWtfaHRjYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhdHRhY2sgc3VyZmFjZS4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbj8gQ2FuIEkgaGl0IGl0IHVzaW5nIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciwgYSBVU0IgZ2FkZ2V0IHNldHVwLCBtYXliZSByYXctZ2FkZ2V0LCB2aGNpLCBvciBzb21lIG90aGVyIGVtdWxhdGlvbj8gSXMgYGF0aDlrX2h0Y2AgZXZlbiAqZGVzaWduZWQqIHRvIGJlIGEgVVNCIHdpcmVsZXNzIGRyaXZlcj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGlzIG1vZHVsZSBhbmQgVVNCLiBUaGUgbmV4dCBzdGVwLCB0aGVuLCBpcyB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgS2NvbmZpZyBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBgYXRoOWtfaHRjYCBpcyBjb25maWd1cmVkIOKAkyB3aGF0IG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uIGFuZCBvcGVyYXRpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjI4LjMyMTU0OTYyMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTkzMTU3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5MC1cXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0yMDY9Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVMQVlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgKz0gaHRjX2Rydl9kZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM9MzM5MD1zdGF0aWMgYm9vbCBhdGg5a19od19hcjkzMDBfZmlsbF9lZXByb20oc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYzozNDAxOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BVEg5S19IVENfREVCVUdGUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjMzPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19za2JfcXVldWVfY29tcGxldGUoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzktXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHF1ZXVlKSkgIT0gTlVMTCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQwOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MS1cXHRcXHRpbnQgbG4gPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc1PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzk4LVxcdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24ndCB1c2UgdGhlIFRYIGJ1ZmZlciBwb29sICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTk6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX01HTVQpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMS1cXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDY6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDgtXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00ODY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX2luZGV4KHN0cnVjdCBza19idWZmICpza2IsIHU4IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDkyOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5My1cXHQgICAgKHR4X2N0bC1cXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTU2PWVudW0gaHRjX29wbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX0FNUERVICAxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX01HTVQgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JUU0NUUyAgICAgICAweDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVxcdHU4IHRpZG5vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3ODpcXHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVxcdHU4IGtleV90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNDk9c3RydWN0IGF0aDlrX3ZpZl9pdGVyX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU0OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9TVEEgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXFx0dTggaW5kZXg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcXHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2Ny1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg5OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JFU0VSVkUgMTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMxMjpcXHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXFx0dTggZXBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI5LSNkZWZpbmUgX19TVEFUX1NBRkUoaGlmX2RldiwgZXhwcilcXHRkbyB7ICgoaGlmX2RldiktXFx1MDAzZWh0Y19oYW5kbGUtXFx1MDAzZWRydl9wcml2ID8gKGV4cHIpIDogMCk7IH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKmJzbG90W0FUSDlLX0hUQ19NQVhfQkNOX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cXHR1MzIgYm1pc3NjbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDc4LVxcdHU4IHN0YV9zbG90O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XFx0dTggdmlmX3N0YV9wb3NbQVRIOUtfSFRDX01BWF9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXFx0dTggbnVtX2lic3NfdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NTM2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVxcdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1ZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0MzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjUxOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTExPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoxMTc6XFx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVxcdGF0aDlrX2h0Y19iZWFjb25faW5pdChwcml2LCBjb25mLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXFx0dHhfY3RsLVxcdTAwM2VlcGlkID0gcHJpdi1cXHUwMDNlYmVhY29uX2VwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzYtXFx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFxcdTAwM2VcXHUwMDNlIDMyLCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcXHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3ODpcXHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2ViZWFjb25fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XFx0dHNmYWRqdXN0ID0gY3VyX2NvbmYtXFx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgyLVxcdGF2cC1cXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzMtXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0OlxcdFxcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0OlxcdFdBUk5fT04oaSAhPSBBVEg5S19IVENfU1NUQVRTX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2NzQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXFx0XFx0cHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODQ9dm9pZCBhdGg5a19odGNfcmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjIzNDpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcXHRpZiAoKHByaXYtXFx1MDAzZW52aWZzIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTk6XFx0ICAgIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjYtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcXHRpZiAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4MS1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDgyOlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0OlxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz05MDc9c3RhdGljIGludCBhdGg5a19odGNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2MTpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Ni1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVxcdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxNjg5OlxcdFxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4NzQ9c3RydWN0IGllZWU4MDIxMV9vcHMgYXRoOWtfaHRjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxOTA3OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVxcdFxcdHFpLnRxaV9zdWJ0eXBlID0gc3VidHlwZV90eHFfdG9faHdxW3N1YnR5cGVdO1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXFx0cHJpdi1cXHUwMDNldHgucXVldWVkX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XFx0ICAgICEocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXFx0XFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OD12b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzE6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2MgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI6XFx0ICAgIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzQtXFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTItXFx0aWYgKHR4X2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9BTVBEVSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcnRzX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlxcdFxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE1LVxcdC8qIENUUy10by1zZWxmICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcXHRpZiAoIShmbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cXHQgICAgKHZpZiBcXHUwMDI2XFx1MDAyNiB2aWYtXFx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxODpcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcXHRpZiAoKHRpZCBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcXHUwMDI2XFx1MDAyNiAoaXN0YS1cXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NDQ1PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9wcm9jZXNzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ3OTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQUNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVxcdHJhdGUtXFx1MDAzZWNvdW50ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlxcdHJhdGUtXFx1MDAzZWlkeCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTQ6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTc6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTAwLVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Mzk9dm9pZCBhdGg5a19odGNfdHhfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NDQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NzQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nzg9dm9pZCBhdGg5a190eF9mYWlsZWRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVxcdHNwaW5fbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU4MzpcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcXHR1OCBlcGlkID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNC1cXHRcXHQgICAgICAgdHhfY3RsLVxcdTAwM2V0aW1lc3RhbXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjU6XFx0XFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjYtXFx0XFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFxcXCJEcm9wcGluZyBhIHBhY2tldCBkdWUgdG8gVFggdGltZW91dFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVxcdFxcdFxcdFxcdGV2ZW50LVxcdTAwM2V0eHMuY29va2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XFx0XFx0XFx0XFx0TVMoZXZlbnQtXFx1MDAzZXR4cy50c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1OlxcdFxcdGlmICgrK2V2ZW50LVxcdTAwM2Vjb3VudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmV2ZW50LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MDY6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzQtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgzNTpcXHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTYtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg1NzpcXHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfUlhCVUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVxcdFxcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMzg9dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUzOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTICAgIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU2OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9TR0kgICAgICAgIEJJVCg1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjI4LjM3NzQ4ODc0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDQxMDg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgQXRoZXJvcyBhdGg5ayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkLiBUaGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSwgbmF0dXJhbGx5LCBpcyB0aGUgYEtjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBjYW4gZXhwZWN0IHRvIGZpbmQgdGhlIGNvbXBsZXRlIGRlZmluaXRpb25zIG9mIGFsbCB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIsIGFsb25nIHdpdGggYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgcGxhdGZvcm0gY29tcG9uZW50cy4gVGhpcyBpcyB0aGUgc29saWQgZm91bmRhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBidWlsdCBhbmQgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjI1MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjMwLjg4MTYwMDA2OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbiAyMDc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAyMDg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVMQVlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6MzAuODgxNjcwODM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAyMzc5MTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaUZpIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgdGhlIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFVTQiBIaWdoLUxldmVsIEludGVyZmFjZSAoYGhpZl91c2IuY2ApLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IHdpdGggdGhlIGNvcmUgb2YgdGhlIHRyYW5zbWl0IHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIGFjdHVhbGx5IHNlbnQgb3ZlciB0aGUgVVNCIGJ1cy5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhpcyBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gZm9sbG93IGl0LCBvZiBjb3Vyc2UsIHRvIHNlZSB3aGljaCBjYWxscyBhcmUgYWZmZWN0ZWQgYnkgdGhlIGNoYW5nZXMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBjb21wbGV0ZWx5IG5ldyBpbXBsZW1lbnRhdGlvbj8gT3IgaXMgaXQgYSB0d2VhayB0byBhbiBleGlzdGluZyBwcm9jZXNzPyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgaW5wdXQgcGFyYW1ldGVycywgd2hhdCdzIGhhcHBlbmluZyBpbnNpZGUsIGFuZCBpdHMgb3ZlcmFsbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlIFVTQiBkcml2ZXIgYW5kIHBvdGVudGlhbGx5IHRoZSBoaWdoZXItbGV2ZWwgbmV0d29ya2luZyBzdGFjay4gVW5kZXJzdGFuZGluZyBhbGwgb2YgaXRzIGNhbGxlcnMgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCB0byBkZXRlcm1pbmluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSBlYXNpZXIgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgY2hhbmdlIGlmIEkga25vdyB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIGluIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTExLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDozMy45MDU0NjUxMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4MjI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2hpZl91c2JfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTY4PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjcwOnN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDItXFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzAzOlxcdFxcdF9faGlmX3VzYl90eChoaWZfZGV2KTsgLyogQ2hlY2sgZm9yIHBlbmRpbmcgU0tCcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzA0LVxcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIGJ1Zl9jb21wbGV0ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMDgtLyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMwOTpzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzU9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTQtXFx0ICAgIChoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250IFxcdTAwM2MgMikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNTpcXHRcXHRfX2hpZl91c2JfdHgoaGlmX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDozMy45NTE0NTI2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgzMTE3OTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYSBuZXR3b3JraW5nIGV4cGVydCBmYW1pbGlhciB3aXRoIHRoZSBBdGhlcm9zIGF0aDlrIGRyaXZlcjpcblxuKipEaXZpbmcgaW50byB0aGUgYXRoOWsgVVNCIEhJRiBNb2R1bGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBVU0IgSG9zdCBJbnRlcmZhY2UgKEhJRikgcG9ydGlvbiBvZiB0aGUgYGF0aDlrYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gSSdtIHpvbmluZyBpbiBvbiBsaW5lcyAzMDAgdGhyb3VnaCAzODAuIFRoYXQgcmFuZ2UgdXN1YWxseSBlbmNvbXBhc3NlcyBhIGNyaXRpY2FsIHNlY3Rpb24sIGEgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgYW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIGNvcmUgZnVuY3Rpb24gcmVsYXRlZCB0byBVU0IgY29tbXVuaWNhdGlvbiBoYW5kbGluZywgdGhlIEhJRiBsYXllciwgb3IgbWF5YmUgZXZlbiBlcnJvciBoYW5kbGluZyBmb3IgVVNCIHRyYW5zZmVycy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgc3BlY2lmaWMgY2h1bmsgb2YgdGhlIGNvZGUuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNDMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMDo0NC43ODI2MzU1MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbiAzMDE6XFx0XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbiAzMDI6XFx0XFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbiAzMDM6XFx0XFx0XFx0X19oaWZfdXNiX3R4KGhpZl9kZXYpOyAvKiBDaGVjayBmb3IgcGVuZGluZyBTS0JzICovXFxuIDMwNDpcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBidWZfY29tcGxldGVkKTtcXG4gMzA1OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMzA2OlxcdH1cXG4gMzA3OlxcdFxcbiAzMDg6XFx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG4gMzA5OlxcdHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XFxuIDMxMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuIDMxMzpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMzE0OlxcdFxcdHUxNiB0eF9za2JfY250ID0gMDtcXG4gMzE1OlxcdFxcdHU4ICpidWY7XFxuIDMxNjpcXHRcXHRfX2xlMTYgKmhkcjtcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgPT0gMClcXG4gMzE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbiAzMjI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1ZikpXFxuIDMyMzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzI0OlxcdFxcbiAzMjU6XFx0XFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcXG4gMzI2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4gMzI3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG4gMzI4OlxcdFxcbiAzMjk6XFx0XFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xcbiAzMzI6XFx0XFx0XFx0bnNrYiA9IHNrYl9wZWVrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiAzMzM6XFx0XFx0XFx0aWYgKCFuc2tiKVxcbiAzMzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuIDMzNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzM4OlxcdFxcbiAzMzk6XFx0XFx0XFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuIDM0MDpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdFxcdGJ1ZiA9IHR4X2J1Zi1cXHUwMDNlYnVmO1xcbiAzNDM6XFx0XFx0XFx0YnVmICs9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0O1xcbiAzNDQ6XFx0XFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4gMzQ1OlxcdFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KG5za2ItXFx1MDAzZWxlbik7XFxuIDM0NjpcXHRcXHRcXHQqaGRyKysgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7XFxuIDM0NzpcXHRcXHRcXHRidWYgKz0gNDtcXG4gMzQ4OlxcdFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuIDM0OTpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICsgbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4gMzUwOlxcdFxcdFxcdHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICs9IHJvdW5kX3VwKG5za2ItXFx1MDAzZWxlbiArIDQsIDQpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XFxuIDM1MzpcXHRcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcXG4gMzU0OlxcdFxcdH1cXG4gMzU1OlxcdFxcbiAzNTY6XFx0XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDM1NzpcXHRcXHRcXHRcXHQgIHVzYl9zbmRidWxrcGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcXG4gMzU4OlxcdFxcdFxcdFxcdCAgdHhfYnVmLVxcdTAwM2VidWYsIHR4X2J1Zi1cXHUwMDNlbGVuLFxcbiAzNTk6XFx0XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRcXHRyZXQgPSB1c2Jfc3VibWl0X3VyYih0eF9idWYtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XFxuIDM2MjpcXHRcXHRpZiAocmV0KSB7XFxuIDM2MzpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG4gMzY0OlxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcXG4gMzY1OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAzNjY6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuIDM2NzpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9idWZfY250Kys7XFxuIDM2ODpcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdHJldHVybiByZXQ7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7XFxuIDM3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAzNzk6XFx0XFx0aW50IHJldCA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjQ0Ljc4Mjc3NjkwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDUzMTMxNDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDlrX2h0YyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSBgYXRoOWtfaHRjYCB3aXRoIHJlc3BlY3QgdG8gVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgVVNCIGVtdWxhdGlvbiAobGlrZSBzeXprYWxsZXIncyBgcmF3X2dhZGdldGAgb3IgdGhlIGBkdW1teV9oY2RgKS4gRG9lcyB0aGlzIGRyaXZlciBuZWVkIGZpcm13YXJlIGxvYWRpbmcgb3IgYW55dGhpbmcgZWxzZSB0aGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhlIHByb2Nlc3M/IFRoYW5rZnVsbHksIHN5emthbGxlciBoYXMgZXhwZXJpZW5jZSB3aXRoIFVTQiBmdXp6aW5nIGZvciBXaUZpIGRldmljZXMsIGluY2x1ZGluZyB0aGlzIG9uZSwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoYXQgYGF0aDlrX2h0Y2AgaXMgZXZlbiByZWFjaGFibGUuIEdvdHRhIGtlZXAgdGhhdCBcInJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlXCIgY29uY2VwdCBpbiBtaW5kLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzIChzZWN0aW9ucyAxLCAyLCAzKSwgSSdtIHJlbWluZGVkIHRoYXQgZnV6emluZydzIHNjb3BlIGlzIGNvbmZpbmVkIHRvIGNvZGUgZXhlY3V0aW5nIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpbmNsdWRlcyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzLCBhbmQgdGhhdOKAmXMgbG9va2luZyBwcm9taXNpbmcgZm9yIFVTQiBnYWRnZXQgc2V0dXBzLCBuZXRkZXYsIHR1bi90YXAsIGV0Yy4gRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzIGFyZSB0aGUgb25lcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiBBbHNvLCBhIHF1aWNrIG5vdGUsIEknbSB0aGlua2luZyBvZiB3aGV0aGVyIEkgY2FuIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGF0IGFueSBzdGFnZS4gSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBJICpvbmx5KiByZXR1cm4gYGZhbHNlYCBpZiB0aGUgY29kZSBpbiBxdWVzdGlvbiBpczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMsIG9yIGNvZGUgZXhjbHVzaXZlIHRvIG90aGVyIGFyY2hpdGVjdHVyZXMuXG5cbkFscmlnaHQsIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciEgUGVyZmVjdC4gVVNCIGRyaXZlcnMgYXJlIGluaGVyZW50bHkgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBsaWtlIHRoZSBzZXR1cCBzeXprYWxsZXIgdXNlcy4gU28sIHRoYXQncyBhbHJlYWR5IGEgc2lnbmlmaWNhbnQgcG9zaXRpdmUgZmFjdG9yLlxuXG5Ob3csIGxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIGFkZHJlc3NpbmcgYWdncmVnYXRpb24gYW5kIGJ1ZmZlciBvZmZzZXQgaGFuZGxpbmcgd2l0aGluIHRoZSBgX19oaWZfdXNiX3R4YCBmdW5jdGlvbi4gQSBidWZmZXIgb3ZlcmZsb3cgaXMgYmVpbmcgcHJldmVudGVkOyB0aGUgZml4IGhhbmRsZXMgdGhlIGB0eF9idWYtXHUwMDNlb2Zmc2V0ICsgbnNrYi1cdTAwM2VsZW4gKyA0IFx1MDAzZSBNQVhfVFhfQlVGX1NJWkVgIGJvdW5kYXJ5IGNvbmRpdGlvbiwgYXMgd2VsbCBhcyBsZW4vb2Zmc2V0IGNhbGN1bGF0aW9uLlxuXG5OZXh0IHN0ZXA6IEkgbmVlZCB0byBhbmFseXplIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgaW1wYWN0ZWQgYW5kIHRyYWNlIHRoZWlyIGNhbGwgY2hhaW5zLiBMZXQncyBsb29rIGF0IGBfX2hpZl91c2JfdHhgLCBgaGlmX3VzYl9zZW5kX3R4YCwgYW5kIGBoaWZfdXNiX3R4X2NiYC4gSG9sZCBvbiwgYF9faGlmX3VzYl90eGAgaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3Mgc3RhdGljIGFuZCAqbm90KiBpbmxpbmVkIG9yLCB3ZWxsLCBpbmxpbmVkLiBJIHdpbGwgbmVlZCB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgX19oaWZfdXNiX3R4YCB3aXRoaW4gYGhpZl91c2IuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzkzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6NTIuODM1OTEwODY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkxNzc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoaWZfdXNiX3NlbmRfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz03Mj1zdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTAwOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMDEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTEzNj1zdGF0aWMgdm9pZCBoaWZfdXNiX21nbXRfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxODI6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfbWdtdChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xODMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zMDk9c3RhdGljIGludCBfX2hpZl91c2JfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzU6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAwLVxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ2ND1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzAtXFx0Y2FzZSBVU0JfV0xBTl9UWF9QSVBFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDcxOlxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF90eChoaWZfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDcyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDczLVxcdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3NDpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjUyLjg4MzgzMzk3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDAxNDMzMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBoaWZfdXNiX3NlbmRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgYGhpZl91c2Jfc2VuZGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93OiBJcyBpdCBjYWxsZWQgZGlyZWN0bHkgYnkgb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHNvbWV3aGVyZT8gSWYgaXQncyBhIGNhbGxiYWNrLCB3aGVyZSBpcyBpdCByZWdpc3RlcmVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zIGlzIGl0IHRyaWdnZXJlZD8gS25vd2luZyB0aGUgY2FsbGluZyBjb252ZW50aW9ucyBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludHMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGhvdyB0aGlzIFVTQiBzZW5kIG9wZXJhdGlvbiBpcyBpbml0aWF0ZWQuIFRoZSB0cmFjZSB3aWxsIHByb3ZpZGUgdmFsdWFibGUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODYxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzA6NTYuODg1MjY5MzU0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIyODcyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoaWZfdXNiX3NlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcyPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMDA6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEwMS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTM2PXN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE4MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9tZ210KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTE4My1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTMwOT1zdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM3NTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDAtXFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDM1PXN0YXRpYyB2b2lkIGhpZl91c2Jfc3RvcCh2b2lkICpoaWZfaGFuZGxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NjQ6c3RhdGljIGludCBoaWZfdXNiX3NlbmQodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MC1cXHRjYXNlIFVTQl9XTEFOX1RYX1BJUEU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NzE6XFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX3R4KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NzMtXFx0Y2FzZSBVU0JfUkVHX09VVF9QSVBFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDc0OlxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9yZWdvdXQoaGlmX2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTIwPXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MjktXFx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTMwOlxcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTMxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMwOjU2Ljk0MTUwMTExNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTA4NDkwMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyB0aGUgSElGIFNlbmQgUGF0aCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHByb2JsZW0gZGVzY3JpcHRpb24sIGlzIHRoYXQgd2UgaGF2ZSBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIHRoZSBISUYgdHJhbnNtaXNzaW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGhpZi1cdTAwM2VzZW5kYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIGFuZCB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IGNhbGwuIEEgbGlrZWx5IGN1bHByaXQgd291bGQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIGNvbW11bmljYXRpb24gaXRzZWxmLlxuXG5UaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIGNoZWNrIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSwgYW5kIEknbGwgc3RhcnQgd2l0aCBgaHRjX2Rydl90eHJ4LmNgLiBUaGF0IGZpbGUgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgc291bmRzIGxpa2UgaXQgbWF5IGRlYWwgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gYXNwZWN0cyBvZiB0aGUgSFRDIGRyaXZlciAob3Igd2hhdGV2ZXIgc3lzdGVtIGlzIGJlaW5nIHVzZWQpLiBJJ2xsIGFsc28gYmUgbWluZGZ1bCB0aGF0IEkgbWlnaHQgbmVlZCB0byBmb2xsb3cgdGhlIGNhbGxpbmcgcGF0aCBvZiBgaGlmLVx1MDAzZXNlbmRgLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBoaWYtXHUwMDNlc2VuZGAgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0J3MgYmVpbmcgdXNlZC4gSSB3aWxsIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgZXJyb3JzIGluIGRhdGEgcHJlcGFyYXRpb24sIGJ1ZmZlciBtYW5hZ2VtZW50LCBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE0NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjAyLjg0OTk5MzI0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMDI0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VzZW5kXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTIxPXN0YXRpYyBpbnQgaHRjX2lzc3VlX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYqIHNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozNTpcXHRzdGF0dXMgPSB0YXJnZXQtXFx1MDAzZWhpZi1cXHUwMDNlc2VuZCh0YXJnZXQtXFx1MDAzZWhpZl9kZXYsIGVuZHBvaW50LVxcdTAwM2V1bF9waXBlaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MDIuOTAyMTAwODY0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMjQyNzY1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYGh0Y19pc3N1ZV9zZW5kYCBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBJJ20gdGhpbmtpbmcsIGxldCdzIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIHRoZSBjYWxsZXJzIG9mIGBodGNfaXNzdWVfc2VuZGAuIEl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgbm8gZG91YnQsIGFuZCB1bmRlcnN0YW5kaW5nIHdoZXJlIGl0J3MgYmVpbmcgaW52b2tlZCBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwIGluIHdoYXRldmVyIHByb2JsZW0gSSdtIHRyeWluZyB0byBhZGRyZXNzLCBiZSBpdCBwZXJmb3JtYW5jZSwgYSBidWcsIG9yIGp1c3QgdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJ3MgaW50ZXJhY3Rpb24uIEdvdHRhIHRyYWNlIHRoZSBkYXRhIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggYGh0Y19pc3N1ZV9zZW5kYCBvcGVyYXRlcy4gVGhpcyBpbml0aWFsIGludmVzdGlnYXRpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBhIG1vcmUgdGFyZ2V0ZWQgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MDcuMDI2MzgwNTk5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI4ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodGNfaXNzdWVfc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyMTpzdGF0aWMgaW50IGh0Y19pc3N1ZV9zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmKiBza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMi1cXHRcXHRcXHQgIHUxNiBsZW4sIHU4IGZsYWdzLCB1OCBlcGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz0xNTQ9c3RhdGljIGludCBodGNfY29uZmlnX3BpcGVfY3JlZGl0cyhzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0xNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoxNzY6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTE5Mj1zdGF0aWMgaW50IGh0Y19zZXR1cF9jb21wbGV0ZShzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyMTE6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTI0MT1pbnQgaHRjX2Nvbm5lY3Rfc2VydmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0yODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzoyODY6XFx0cmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCBFTkRQT0lOVDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMjg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTMwNz1pbnQgaHRjX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzExLVxcdHR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjMxMjpcXHRyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi1cXHUwMDNlbGVuLCAwLCB0eF9jdGwtXFx1MDAzZWVwaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzEzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MzE1PWludCBodGNfc2VuZF9lcGlkKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTMxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzozMTg6XFx0cmV0dXJuIGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItXFx1MDAzZWxlbiwgMCwgZXBpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy0zMTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTowNy4wNzA2NzIyNjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjczMTExMTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBBVEg5S19IVEMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9mIGBBVEg5S19IVENgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZSwgc28gSSdsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBSaWdodCwgaGVyZSBpdCBpczogYGNvbmZpZyBBVEg5S19IVENgIGlzIGEgdHJpc3RhdGUgb3B0aW9uLCBtZWFuaW5nIGl0IGNhbiBiZSBlbmFibGVkIGFzIGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgZGlzYWJsZWQuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFyOiBpdCByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIEkgYWxzbyBzZWUgdGhhdCBpdCBzZWxlY3RzIGBNQUM4MDIxMV9MRURTYCB1bmRlciBjZXJ0YWluIExFRCBjbGFzcyBjb25kaXRpb25zIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBpY3R1cmUuXG5cbkJ1dCBJIGNhbid0IHN0b3AgaGVyZSwgSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgKmhpZ2hlci1sZXZlbCogZGVwZW5kZW5jaWVzIG9yIHBhcmVudCBtZW51cyB0aGF0IGltcGFjdCB0aGlzPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGBLY29uZmlnYCBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCDigJMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZGl0aW9ucywgbWVudXMsIG9yIGNvbnRleHQgdGhhdCBpbmZsdWVuY2VzIHRoZSBhdmFpbGFiaWxpdHkgb3IgYmVoYXZpb3Igb2YgYEFUSDlLX0hUQ2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgc3RydWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxMy44MDE3ODYwNzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDQyNjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MDc2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfQVRINUspXFx0XFx0Kz0gYXRoNWsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0FUSDlLX0hXKVxcdFxcdCs9IGF0aDlrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS00LW9iai0kKENPTkZJR19DQVJMOTE3MClcXHRcXHQrPSBjYXJsOTE3MC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNjpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0ODpjb25maWcgQVRIOUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBPRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUxLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MTpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc2OmNvbmZpZyBBVEg5S19UWDk5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIldha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzU6XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Mi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEFUSDlLX0hXXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc3OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5MDpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI9YXRoOWsteSArPVxcdGJlYWNvbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTI6YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IG1jaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgKz0gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTQ6YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNTphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTc6YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgKz0gdHg5OS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE4OmF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTk6YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICs9IHJuZy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMTphdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSArPSBkZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyMzphdGg5ay0kKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpICs9IGRlYnVnX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTI3PWF0aDlrX2h3LXk6PVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NDg6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfV09XKSArPSBhcjkwMDNfd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjUwOmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSArPSBidGNvZXgubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTUxLVxcdFxcdFxcdFxcdFxcdCAgIGFyOTAwM19tY2kubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU0OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU2OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0RZTkFDSykgKz0gZHluYWNrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19BVEg5S19IVykgKz0gYXRoOWtfaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjEtYXRoOWtfY29tbW9uLXk6PVxcdGNvbW1vbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjU6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgKz0gY29tbW9uLWRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjY6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgKz0gY29tbW9uLXNwZWN0cmFsLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYW5pX29mZG1fbGV2ZWxfZW50cnkgb2ZkbV9sZXZlbF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUyOiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTlVNX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTMtXFx0QVJSQVlfU0laRShvZmRtX2xldmVsX3RhYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NDojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU1OlxcdChBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwtMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTY6I2RlZmluZSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01Ny1cXHQzIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9jY2tfbGV2ZWxfZW50cnkgY2NrX2xldmVsX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjk4OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05OS1cXHRBUlJBWV9TSVpFKGNja19sZXZlbF90YWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAwOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDE6XFx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAzOlxcdChBVEg5S19BTklfQ0NLX05VTV9MRVZFTC0zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDQ6I2RlZmluZSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTEwNS1cXHQyIC8qIGRlZmF1bHQgbGV2ZWwgLSBtYXRjaGVzIHRoZSBJTkkgc2V0dGluZ3MgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0xNDk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X29mZG1fbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1OCBpbW11bml0eUxldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2MC1cXHRcXHRpbW11bml0eUxldmVsLCBCRUFDT05fUlNTSShhaCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MTpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfTE9XLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjI6XFx0XFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NDpcXHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcXHUwMDI2XFx1MDAyNiBpbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjU6XFx0XFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3NC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTc1OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3Ni1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X29mZG0tXFx1MDAzZXNwdXJfaW1tdW5pdHlfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4MC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTgxOlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Mi1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X29mZG0tXFx1MDAzZWZpcl9zdGVwX2xldmVsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODUtXFx0aWYgKGFoLVxcdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODY6XFx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfSElHSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTg3LVxcdFxcdHdlYWtfc2lnID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDItXFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCAhPSB3ZWFrX3NpZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjAzOlxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLCBBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwNC1cXHRcXHRcXHRcXHQgICAgIHdlYWtfc2lnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIwOTpcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXFx1MDAzZT0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTE6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMTItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEzOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTQ6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9vZmRtX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjIyOlxcdGlmIChhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNjIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIzLVxcdFxcdGF0aDlrX2h3X3NldF9vZmRtX25pbChhaCwgYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgKyAxLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjI5PXN0YXRpYyB2b2lkIGF0aDlrX2h3X3NldF9jY2tfbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1X2ludDhfdCBpbW11bml0eUxldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIzOC1cXHRcXHRhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsLCBpbW11bml0eUxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMzk6XFx0XFx0QkVBQ09OX1JTU0koYWgpLCBBVEg5S19BTklfUlNTSV9USFJfTE9XLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDA6XFx0XFx0QVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MjpcXHRpZiAoQVJfU1JFVl85MTAwKGFoKSBcXHUwMDI2XFx1MDAyNiBpbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MzpcXHRcXHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ1LVxcdGlmIChhaC1cXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ2OlxcdCAgICBCRUFDT05fUlNTSShhaCkgXFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0xPVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDc6XFx0ICAgIGltbXVuaXR5TGV2ZWwgXFx1MDAzZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQ4OlxcdFxcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI1OC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjU5OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2MC1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X2Njay1cXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2OC1cXHRcXHRhdGg5a19od19hbmlfY29udHJvbChhaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjY5OlxcdFxcdFxcdFxcdCAgICAgQVRIOUtfQU5JX01SQ19DQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI3MC1cXHRcXHRcXHRcXHQgICAgIGVudHJ5X2Njay1cXHUwMDNlbXJjX2Nja19vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjczPXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9jY2tfZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNzc6XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfQ0NLX01BWF9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjc4LVxcdFxcdGF0aDlrX2h3X3NldF9jY2tfbmlsKGFoLCBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICsgMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0zMDk9dm9pZCBhdGg5a19hbmlfcmVzZXQoc3RydWN0IGF0aF9odyAqYWgsIGJvb2wgaXNfc2Nhbm5pbmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMjI6XFx0b2ZkbV9uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzIzLVxcdFxcdFxcdCBhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyNDpcXHRjY2tfbmlsID0gbWF4X3QoaW50LCBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzI1LVxcdFxcdFxcdCBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMzYtXFx0XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsICE9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzNzpcXHRcXHQgICAgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzOC1cXHRcXHQgICAgYW5pU3RhdGUtXFx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCAhPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozMzk6XFx0XFx0ICAgIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0MC1cXHRcXHRcXHRhdGhfZGJnKGNvbW1vbiwgQU5JLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ4OlxcdFxcdFxcdG9mZG1fbmlsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDk6XFx0XFx0XFx0Y2NrX25pbCA9IEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNTAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTQ3Nz12b2lkIGF0aDlrX2h3X2FuaV9pbml0KHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4NC1cXHRpZiAoQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODU6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg2OlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODc6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5jY2tfdHJpZ19oaWdoID0gQVRIOUtfQU5JX0NDS19UUklHX0hJR0g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4ODpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2xvdyA9IEFUSDlLX0FOSV9DQ0tfVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTA6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MjpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MzpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2xvdyA9IEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NjpcXHRhbmktXFx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk3OlxcdGFuaS1cXHUwMDNlZmlyc3RlcExldmVsID0gQVRIOUtfQU5JX0ZJUlNURVBfTFZMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTgtXFx0YW5pLVxcdTAwM2VtcmNDQ0sgPSBBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpID8gdHJ1ZSA6IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMC1cXHRhbmktXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAxOlxcdGFuaS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwMjpcXHRhbmktXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MDctXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwODpcXHRhaC1cXHUwMDNlYW5pcGVyaW9kID0gQVRIOUtfQU5JX1BFUklPRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA5OlxcdGFoLVxcdTAwM2Vjb25maWcuYW5pX3BvbGxfaW50ZXJ2YWwgPSBBVEg5S19BTklfUE9MTElOVEVSVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjItLyogdW5pdHMgYXJlIGVycm9ycyBwZXIgc2Vjb25kICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjIzOiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIICAgICAgICAgICAzNTAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX0JFTE9XX0lOSSAxMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI1OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRCAgICAgICA1MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI3OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1cgICAgICAgICAgIDQwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyODojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX0FCT1ZFX0lOSSA5MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mjk6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQgICAgICAgMjAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMTojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIICAgICAgICAgICA2MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzI6I2RlZmluZSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSF9PTEQgICAgICAgMjAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMzOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPVyAgICAgICAgICAgIDMwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19MT1dfT0xEICAgICAgICAxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM2OiNkZWZpbmUgQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCAgICAgICAgIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzc6I2RlZmluZSBBVEg5S19BTklfRklSU1RFUF9MVkwgICAgICAgICAgICAgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzk6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfSElHSCAgICAgICAgICAgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDA6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfTE9XICAgICAgICAgICAgN1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC00MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDI6I2RlZmluZSBBVEg5S19BTklfUEVSSU9EICAgICAgICAgICAgICAgICAgMzAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC00NC0vKiBpbiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NTojZGVmaW5lIEFUSDlLX0FOSV9QT0xMSU5URVJWQUwgICAgICAgICAgICAxMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NzojZGVmaW5lIEFUSDlLX1NJR19GSVJTVEVQX1NFVFRJTkdfTUlOICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ4OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NQVggICAgIDIwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ5OiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUlOICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTA6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NQVggICAgMjJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg9NTQ9ZW51bSBhdGg5a19hbmlfY21kIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTU6XFx0QVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OID0gMHgxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NjpcXHRBVEg5S19BTklfRklSU1RFUF9MRVZFTCA9IDB4MixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTc6XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUwgPSAweDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU4OlxcdEFUSDlLX0FOSV9NUkNfQ0NLID0gMHg4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1OTpcXHRBVEg5S19BTklfQUxMID0gMHhmZmZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNjAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9OTUzPXN0YXRpYyBib29sIGFyNTAwOF9od19hbmlfY29udHJvbF9uZXcoc3RydWN0IGF0aF9odyAqYWgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2Mi1cXHRzd2l0Y2ggKGNtZCBcXHUwMDI2IGFoLVxcdTAwM2VhbmlfZnVuY3Rpb24pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjk2MzpcXHRjYXNlIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTjp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy05NjQtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0My1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDQ0OlxcdGNhc2UgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUw6e1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0NS1cXHRcXHR1MzIgbGV2ZWwgPSBwYXJhbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA1OC1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNTk6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2MC1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2Ni1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNjc6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2OC1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3Ny1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDc4OlxcdGNhc2UgQVRIOUtfQU5JX1NQVVJfSU1NVU5JVFlfTEVWRUw6e1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA3OS1cXHRcXHR1MzIgbGV2ZWwgPSBwYXJhbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5My1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwOTQ6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwOTUtXFx0XFx0XFx0XFx0dmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDEtXFx0XFx0XFx0XFx0bGV2ZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMTAyOlxcdFxcdFxcdFxcdEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTAzLVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMTEyLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMTM6XFx0Y2FzZSBBVEg5S19BTklfTVJDX0NDSzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTQtXFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9MTE2OT1zdGF0aWMgdm9pZCBhcjUwMDhfaHdfYW5pX2NhY2hlX2luaV9yZWdzKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjEzLVxcdC8qIHRoZXNlIGxldmVscyBqdXN0IGdvdCByZXNldCB0byBkZWZhdWx0cyBieSB0aGUgSU5JICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMjE0OlxcdGFuaVN0YXRlLVxcdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMjE1OlxcdGFuaVN0YXRlLVxcdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjE2LVxcdGFuaVN0YXRlLVxcdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMyPXN0YXRpYyBib29sIGFyOTAwMl9od19nZXRfaXNyKHN0cnVjdCBhdGhfaHcgKmFoLCBlbnVtIGF0aDlrX2ludCAqbWFza2VkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy02Ni1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9USU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2NzpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfVElNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjgtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfRFRJTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY5OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzAtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfRFRJTVNZTkMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3MTpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfRFRJTVNZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Mi1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IChBUl9JU1JfUzJfQ0FCRU5EKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjczOlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9DQUJFTkQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03NC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9HVFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3NTpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfR1RUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzYtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfQ1NUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzc6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0NTVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTc4LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX1RTRk9PUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc5OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9UU0ZPT1I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjgxOlxcdFxcdFxcdGlmICghKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgyLVxcdFxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSX1MyLCBpc3IyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo4NzpcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODgtXFx0XFx0XFx0aXNyID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9SQUMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk1OlxcdFxcdCptYXNrZWQgPSBpc3IgXFx1MDAyNiBBVEg5S19JTlRfQ09NTU9OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk4LVxcdFxcdFxcdCAgIEFSX0lTUl9SWE9LIHwgQVJfSVNSX1JYRVJSKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjk5OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1JYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDY6XFx0XFx0XFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVFg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDg6XFx0XFx0XFx0aWYgKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTA5LVxcdFxcdFxcdFxcdHMwX3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1MwX1MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNDA6XFx0XFx0aWYgKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTQxLVxcdFxcdFxcdHM1X3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1M1X1MoYWgpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTUyLVxcdFxcdGlmIChhaC1cXHUwMDNlaW50cl9nZW5fdGltZXJfdHJpZ2dlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1MzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9HRU5USU1FUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NS1cXHRcXHRpZiAoKHM1X3MgXFx1MDAyNiBBUl9JU1JfUzVfVElNX1RJTUVSKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU2OlxcdFxcdCAgICAhKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfQVVUT1NMRUVQKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1NzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9USU1fVElNRVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTk6XFx0XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTYwLVxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSX1M1LCBzNV9zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTY1OlxcdGlmICghKHBDYXAtXFx1MDAzZWh3X2NhcHMgXFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE2Ni1cXHRcXHRSRUdfV1JJVEUoYWgsIEFSX0lTUiwgaXNyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTg5LVxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5MDpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5Ni1cXHRcXHRcXHRSRUdfV1JJVEUoYWgsIEFSX1JDLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE5NzpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9GQVRBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTIxMj1hcjkwMDJfc2V0X3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsIHN0cnVjdCBhdGhfdHhfaW5mbyAqaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYxOlxcdGN0bDEgfD0gKGktXFx1MDAzZWtleWl4ICE9IEFUSDlLX1RYS0VZSVhfSU5WQUxJRCA/IFNNKGktXFx1MDAzZWtleWl4LCBBUl9EZXN0SWR4KSA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjItXFx0XFx0fCBTTShpLVxcdTAwM2V0eXBlLCBBUl9GcmFtZVR5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjM6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfTk9BQ0sgPyBBUl9Ob0FjayA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjQ6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfRVhUX09OTFkgPyBBUl9FeHRPbmx5IDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfQU5EX0NUTCA/IEFSX0V4dEFuZEN0bCA6IDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODItXFx0V1JJVEVfT05DRShhZHMtXFx1MDAzZWRzX2N0bDAsIChpLVxcdTAwM2Vwa3RfbGVuIFxcdTAwMjYgQVJfRnJhbWVMZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODM6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfVk1GID8gQVJfVmlydE1vcmVGcmFnIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4NC1cXHRcXHR8IFNNKGktXFx1MDAzZXR4cG93ZXJbMF0sIEFSX1htaXRQb3dlcjApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODU6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfVkVPTCA/IEFSX1ZFT0wgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg2OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0lOVFJFUSA/IEFSX1R4SW50clJlcSA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODc6XFx0XFx0fCAoaS1cXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gQVJfRGVzdElkeFZhbGlkIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4ODpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19DTFJETUFTSyA/IEFSX0NsckRlc3RNYXNrIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4OTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19SVFNFTkEgPyBBUl9SVFNFbmFibGUgOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjkwOlxcdFxcdCAgIChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19DVFNFTkEgPyBBUl9DVFNFbmFibGUgOiAwKSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYz0zMTY9c3RhdGljIGludCBhcjkwMDJfaHdfcHJvY190eGRlc2Moc3RydWN0IGF0aF9odyAqYWgsIHZvaWQgKmRzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzAtXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX1R4T3BFeGNlZWRlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjMzMTpcXHRcXHR0cy1cXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hUWE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzMyLVxcdHRzLVxcdTAwM2V0aWQgPSBNUyhzdGF0dXMsIEFSX1R4VGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQwLVxcdGlmIChzdGF0dXMgXFx1MDAyNiBBUl9UeEJhU3RhdHVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNDE6XFx0XFx0dHMtXFx1MDAzZXRzX2ZsYWdzIHw9IEFUSDlLX1RYX0JBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQyLVxcdFxcdHRzLVxcdTAwM2ViYV9sb3cgPSBhZHMtXFx1MDAzZUFSX0JhQml0bWFwTG93O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDctXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX0ZybVhtaXRPSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0ODpcXHRcXHR0cy1cXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYX0FDS0VEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQ5LVxcdGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzUwLVxcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiBBUl9FeGNlc3NpdmVSZXRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzUxOlxcdFxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhFUlJfWFJFVFJZO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxMy44NTU4MzMxODdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYzNjc2NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBsb2NhdGlvbiBmb3IgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbW9kdWxlIGRlcGVuZGVuY2llcywgZmVhdHVyZSB0b2dnbGVzLCBwbGF0Zm9ybS1zcGVjaWZpYyBzZXR0aW5ncywgYW5kIHBvdGVudGlhbGx5IHNvbWUgZGVmYXVsdCB2YWx1ZXMuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBidWlsdCwgYW5kIGhvdyB2YXJpb3VzIGZlYXR1cmVzIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZS4gSXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEl0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjAwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MTYuNDkyNjAyMzUyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIEFUSF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9BVEhcXG4gICA2OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1xcXCJcXG4gICA3OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxMjpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMzpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDE0OlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIHRoaXMgbW9kdWxlIHlvdSBjYW4gdmlzaXQ6XFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBGb3IgaW5mb3JtYXRpb24gb24gYWxsIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycyB2aXNpdDpcXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL0F0aGVyb3NcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0aWYgV0xBTl9WRU5ET1JfQVRIXFxuICAyNTpcXHRcXG4gIDI2OlxcdGNvbmZpZyBBVEhfREVCVUdcXG4gIDI3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3Mgd2lyZWxlc3MgZGVidWdnaW5nXFxcIlxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBTYXkgWSwgaWYgeW91IHdhbnQgdG8gZGVidWcgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxcbiAgMzA6XFx0XFx0ICBSaWdodCBub3cgb25seSBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcy5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xcbiAgMzM6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyB0cmFjaW5nXFxcIlxcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBBVEhfREVCVUdcXG4gIDM1OlxcdFxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRyYWNlcG9pbnRzIGZvciBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzODpcXHRcXHQgIEN1cnJlbnRseSwgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMgZmFjaWxpdHkuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MTYuNDkyNzYyMDEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzkyMzYyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgd2lyZWxlc3MgZHJpdmVycywgSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyBwb2ludCBvZiByZWZlcmVuY2UuIExldCBtZSBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGFuZCB6b29tIGluIG9uIGxpbmUgNDAgYW5kIGJleW9uZC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHNlZ21lbnQgb2YgdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIHdpbGwgYmUgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIGZvciB0aGUgdXNlciBvciBieSBkZWZhdWx0LCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGVzZSBvcHRpb25zIHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBmZWF0dXJlIHNldC4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBzZWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzM4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMToxOS45NzIwMDExNDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA0MzpcXHRcXHRkZWZhdWx0IG5cXG4gIDQ0OlxcdFxcdGhlbHBcXG4gIDQ1OlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcXG4gIDQ2OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XFxuICA0NzpcXHRcXHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuICA1MDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcXFwiXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4gIDUyOlxcdFxcdGRlZmF1bHQgblxcbiAgNTM6XFx0XFx0aGVscFxcbiAgNTQ6XFx0XFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcXG4gIDU1OlxcdFxcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXFxuICA1NjpcXHRcXG4gIDU3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWdcXFwiXFxuICA1ODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXFxcIlxcbiAgNTk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG4gIDYwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXFxcIlxcbiAgNjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuICA2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbiAgNjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjE5Ljk3MjA3MTU2MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjcwOTMwNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHByZXNlbnRlZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqTmV0d29yayBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBjb25maWd1cmluZyBhbiBBdGhlcm9zIFdMQU4gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIG9sZGVyLCBwb3NzaWJseSBIVEMtcmVsYXRlZCBoYXJkd2FyZS4gIEZpcnN0IHRoaW5nJ3MgZmlyc3Q6IGBDT05GSUdfV0xBTl9WRU5ET1JfQVRIPXlgIC0geWVwLCB0aGF0J3Mgd2hhdCB3ZSB3YW50LiAgV2UncmUgZXhwbGljaXRseSBlbmFibGluZyB0aGUgQXRoZXJvcyB2ZW5kb3IgZHJpdmVyLiBNYWtlcyBzZW5zZS5cblxuTm93LCB0aGUgYENPTkZJR19BVEg5S19IVEM9eSAob3IgbSlgIGxpbmUgaXMgbmV4dC4gIE9rYXksIHNvIHdlJ3ZlIGdvdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBsaWtlbHkgZm9yIG9sZGVyIFVTQiBBdGhlcm9zIGRldmljZXMuICBUaGUgXCIob3IgbSlcIiBpcyBrZXkg4oCTIHdlIGNhbiBlaXRoZXIgYnVpbGQgaXQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBvciBtYWtlIGl0IGEgbW9kdWxlLiBUaGUgY2hvaWNlIGRlcGVuZHMgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLCBvZiBjb3Vyc2UuIEZvciB0aGlzIHByb2plY3QsIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcHJvcyBhbmQgY29ucyBvZiBib3RoIG9wdGlvbnMsIGJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMuXG5cbkxldCdzIHNlZeKApml0ICpkZXBlbmRzKiBvbiBzZXZlcmFsIG90aGVyIHRoaW5ncywgbmF0dXJhbGx5OiBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBgQ09ORklHX1dMQU5gLCBhbmQgYENPTkZJR19ORVRERVZJQ0VTYC4gIER1aC4gIFVTQiBpcyBvYnZpb3VzOyB0aGUgZHJpdmVyIG5lZWRzIHRoZSBVU0Igc3Vic3lzdGVtLiAgYE1BQzgwMjExYCBpcyB0aGUgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLCBzbyB0aGF0J3MgZXhwZWN0ZWQuIGBXTEFOYCBpcyB0aGUgZ2VuZXJhbCB3aXJlbGVzcyBlbmFibGUsIGFuZCBgTkVUREVWSUNFU2AgaXMgdGhlIGdlbmVyYWwgbmV0d29yayBkZXZpY2Ugc3VwcG9ydC4gIEFsbCB0aGUgcHJlcmVxdWlzaXRlcyBzZWVtIHNlbnNpYmxlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgaXQncyBhbHdheXMgYSBnb29kIGlkZWEgdG8gY3Jvc3MtcmVmZXJlbmNlIHdpdGggdGhlIG1hc3RlciBLY29uZmlnIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBvcHRpb25zIGluIHRoYXQgZGlyZWN0b3J5LiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEwNTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjI0LjY0MzAwNDU4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFdMQU5cXG4gICA3OlxcdFxcdGJvb2wgXFxcIldpcmVsZXNzIExBTlxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxMDpcXHRcXHRzZWxlY3QgV0lSRUxFU1NcXG4gIDExOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBwcmUgODAyLjExIGFuZCA4MDIuMTEgd2lyZWxlc3NcXG4gIDE0OlxcdFxcdCAgZGV2aWNlIGRyaXZlcnMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZHJpdmVycyBhbmQgZG9jdW1lbnRhdGlvblxcbiAgMTU6XFx0XFx0ICBvbiB0aGVtIHJlZmVyIHRvIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0aWYgV0xBTlxcbiAgMjA6XFx0XFxuICAyMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXFxcIlxcbiAgMjI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1xcXCJcXG4gIDIzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1xcXCJcXG4gIDI0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1xcXCJcXG4gIDI1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ1xcXCJcXG4gIDI2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1xcXCJcXG4gIDI3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXFxcIlxcbiAgMjg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXFxcIlxcbiAgMjk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1xcXCJcXG4gIDMwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXFxcIlxcbiAgMzE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcXFwiXFxuICAzNDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZ1xcXCJcXG4gIDM1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcXFwiXFxuICAzNjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy9LY29uZmlnXFxcIlxcbiAgMzc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9zdC9LY29uZmlnXFxcIlxcbiAgMzg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXFxcIlxcbiAgMzk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy9LY29uZmlnXFxcIlxcbiAgNDA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MjQuNjQzMDc4MDA4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4MTc5OTQzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIGF0aDlrX2h0YyBVU0IgVFggUGF0aCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIG1hZGUgc29tZSBjaGFuZ2VzIHRvIHRoZSBUWCBhZ2dyZWdhdGlvbiBsb2dpYyBpbiBgYXRoOWtfaHRjYCBmb3IgdGhlIFVTQiBpbnRlcmZhY2UuIEZpcnN0LCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGluY2x1ZGluZyBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2UuIExldCBtZSBsb29rIHRocm91Z2ggdGhlIGRpZmYgaW4gZGV0YWlsLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYF9faGlmX3VzYl90eGAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBhZ2dyZWdhdGluZyBtdWx0aXBsZSBUWCBwYWNrZXRzIGludG8gYSBzaW5nbGUgVVNCIHRyYW5zZmVyLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZGlmZiBsb29rcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuT2theSwgc28gdGhlIGltcG9ydGFudCBwYXJ0cyBJIHNlZTogRmlyc3QsIHRoZXkgbm93IHVzZSBgc2tiX3BlZWtgIGJlZm9yZSBgX19za2JfZGVxdWV1ZWAgYW5kIGNoZWNrIGlmIHRoZSBwYWNrZXQgZml0cyB3aXRoaW4gdGhlIG1heGltdW0gVFggYnVmZmVyIHNpemUgKGBNQVhfVFhfQlVGX1NJWkVgKS4gVGhpcyBpcyBnb29kLiBIb3dldmVyLCBJIHRoaW5rIEkndmUgc3BvdHRlZCBhIHBvdGVudGlhbCBpc3N1ZSBoZXJlOiBJZiBgdHhfc2tiX2NudGAgaXMgZ3JlYXRlciB0aGFuIHplcm8sIGJ1dCB0aGUgKmZpcnN0KiBwYWNrZXQgZG9lc24ndCBmaXQgKGR1ZSB0byBpdHMgbGVuZ3RoIG9yIHRoZSBjdXJyZW50IG9mZnNldCksIG9yIGlzIGBOVUxMYCwgdGhlIGxvb3Agd2lsbCBicmVhayBpbW1lZGlhdGVseS4gSWYgdGhpcyBoYXBwZW5zLCBJIHNlZSB0aGF0IHRoZSBgdHhfYnVmLVx1MDAzZWxlbmAgd2lsbCBiZSB6ZXJvLiBUaGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlLCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIGRyaXZlciB3aWxsIHRoZW4gYXR0ZW1wdCB0byBzdWJtaXQgYSB6ZXJvLWxlbmd0aCBVU0IgYnVsayB0cmFuc2Zlci4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgdmFyaWV0eSBvZiBwcm9ibGVtcywgcG90ZW50aWFsbHkgaW5jbHVkaW5nIGEgbG9ja3VwIG9yIGFuIGluZmluaXRlIGxvb3Agd2hlbiB0aGUgZHJpdmVyIGlzIGNhbGxlZCBhZ2Fpbi4gSXQgc2VlbXMgdGhhdCB0aGUgcGFja2V0cyBtaWdodCBqdXN0IHN0YXkgaW4gdGhlIHF1ZXVlLCB3YWl0aW5nIGZvciBwcm9jZXNzaW5nLlxuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGEgcGFja2V0ICpsYXJnZXIqIHRoYW4gYE1BWF9UWF9CVUZfU0laRWAgaXMgZW5xdWV1ZWQsIGFsdGhvdWdoIHRoaXMgd291bGQgYmUgdW5saWtlbHkgZ2l2ZW4gdGhlIE1UVSBjaGVja3MsIGJ1dCBhIGZ1enplciBvciBjcmFmdGVkIHBhY2tldCBtaWdodCBieXBhc3MgdGhlc2UgY2hlY2tzLCB0aGVuIGBza2JfcGVla2AgaXMgY2FsbGVkIGFuZCBpbW1lZGlhdGVseSBicmVha3MgdGhlIGxvb3AsIGFuZCB0aGUgbmV4dCBjYWxsIHdpbGwgcmVwZWF0IHRoZSBwcm9jZXNzIGZvcmV2ZXIuXG5cblRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgVFggcGFja2V0IGFnZ3JlZ2F0aW9uIHBhdGggaXMgZXhwb3NlZCB0aHJvdWdoIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL2NmZzgwMjExLCBhbmQgZGlyZWN0bHkgd2l0aCByYXcgcGFja2V0cy9zb2NrZXQgaW5qZWN0aW9uLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGZvciBteSBhbmFseXNpcy4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgX19oaWZfdXNiX3R4YCwgYGhpZl91c2Jfc2VuZF90eGAgKHRoZSBjYWxsZXIgb2YgYF9faGlmX3VzYl90eGApLCBgaGlmX3VzYl9zZW5kYCwgYGF0aDlrX2h0Y190eF9kYXRhYCwgYGh0Y19pc3N1ZV9zZW5kYC9gaHRjX3NlbmRgLCBhbmQgYGhpZl91c2JfdHhfY2JgLiBUaGlzIHNob3VsZCBhbGxvdyBtZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZyb20gdGhlIGRyaXZlcidzIFRYIGVudHJ5IHBvaW50IGRvd24gdG8gdGhlIFVTQiBzdWJtaXNzaW9uIGFuZCBjb21wbGV0aW9uIGhhbmRsaW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSBub3QgdG9vIGdlbmVyaWMsIGFuZCB0aGVuIEknbGwgbG9vayBhdCB0aGVtIGluIGRldGFpbCB3aXRoaW4gdGhlIGRyaXZlcidzIHNvdXJjZSB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBUWCBwYXRoIGlzIHN0cnVjdHVyZWQuIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgbmFtZXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCBkaXJlY3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjMzLjQ2MTA3NDMyNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2OTU4MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX3R4X2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI2MDpzdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI2MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM0MD1pbnQgYXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zODEtXFx0aWYgKGllZWU4MDIxMV9pc19kYXRhKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM4MjpcXHRcXHRhdGg5a19odGNfdHhfZGF0YShwcml2LCB2aWYsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzgzLVxcdFxcdFxcdFxcdCAgc3RhX2lkeCwgdmlmX2lkeCwgc2xvdCwgaXNfY2FiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6MzMuNTA2Nzc1MTg4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxNTcxNTQ5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBhdGg5a19odGNfdHhfc3RhcnRgIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGF0IGBhdGg5a19odGNfdHhfc3RhcnRgIGlzIGludm9sdmVkLiBUaGVuLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBLY29uZmlnIG9wdGlvbnMgZW5hYmxlZC4gTGV0J3Mgc2VlLi4uIEkndmUgZ290IHRvIGVuc3VyZSBgQVRIOUtfSFRDYCwgYFVTQmAsIGBNQUM4MDIxMWAsIGBXTEFOX1ZFTkRPUl9BVEhgLCBgV0xBTmAsIGFuZCBgTkVUREVWSUNFU2AgYXJlIGFsbCBzZXQgY29ycmVjdGx5LlxuXG5BbHJpZ2h0LCBub3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gTG9va2luZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUgY29uZmlybXMgdGhhdCBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgIGRlcGVuZHMgb24gYFdMQU5fVkVORE9SX0FUSGAgdW5kZXIgYFdMQU5gLiBTbyB5ZXMsIGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAsIGFuZCBgV0xBTmAgYXJlIGluZGVlZCB0aGUgY29yZSBjb25maWdzIGhlcmUuIFRoYXQncyBnb29kLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoZSBmdXp6aW5nIHN0cmF0ZWd5IGl0c2VsZi4gVGhlIGxvZ2ljIHNheXMgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSBhZ3JlZS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtZXNzZXMgd2l0aCBwYWNrZXQgYWdncmVnYXRpb24gYW5kIGhvdyBsZW5ndGgvb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCB3aXRoaW4gYF9faGlmX3VzYl90eGAsIGEgZnVuY3Rpb24gaW4gdGhlIGBhdGg5a19odGNgIFVTQiBXaUZpIGRyaXZlci4gVGhpcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBhbmQgc3RhbmRhcmQgbWFjODAyMTEgcGFja2V0IHRyYW5zbWlzc2lvbiwgc28gdGhlIGF0dGFjayBzdXJmYWNlIGlzIGRlZmluaXRlbHkgcHJlc2VudC5cblxuSSd2ZSBnb3QgdGhlIGZvY3VzIHN5bWJvbHMgaWRlbnRpZmllZDogYF9faGlmX3VzYl90eGAsIGBoaWZfdXNiX3NlbmRfdHhgLCBgaGlmX3VzYl9zZW5kYCwgYGhpZl91c2JfdHhfY2JgLCBgYXRoOWtfaHRjX3R4X3N0YXJ0YCwgYW5kIGBhdGg5a19odGNfdHhfZGF0YWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIEknbGwgYmUgdGFyZ2V0aW5nIGR1cmluZyB0aGUgZnV6emluZy5cblxuRmluYWxseSwganVzdCB0byByZWl0ZXJhdGUsIG15IGVuYWJsZSBjb25maWdzIGFyZTogYEFUSDlLX0hUQ2AsIGBVU0JgLCBgTUFDODAyMTFgLCBgV0xBTl9WRU5ET1JfQVRIYCwgYW5kIGBXTEFOYC5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIHNvbGlkIHBsYW4gaGVyZS4gVGltZSB0byBgc2V0LXJlc3VsdHNgIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDgzNiwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNjYzOTMyNjcyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzMjMyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCIsXG4gICAgXCJXTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19oaWZfdXNiX3R4XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiLFxuICAgIFwiaGlmX3VzYl90eF9jYlwiLFxuICAgIFwiYXRoOWtfaHRjX3R4X3N0YXJ0XCIsXG4gICAgXCJhdGg5a19odGNfdHhfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBhZ2dyZWdhdGlvbiBib3VuZGFyeSBjaGVja3MsIHF1ZXVlIGhhbmRsaW5nLCBhbmQgYnVmZmVyIGxlbmd0aC9vZmZzZXQgY2FsY3VsYXRpb25zIGluIF9faGlmX3VzYl90eCBmb3IgdGhlIGF0aDlrX2h0YyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldHdvcmsgcGFja2V0IHRyYW5zbWlzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIixcbiAgICBcIldMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2hpZl91c2JfdHhcIixcbiAgICBcImhpZl91c2Jfc2VuZF90eFwiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCIsXG4gICAgXCJoaWZfdXNiX3R4X2NiXCIsXG4gICAgXCJhdGg5a19odGNfdHhfc3RhcnRcIixcbiAgICBcImF0aDlrX2h0Y190eF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGFnZ3JlZ2F0aW9uIGJvdW5kYXJ5IGNoZWNrcywgcXVldWUgaGFuZGxpbmcsIGFuZCBidWZmZXIgbGVuZ3RoL29mZnNldCBjYWxjdWxhdGlvbnMgaW4gX19oaWZfdXNiX3R4IGZvciB0aGUgYXRoOWtfaHRjIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgc3RhbmRhcmQgd2lyZWxlc3MgbmV0d29yayBwYWNrZXQgdHJhbnNtaXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNzM5MjYyNDZaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDEwNjcwMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NDEuNzM5Njg4NTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0NTQxMDI0MDQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMTlkNDIwYzA0ZTQwYjY1MmRkM2E0MWI4NzQyNjM2OTUxNGUxNTliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDA6MzA6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuaW5kZXggZDM0OTFmZjA4ZTZlZi4uN2QyZjI5MmUyMGM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tYXRoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFwiaHRjLmhcIlxuIFxuQEAgLTMyOCwxMSArMzI5LDE0IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdHR4X3NrYl9jbnQgPSBtaW5fdCh1MTYsIGhpZl9kZXYtXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xuLVx0XHRuc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdG5za2IgPSBza2JfcGVlayhcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XG4rXHRcdGlmICghbnNrYilcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0LyogU2hvdWxkIG5ldmVyIGJlIE5VTEwgKi9cbi1cdFx0QlVHX09OKCFuc2tiKTtcbitcdFx0aWYgKHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQgXHUwMDNlIE1BWF9UWF9CVUZfU0laRSlcbitcdFx0XHRicmVhaztcbiBcbitcdFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2aGlmX2Rldi1cdTAwM2V0eC50eF9za2JfcXVldWUpO1xuIFx0XHRoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9jbnQtLTtcbiBcbiBcdFx0YnVmID0gdHhfYnVmLVx1MDAzZWJ1ZjtcbkBAIC0zNDIsMTMgKzM0Niw4IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdFx0KmhkcisrID0gY3B1X3RvX2xlMTYoQVRIX1VTQl9UWF9TVFJFQU1fTU9ERV9UQUcpO1xuIFx0XHRidWYgKz0gNDtcbiBcdFx0bWVtY3B5KGJ1ZiwgbnNrYi1cdTAwM2VkYXRhLCBuc2tiLVx1MDAzZWxlbik7XG4tXHRcdHR4X2J1Zi1cdTAwM2VsZW4gPSBuc2tiLVx1MDAzZWxlbiArIDQ7XG4tXG4tXHRcdGlmIChpIFx1MDAzYyAodHhfc2tiX2NudCAtIDEpKVxuLVx0XHRcdHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gKCgodHhfYnVmLVx1MDAzZWxlbiAtIDEpIC8gNCkgKyAxKSAqIDQ7XG4tXG4tXHRcdGlmIChpID09ICh0eF9za2JfY250IC0gMSkpXG4tXHRcdFx0dHhfYnVmLVx1MDAzZWxlbiArPSB0eF9idWYtXHUwMDNlb2Zmc2V0O1xuK1x0XHR0eF9idWYtXHUwMDNlbGVuID0gdHhfYnVmLVx1MDAzZW9mZnNldCArIG5za2ItXHUwMDNlbGVuICsgNDtcbitcdFx0dHhfYnVmLVx1MDAzZW9mZnNldCArPSByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpO1xuIFxuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNnR4X2J1Zi1cdTAwM2Vza2JfcXVldWUsIG5za2IpO1xuIFx0XHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjQxLjczOTY4OTUyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MzkxNDUyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLlxuXG4qKkFuYWx5emluZyB0aGlzIFBhdGNoIGFuZCBpdHMgU3Vycm91bmRpbmdzKipcblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB1bmRlcnN0YW5kaW5nIHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3RpbmcgY29kZSBiYXNlLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5zdGluY3QgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gVGhhdCBmaWxlIHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBvaW50IG9mIGRlcGFydHVyZSwgZ2l2ZW4gdGhlIGxpa2VseSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlIGluIGEgd2lyZWxlc3MgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIHRoZSB0b29scyBhbmQgc3RhcnQgc2lmdGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo0NS42Nzg4Mzc1ODVaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbiAzMDE6XFx0XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbiAzMDI6XFx0XFx0aWYgKCEoaGlmX2Rldi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBISUZfVVNCX1RYX1NUT1ApKVxcbiAzMDM6XFx0XFx0XFx0X19oaWZfdXNiX3R4KGhpZl9kZXYpOyAvKiBDaGVjayBmb3IgcGVuZGluZyBTS0JzICovXFxuIDMwNDpcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBidWZfY29tcGxldGVkKTtcXG4gMzA1OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMzA2OlxcdH1cXG4gMzA3OlxcdFxcbiAzMDg6XFx0LyogVFggbG9jayBoYXMgdG8gYmUgdGFrZW4gKi9cXG4gMzA5OlxcdHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gMzEwOlxcdHtcXG4gMzExOlxcdFxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEw7XFxuIDMxMjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuIDMxMzpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMzE0OlxcdFxcdHUxNiB0eF9za2JfY250ID0gMDtcXG4gMzE1OlxcdFxcdHU4ICpidWY7XFxuIDMxNjpcXHRcXHRfX2xlMTYgKmhkcjtcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgPT0gMClcXG4gMzE5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbiAzMjI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1ZikpXFxuIDMyMzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMzI0OlxcdFxcbiAzMjU6XFx0XFx0dHhfYnVmID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmLCBzdHJ1Y3QgdHhfYnVmLCBsaXN0KTtcXG4gMzI2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4gMzI3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG4gMzI4OlxcdFxcbiAzMjk6XFx0XFx0dHhfc2tiX2NudCA9IG1pbl90KHUxNiwgaGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX2NudCwgTUFYX1RYX0FHR1JfTlVNKTtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHR4X3NrYl9jbnQ7IGkrKykge1xcbiAzMzI6XFx0XFx0XFx0bnNrYiA9IHNrYl9wZWVrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUpO1xcbiAzMzM6XFx0XFx0XFx0aWYgKCFuc2tiKVxcbiAzMzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuIDMzNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzM4OlxcdFxcbiAzMzk6XFx0XFx0XFx0bnNrYiA9IF9fc2tiX2RlcXVldWUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSk7XFxuIDM0MDpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfY250LS07XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdFxcdGJ1ZiA9IHR4X2J1Zi1cXHUwMDNlYnVmO1xcbiAzNDM6XFx0XFx0XFx0YnVmICs9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0O1xcbiAzNDQ6XFx0XFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4gMzQ1OlxcdFxcdFxcdCpoZHIrKyA9IGNwdV90b19sZTE2KG5za2ItXFx1MDAzZWxlbik7XFxuIDM0NjpcXHRcXHRcXHQqaGRyKysgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9NT0RFX1RBRyk7XFxuIDM0NzpcXHRcXHRcXHRidWYgKz0gNDtcXG4gMzQ4OlxcdFxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuIDM0OTpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICsgbnNrYi1cXHUwMDNlbGVuICsgNDtcXG4gMzUwOlxcdFxcdFxcdHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ICs9IHJvdW5kX3VwKG5za2ItXFx1MDAzZWxlbiArIDQsIDQpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgbnNrYik7XFxuIDM1MzpcXHRcXHRcXHRUWF9TVEFUX0lOQyhoaWZfZGV2LCBza2JfcXVldWVkKTtcXG4gMzU0OlxcdFxcdH1cXG4gMzU1OlxcdFxcbiAzNTY6XFx0XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDM1NzpcXHRcXHRcXHRcXHQgIHVzYl9zbmRidWxrcGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfV0xBTl9UWF9QSVBFKSxcXG4gMzU4OlxcdFxcdFxcdFxcdCAgdHhfYnVmLVxcdTAwM2VidWYsIHR4X2J1Zi1cXHUwMDNlbGVuLFxcbiAzNTk6XFx0XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbiAzNjA6XFx0XFxuIDM2MTpcXHRcXHRyZXQgPSB1c2Jfc3VibWl0X3VyYih0eF9idWYtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQyk7XFxuIDM2MjpcXHRcXHRpZiAocmV0KSB7XFxuIDM2MzpcXHRcXHRcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG4gMzY0OlxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIGZhbHNlKTtcXG4gMzY1OlxcdFxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAzNjY6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuIDM2NzpcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2V0eC50eF9idWZfY250Kys7XFxuIDM2ODpcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX3F1ZXVlZCk7XFxuIDM3MDpcXHRcXHR9XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdHJldHVybiByZXQ7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7XFxuIDM3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAzNzk6XFx0XFx0aW50IHJldCA9IDA7XFxuIDM4MDpcXHRcXG4gMzgxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuIDM4MjpcXHRcXG4gMzgzOlxcdFxcdGlmIChoaWZfZGV2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEhJRl9VU0JfVFhfU1RPUCkge1xcbiAzODQ6XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xcbiAzODU6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDM4NjpcXHRcXHR9XFxuIDM4NzpcXHRcXG4gMzg4OlxcdFxcdC8qIENoZWNrIGlmIHRoZSBtYXggcXVldWUgY291bnQgaGFzIGJlZW4gcmVhY2hlZCAqL1xcbiAzODk6XFx0XFx0aWYgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgXFx1MDAzZSBNQVhfVFhfQlVGX05VTSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo0NS42Nzg5NDQ3NDVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NTc4ODE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCB0aGUgYGhpZl91c2JfdHhfY2JgIGNhbGxiYWNrLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBoaWZfdXNiLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHRyYW5zbWl0IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGluIHJlbGF0aW9uIHRvIHRoYXQgY2FsbGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIGFjdHVhbGx5IHByZXBhcmVkIGZvciBhbmQgdHJpZ2dlcmVkIHRvIGJlIHRyYW5zbWl0dGVkIG92ZXIgVVNCLiBMb29raW5nIGF0IHRoaXMgY2FsbGJhY2sgaW4gaXNvbGF0aW9uIGlzbid0IGdvaW5nIHRvIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCDigJMgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGhpZl91c2IuY2AsIHRoZSBpbnRlcmFjdGlvbnMsIGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGJ1ZmZlciBsaWZlY3ljbGUg4oCTIGZyb20gaW5pdGlhbGl6YXRpb24sIHRocm91Z2ggZGF0YSBwb3B1bGF0aW9uLCBhbmQgZmluYWxseSwgdG8gd2hlbiB0aGUgYGhpZl91c2JfdHhfY2JgIGdldHMgaW52b2tlZC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhpcyBVU0IgdHJhbnNmZXIgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMTo1MC4yNDQ3MzU4ODlaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjcwOlxcdFxcdGNhc2UgLUVOT0RFVjpcXG4gMjcxOlxcdFxcdGNhc2UgLUVTSFVURE9XTjpcXG4gMjcyOlxcdFxcdFxcdHR4b2sgPSBmYWxzZTtcXG4gMjczOlxcdFxcbiAyNzQ6XFx0XFx0XFx0LypcXG4gMjc1OlxcdFxcdFxcdCAqIElmIHRoZSBVUkJzIGFyZSBiZWluZyBmbHVzaGVkLCBubyBuZWVkIHRvIGFkZCB0aGlzXFxuIDI3NjpcXHRcXHRcXHQgKiBVUkIgdG8gdGhlIGZyZWUgbGlzdC5cXG4gMjc3OlxcdFxcdFxcdCAqL1xcbiAyNzg6XFx0XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMjc5OlxcdFxcdFxcdGlmIChoaWZfZGV2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEhJRl9VU0JfVFhfRkxVU0gpIHtcXG4gMjgwOlxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4gMjgxOlxcdFxcdFxcdFxcdGF0aDlrX3NrYl9xdWV1ZV9wdXJnZShoaWZfZGV2LCBcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbiAyODI6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAyODM6XFx0XFx0XFx0fVxcbiAyODQ6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbiAyODU6XFx0XFxuIDI4NjpcXHRcXHRcXHRicmVhaztcXG4gMjg3OlxcdFxcdGRlZmF1bHQ6XFxuIDI4ODpcXHRcXHRcXHR0eG9rID0gZmFsc2U7XFxuIDI4OTpcXHRcXHRcXHRicmVhaztcXG4gMjkwOlxcdFxcdH1cXG4gMjkxOlxcdFxcbiAyOTI6XFx0XFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgdHhvayk7XFxuIDI5MzpcXHRcXG4gMjk0OlxcdFxcdC8qIFJlLWluaXRpYWxpemUgdGhlIFNLQiBxdWV1ZSAqL1xcbiAyOTU6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCA9IDA7XFxuIDI5NjpcXHRcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0LyogQWRkIHRoaXMgVFggYnVmZmVyIHRvIHRoZSBmcmVlIGxpc3QgKi9cXG4gMjk5OlxcdFxcdHNwaW5fbG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuIDMwMDpcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0LCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmKTtcXG4gMzAxOlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQrKztcXG4gMzAyOlxcdFxcdGlmICghKGhpZl9kZXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcXG4gMzAzOlxcdFxcdFxcdF9faGlmX3VzYl90eChoaWZfZGV2KTsgLyogQ2hlY2sgZm9yIHBlbmRpbmcgU0tCcyAqL1xcbiAzMDQ6XFx0XFx0VFhfU1RBVF9JTkMoaGlmX2RldiwgYnVmX2NvbXBsZXRlZCk7XFxuIDMwNTpcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuIDMwNjpcXHR9XFxuIDMwNzpcXHRcXG4gMzA4OlxcdC8qIFRYIGxvY2sgaGFzIHRvIGJlIHRha2VuICovXFxuIDMwOTpcXHRzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMxOjUwLjI0NDg1OTQwOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTU5MjIxOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBCdWZmZXIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgbGF5b3V0IGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhpcyBgdHhfYnVmYCBzdHJ1Y3R1cmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGB0eF9idWZgICppdHNlbGYqIGFsbG9jYXRlZD8gSXMgaXQgb24gdGhlIHN0YWNrLCBoZWFwLCBvciBzb21lIG90aGVyIG1lbW9yeSByZWdpb24/IFRoYXQgY29udGV4dCBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBsaWZldGltZSBhbmQgc2NvcGUuXG5cbkFuZCwgZXZlbiBtb3JlIGltcG9ydGFudGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgb3JpZ2luIG9mIGB0eF9idWYtXHUwMDNlYnVmYC4gVGhpcyBpcyB0aGUgKnJlYWwqIGJ1ZmZlciwgcmlnaHQ/IElzIGl0IGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgYXJyYXkgd2l0aGluIGB0eF9idWZgLCBvciBpcyBpdCBhIHBvaW50ZXIgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeT8gQW5kIGlmIHRoZSBsYXR0ZXIsIHdoZXJlIGFuZCBob3cgaXMgdGhhdCBtZW1vcnkgYmVpbmcgbWFuYWdlZD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBgbWFsbG9jYCwgYSBjdXN0b20gYWxsb2NhdG9yLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBzdHJhdGVneSBvZiBgdHhfYnVmLVx1MDAzZWJ1ZmAgaXMga2V5IHRvIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzLCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgZW5zdXJpbmcgcHJvcGVyIGRhdGEgYWNjZXNzIGFuZCBkZWFsbG9jYXRpb24gZG93biB0aGUgbGluZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlIGNvZGUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NTMuMjA0MDgzNTkxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEyNTQwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0eF9idWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD0yMzQ9c3RydWN0IGF0aF9hdHhfdGlkIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTIzOC1cXHRzdHJ1Y3QgYXRoX3R4cSAqdHhxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjIzOTpcXHR1bnNpZ25lZCBsb25nIHR4X2J1ZltCSVRTX1RPX0xPTkdTKEFUSF9USURfTUFYX0JVRlMpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0yNDAtXFx0dTE2IHNlcV9zdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjU0PXN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI1NjpcXHRzdHJ1Y3QgdHhfYnVmICp0eF9idWYgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNTctXFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjA6XFx0aWYgKCF0eF9idWYgfHwgIXR4X2J1Zi1cXHUwMDNlaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2MS1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjM6XFx0aGlmX2RldiA9IHR4X2J1Zi1cXHUwMDNlaGlmX2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjgwLVxcdFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI4MTpcXHRcXHRcXHRhdGg5a19za2JfcXVldWVfcHVyZ2UoaGlmX2RldiwgXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI4Mi1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5MjpcXHRhdGg5a19za2JfcXVldWVfY29tcGxldGUoaGlmX2RldiwgXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlLCB0eG9rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5NC1cXHQvKiBSZS1pbml0aWFsaXplIHRoZSBTS0IgcXVldWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NTpcXHR0eF9idWYtXFx1MDAzZWxlbiA9IHR4X2J1Zi1cXHUwMDNlb2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5NjpcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlc2tiX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjk5LVxcdHNwaW5fbG9jayhcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMDA6XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMDE6XFx0aGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzAyLVxcdGlmICghKGhpZl9kZXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgSElGX1VTQl9UWF9TVE9QKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzA5PXN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTE6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMxMi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyMS1cXHQvKiBDaGVjayBpZiBhIGZyZWUgVFggYnVmZmVyIGlzIGF2YWlsYWJsZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzIyOlxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzIzLVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI1OlxcdHR4X2J1ZiA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Ziwgc3RydWN0IHR4X2J1ZiwgbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMjY6XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3BlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI3OlxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQtLTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTMyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzM2OlxcdFxcdGlmICh0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQgXFx1MDAzZSBNQVhfVFhfQlVGX1NJWkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zMzctXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MjpcXHRcXHRidWYgPSB0eF9idWYtXFx1MDAzZWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM0MzpcXHRcXHRidWYgKz0gdHhfYnVmLVxcdTAwM2VvZmZzZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNDQtXFx0XFx0aGRyID0gKF9fbGUxNiAqKWJ1ZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzQ4LVxcdFxcdG1lbWNweShidWYsIG5za2ItXFx1MDAzZWRhdGEsIG5za2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDk6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTA6XFx0XFx0dHhfYnVmLVxcdTAwM2VvZmZzZXQgKz0gcm91bmRfdXAobnNrYi1cXHUwMDNlbGVuICsgNCwgNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTI6XFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUsIG5za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzUzLVxcdFxcdFRYX1NUQVRfSU5DKGhpZl9kZXYsIHNrYl9xdWV1ZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTY6XFx0dXNiX2ZpbGxfYnVsa191cmIodHhfYnVmLVxcdTAwM2V1cmIsIGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zNTctXFx0XFx0XFx0ICB1c2Jfc25kYnVsa3BpcGUoaGlmX2Rldi1cXHUwMDNldWRldiwgVVNCX1dMQU5fVFhfUElQRSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTg6XFx0XFx0XFx0ICB0eF9idWYtXFx1MDAzZWJ1ZiwgdHhfYnVmLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNTk6XFx0XFx0XFx0ICBoaWZfdXNiX3R4X2NiLCB0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMzYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzYxOlxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNjM6XFx0XFx0dHhfYnVmLVxcdTAwM2VsZW4gPSB0eF9idWYtXFx1MDAzZW9mZnNldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNjQ6XFx0XFx0YXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKGhpZl9kZXYsIFxcdTAwMjZ0eF9idWYtXFx1MDAzZXNrYl9xdWV1ZSwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY1OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY2OlxcdFxcdGxpc3RfbW92ZV90YWlsKFxcdTAwMjZ0eF9idWYtXFx1MDAzZWxpc3QsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY3OlxcdFxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM2OC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzU9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTItXFx0LyogQ2hlY2sgaWYgQU1QRFVzIGhhdmUgdG8gYmUgc2VudCBpbW1lZGlhdGVseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDEzOlxcdGlmICgoaGlmX2Rldi1cXHUwMDNldHgudHhfYnVmX2NudCA9PSBNQVhfVFhfVVJCX05VTSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNC1cXHQgICAgKGhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9jbnQgXFx1MDAzYyAyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00MzU9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzNy1cXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYgPSBoaWZfaGFuZGxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDM4OlxcdHN0cnVjdCB0eF9idWYgKnR4X2J1ZiA9IE5VTEwsICp0eF9idWZfdG1wID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQzOS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NDgtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ0OTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDUwLVxcdFxcdFxcdFxcdCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfcGVuZGluZywgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDUxOlxcdFxcdHVzYl9nZXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ1Mi1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0NTM6XFx0XFx0dXNiX2tpbGxfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NDpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ1NTpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDU2OlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NTctXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODAyPXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MDQ6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmID0gTlVMTCwgKnR4X2J1Zl90bXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODA1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgwNy1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODA4OlxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0eF9idWYsIHR4X2J1Zl90bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MDk6XFx0XFx0XFx0XFx0IFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYsIGxpc3QpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMDpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgxMTpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODEyOlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MjAtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyMTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodHhfYnVmLCB0eF9idWZfdG1wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODIyLVxcdFxcdFxcdFxcdCBcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfcGVuZGluZywgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODIzOlxcdFxcdHVzYl9nZXRfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgyNC1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4MjU6XFx0XFx0dXNiX2tpbGxfdXJiKHR4X2J1Zi1cXHUwMDNldXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNjpcXHRcXHRsaXN0X2RlbChcXHUwMDI2dHhfYnVmLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjgyNzpcXHRcXHR1c2JfZnJlZV91cmIodHhfYnVmLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODI4OlxcdFxcdGtmcmVlKHR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04MjktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9ODM2PXN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9hbGxvY190eF91cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTgzNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4Mzg6XFx0c3RydWN0IHR4X2J1ZiAqdHhfYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODM5LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODQxOlxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQyLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9wZW5kaW5nKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODQ3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfVFhfVVJCX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NDg6XFx0XFx0dHhfYnVmID0ga3phbGxvY19mbGV4KCp0eF9idWYsIGJ1ZiwgTUFYX1RYX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg0OTpcXHRcXHRpZiAoIXR4X2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MC1cXHRcXHRcXHRnb3RvIGVycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1MjpcXHRcXHR0eF9idWYtXFx1MDAzZXVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo4NTM6XFx0XFx0aWYgKCF0eF9idWYtXFx1MDAzZXVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1NC1cXHRcXHRcXHRnb3RvIGVycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg1NjpcXHRcXHR0eF9idWYtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODU3OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2dHhfYnVmLVxcdTAwM2Vza2JfcXVldWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODU5OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnR4X2J1Zi1cXHUwMDNlbGlzdCwgXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy04NjAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6ODYyOlxcdGhpZl9kZXYtXFx1MDAzZXR4LnR4X2J1Zl9jbnQgPSBNQVhfVFhfVVJCX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTg2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODY1LWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjg2NjpcXHRrZnJlZSh0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtODY3LVxcdGF0aDlrX2hpZl91c2JfZGVhbGxvY190eF91cmJzKGhpZl9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaD0zOT1leHRlcm4gaW50IGh0Y191c2VfZGV2X2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaC03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oOjc5OnN0cnVjdCB0eF9idWYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtODAtXFx0dTE2IGxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg9OTc9c3RydWN0IGhpZl91c2JfdHgge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtOTgtXFx0dTggZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaDo5OTpcXHR1OCB0eF9idWZfY250O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAwLVxcdHUxNiB0eF9za2JfY250O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAxLVxcdHN0cnVjdCBza19idWZmX2hlYWQgdHhfc2tiX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmg6MTAyOlxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgtMTAzLVxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfcGVuZGluZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MzE3PXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjMyOTpcXHRfX2NsZWFyX2JpdChjaW5kZXgsIHRpZC1cXHUwMDNldHhfYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjMzMTpcXHR3aGlsZSAodGlkLVxcdTAwM2ViYXdfaGVhZCAhPSB0aWQtXFx1MDAzZWJhd190YWlsIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdCh0aWQtXFx1MDAzZWJhd19oZWFkLCB0aWQtXFx1MDAzZXR4X2J1ZikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTMzMi1cXHRcXHRJTkNSKHRpZC1cXHUwMDNlc2VxX3N0YXJ0LCBJRUVFODAyMTFfU0VRX01BWCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTMzOT1zdGF0aWMgdm9pZCBhdGhfdHhfYWRkdG9fYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTM0OS1cXHRjaW5kZXggPSAodGlkLVxcdTAwM2ViYXdfaGVhZCArIGluZGV4KSBcXHUwMDI2IChBVEhfVElEX01BWF9CVUZTIC0gMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzozNTA6XFx0X19zZXRfYml0KGNpbmRleCwgdGlkLVxcdTAwM2V0eF9idWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMzUxLVxcdGZpLVxcdTAwM2ViYXdfdHJhY2tlZCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE1NzE9aW50IGF0aF90eF9hZ2dyX3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTYwMzpcXHRtZW1zZXQodHh0aWQtXFx1MDAzZXR4X2J1ZiwgMCwgc2l6ZW9mKHR4dGlkLVxcdTAwM2V0eF9idWYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2MDQtXFx0dHh0aWQtXFx1MDAzZWJhd19oZWFkID0gdHh0aWQtXFx1MDAzZWJhd190YWlsID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzE6NTMuMjUxMjE4MTM0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5MTQxMTk0NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIFRYIEFnZ3JlZ2F0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGUgb3JpZ2luYWwgY29kZSB3YXMgZG9pbmcgYW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBhdHRlbXB0aW5nIHRvIGZpeC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVuY29uZGl0aW9uYWxseSBkZXF1ZXVpbmcgdXAgdG8gYHR4X3NrYl9jbnRgIHNrYnMuIFRoYXQgYWxyZWFkeSByYWlzZXMgYSBmbGFnLiBNb3JlIGltcG9ydGFudGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGNvdWxkIGhhdmUgYmVlbiB3cml0aW5nIGludG8gYHR4X2J1Zi1cdTAwM2VidWYgKyB0eF9idWYtXHUwMDNlb2Zmc2V0YCAqd2l0aG91dCogYW55IGJvdW5kYXJ5IGNoZWNrcyEgU3BlY2lmaWNhbGx5LCB3aXRob3V0IGNoZWNraW5nIGlmIHRoZSBjdXJyZW50IGBvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDRgIGV4Y2VlZHMgYE1BWF9UWF9CVUZfU0laRWAuIFRoYXQncyBhIGNsYXNzaWMgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2FpdGluZyB0byBoYXBwZW4uXG5cblRoZSBwYXRjaCB0cmllcyB0byBhZGRyZXNzIHRoaXMuIE5vdywgYmVmb3JlIGRlcXVldWluZywgdGhlcmUncyBhIGNoZWNrIHVzaW5nIGBza2JfcGVla2AgdG8gbG9vayBhdCB0aGUgbmV4dCBTS0IuICBJZiB0aGUgY29tYmluZWQgbGVuZ3RoIHdvdWxkIGV4Y2VlZCBgTUFYX1RYX0JVRl9TSVpFYCwgdGhlIGxvb3AgYnJlYWtzLiAqVGhlbiosIGFuZCBvbmx5IHRoZW4sIGRvZXMgaXQgZGVxdWV1ZSB3aXRoIGBfX3NrYl9kZXF1ZXVlYC4gVGhlIG9yaWdpbmFsIHVuY29uZGl0aW9uYWwgYEJVR19PTmAgY2FsbCBpcyBub3cgcmVwbGFjZWQgd2l0aCB0aGlzIGxlbmd0aCBjaGVjayB3aGljaCBpcyBiZXR0ZXIgdGhhbiBhIHBhbmljLlxuXG5Ob3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIHRyaWNreSBiaXQgd2l0aCBgdHhfYnVmLVx1MDAzZWxlbmAuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBzb21lIHBlY3VsaWFyIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBgdHhfYnVmLVx1MDAzZWxlbmAgYW5kIGB0eF9idWYtXHUwMDNlb2Zmc2V0YC4gSXQgc2VlbXMgdGhhdCBpZiB0aGUgbG9vcCBicm9rZSBlYXJseSwgZHVlIHRvIGNhcGFjaXR5IGlzc3VlcyBvciBhbm90aGVyIGNvbmRpdGlvbiwgdGhlIGZpbmFsIGB0eF9idWYtXHUwMDNlbGVuYCB3b3VsZCBvbmx5IGJlIHVwZGF0ZWQgb24gdGhlICpsYXN0KiBpdGVyYXRpb24sIHdoaWNoIGlzIHdyb25nLiBUaGlzIGlzIHdoZXJlIEkgdGhpbmsgdGhlIHJlYWwgYnVnIHdhcy5cblxuVGhlIHBhdGNoJ3MgY2hhbmdlcyB0byBjYWxjdWxhdGUgYHR4X2J1Zi1cdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVx1MDAzZW9mZnNldGAgYXJlIGNyaXRpY2FsLiBJdCdzIG5vdyBjYWxjdWxhdGVkIGluY3JlbWVudGFsbHkgYW5kIGNvcnJlY3RseSB3aXRoaW4gdGhlIGxvb3A6ICBgdHhfYnVmLVx1MDAzZWxlbiA9IHR4X2J1Zi1cdTAwM2VvZmZzZXQgKyBuc2tiLVx1MDAzZWxlbiArIDQ7YCBhbmQgYHR4X2J1Zi1cdTAwM2VvZmZzZXQgKz0gcm91bmRfdXAobnNrYi1cdTAwM2VsZW4gKyA0LCA0KTtgLiBUaGlzIG1ha2VzIG1vcmUgc2Vuc2UgYW5kIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGxhc3QgaXRlcmF0aW9uLiBUaGlzIGNoYW5nZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwsIGJ1dCB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGN1bGF0aW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUsIGJlY2F1c2UgdGhlIGxvb3AgbWlnaHQgdGVybWluYXRlIGVhcmx5LiBUaGlzIGZpeGVzIHRoZSBvZmYtYnktb25lIGVycm9ycyBmcm9tIHRoZSBvbGQgbWV0aG9kLCBtYWtpbmcgaXQgY29ycmVjdC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgY2FsY3VsYXRpb25zIGFyZSBjb25zaXN0ZW50IHdpdGggYHN0cnVjdCB0eF9idWZgJ3MgYWxpZ25tZW50IGFuZCBwYWRkaW5nIHJlcXVpcmVtZW50cywgaG93ZXZlci4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBzdHJ1Y3R1cmUgY2xvc2VseS4gVGhpcyBwYXRjaCBhcHBlYXJzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYzMCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDA6MzI6MTIuMzkyNDE0OTQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzU6XFx0XFxuICA3NjpcXHQjZGVmaW5lIEhJRl9VU0JfTUFYX1JYUElQRVMgMlxcbiAgNzc6XFx0I2RlZmluZSBISUZfVVNCX01BWF9UWFBJUEVTIDRcXG4gIDc4OlxcdFxcbiAgNzk6XFx0c3RydWN0IHR4X2J1ZiB7XFxuICA4MDpcXHRcXHR1MTYgbGVuO1xcbiAgODE6XFx0XFx0dTE2IG9mZnNldDtcXG4gIDgyOlxcdFxcdHN0cnVjdCB1cmIgKnVyYjtcXG4gIDgzOlxcdFxcdHN0cnVjdCBza19idWZmX2hlYWQgc2tiX3F1ZXVlO1xcbiAgODQ6XFx0XFx0c3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2O1xcbiAgODU6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgODY6XFx0XFx0dTggYnVmW107XFxuICA4NzpcXHR9O1xcbiAgODg6XFx0XFxuICA4OTpcXHRzdHJ1Y3QgcnhfYnVmIHtcXG4gIDkwOlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuICA5MTpcXHRcXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXY7XFxuICA5MjpcXHR9O1xcbiAgOTM6XFx0XFxuICA5NDpcXHQjZGVmaW5lIEhJRl9VU0JfVFhfU1RPUCAgQklUKDApXFxuICA5NTpcXHQjZGVmaW5lIEhJRl9VU0JfVFhfRkxVU0ggQklUKDEpXFxuICA5NjpcXHRcXG4gIDk3OlxcdHN0cnVjdCBoaWZfdXNiX3R4IHtcXG4gIDk4OlxcdFxcdHU4IGZsYWdzO1xcbiAgOTk6XFx0XFx0dTggdHhfYnVmX2NudDtcXG4gMTAwOlxcdFxcdHUxNiB0eF9za2JfY250O1xcbiAxMDE6XFx0XFx0c3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9za2JfcXVldWU7XFxuIDEwMjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHR4X2J1ZjtcXG4gMTAzOlxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgdHhfcGVuZGluZztcXG4gMTA0OlxcdFxcdHNwaW5sb2NrX3QgdHhfbG9jaztcXG4gMTA1OlxcdH07XFxuIDEwNjpcXHRcXG4gMTA3OlxcdHN0cnVjdCBjbWRfYnVmIHtcXG4gMTA4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIDEwOTpcXHRcXHRzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAwOjMyOjEyLjM5MjQ4NjgzN1oiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDc1NzQyMjA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBVU0IgSElGIFRYIEFnZ3JlZ2F0aW9uIGFuZCBNZW1vcnkgU2FmZXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwYWRkaW5nIHdpdGhpbiB0aGUgYHR4X2J1Zi1cdTAwM2VidWZgIHdoZW4gYWdncmVnYXRpbmcgcGFja2V0cyBpbiB0aGUgYGF0aDlrYCBVU0IgSElGIFRYIHBhdGguICBJJ20gdHJhY2tpbmcgdGhlIGJlaGF2aW9yIGFmdGVyIGByb3VuZF91cChuc2tiLVx1MDAzZWxlbiArIDQsIDQpYC4gIFRoZSBwb3RlbnRpYWwgZm9yIHBhZGRpbmcgaW50cm9kdWNlcyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uOiBJcyB0aGlzIHBhZGRpbmcgaW5pdGlhbGl6ZWQ/ICBUaGUgYnVmZmVyIGl0c2VsZiwgYHR4X2J1ZmAsIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jX2ZsZXhgLiAqVGhhdCdzIGdvb2QqLCBzbywgYXQgYWxsb2NhdGlvbiB0aGUgYnVmZmVyIGlzIHplcm9lZCBvdXQuIFRoZSBidWZmZXIgaXMgdGhlbiByZXVzZWQgYWZ0ZXIgYSB0cmFuc21pc3Npb24gdXNpbmcgYHR4X2J1Zi1cdTAwM2VsZW4gPSB0eF9idWYtXHUwMDNlb2Zmc2V0ID0gMDtgLCBidXQgaXQgaXMgKm5vdCogcmUtemVyb2VkLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnkgbGVhayBvZiB1bmluaXRpYWxpemVkIGRhdGEgaW4gdGhpcyBwYXRoLlxuXG5DcnVjaWFsbHksIHRoaXMgZGF0YSBpcyBzZW50IHRvIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IHZpYSBgdXNiX2ZpbGxfYnVsa191cmJgIHRvIHRoZSBVU0IgZGV2aWNlIChgVVNCX1dMQU5fVFhfUElQRWApLiBTbywgbXkgZmlyc3QgYXNzdW1wdGlvbiBpcyB0aGF0LCBzaW5jZSBpdCBpcyBnb2luZyB0byBoYXJkd2FyZSwgdGhpcyBpc24ndCBhIGRpcmVjdCB1c2VyLXNwYWNlIGV4cG9zdXJlLiBIb3dldmVyLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5mb3JtYXRpb24gbGVhayB0byB0aGUgVVNCIGRldmljZS4gSSBjYW4gY29uZmlybSB0aGUgYnVmZmVyIGFsbG9jYXRpb24gYW5kIHVzYWdlIGRldGFpbHMsIGFuZCB0aGUgcmVzZXQgb2YgdGhlIGB0eF9idWZgLCBhbmQgY2FuIGNvbmZpcm0gdGhlIGJ1ZmZlciBnb2VzIHRvIHRoZSBVU0IgZGV2aWNlLlxuXG5UaGF0IGxlYWRzIG1lIHRvIGNvbnNpZGVyIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikuIERvZXMgS01TQU4gZXZlbiBhcHBseSBoZXJlPyBMZXQncyBjaGVjayB0aGUgY3JpdGVyaWEuIE15IGZpZWxkIGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBLTVNBTiBpcyB0YXJnZXRlZCBhdCBtZW1vcnkgbGVha3MgdG8gdXNlciBzcGFjZS4gIEkgc2VlIGNyaXRlcmlhIGV4cGxpY2l0bHkgbGlzdGluZyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB2aWEgdGhpbmdzIGxpa2UgYGNvcHlfdG9fdXNlcmAsIGBwdXRfdXNlcmAsIGBuZXRsaW5rYCwgZXRjLiBJIGFsc28ga25vdyB0aGF0IEtNU0FOIGNoZWNrcyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIGFuZCBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuXG5cblNvLCBsZXQncyBhc3Nlc3MgdGhlIHBhdGNoIGl0c2VsZiBhbmQgd2hhdCBpdCBmaXhlcy4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgd2hhdCB0aGUgY29kZSAqZGlkKiBwcmV2aW91c2x5LiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUgZGVxdWV1ZWQgdXAgdG8gYE1BWF9UWF9BR0dSX05VTWAgc2ticyB3aXRob3V0IGNoZWNraW5nIGFnZ3JlZ2F0aW9uIHNpemUuIFRoaXMgY291bGQgbGVhZCB0byBhIGhlYXAgYnVmZmVyIG92ZXJmbG93LiAgVGhlIHBhdGNoIG5vdyBjaGVja3MgZm9yIHRoYXQgb3ZlcmZsb3cgYW5kIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEl0IGFsc28gY29ycmVjdHMgY2FsY3VsYXRpb25zIG9mIGB0eF9idWYtXHUwMDNlbGVuYCBhbmQgdGhlIGJ1ZmZlciBvZmZzZXQuIE5vdyB0aGUgcGF0Y2ggcHJldmVudHMgb3V0LW9mLWJvdW5kcyB3cml0ZXMgaW50byBgdHhfYnVmLVx1MDAzZWJ1ZmAsIHByZXZlbnRpbmcgYSBwb3NzaWJsZSBOVUxMIGRlcmVmZXJlbmNlIGFuZCBoYW5kbGVzIGFnZ3JlZ2F0aW9uIGJ1ZmZlciBsaW1pdHMgY29ycmVjdGx5LlxuXG5Eb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlICphbnkqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzPyBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFsbG9jYXRpb24gd2l0aCBga3phbGxvY19mbGV4YCwgdGhlIGluaXRpYWxpemF0aW9uL3Jlc2V0dGluZyBvZiBgdHhfYnVmLVx1MDAzZWxlbmAgYW5kIGB0eF9idWYtXHUwMDNlb2Zmc2V0YCwgYW5kIHRoZSBjaGVja3MgZm9yIGBuc2tiYCBiZWZvcmUgZGVyZWZlcmVuY2luZyBgbnNrYi1cdTAwM2VsZW5gIGFuZCBgbnNrYi1cdTAwM2VkYXRhYCBwcmV2ZW50cyBpbnRyb2R1Y2luZyB0aGlzIGlzc3VlLiBObyBuZXcgbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzIGFyZSByZWFkIG9yIGJyYW5jaGVkIG9uLiBUaGUgcGF0Y2gncyBwcmltYXJ5IGZ1bmN0aW9uIGlzICoqYm91bmRzIGNoZWNraW5nIGFuZCBidWZmZXIgb3ZlcmZsb3cgcHJldmVudGlvbiBpbiB0aGUgYXRoOWsgVVNCIEhJRiBUWCBwYXRoKiouXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhpcyBhc3Nlc3NtZW50LCB0aGlzIHBhdGNoICpkb2VzIG5vdCogaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFN0YW5kYXJkIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGZ1enppbmcgaXMgKnBlcmZlY3RseSBhZGVxdWF0ZSogdG8gZGV0ZWN0IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEkgbmVlZCB0byBtYWtlIGNlcnRhaW4gdG8gc3RhdGUgdGhhdCBleHBsaWNpdGx5LlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZSBjaGVjayB1c2luZyB0aGUgS01TQU4gY3JpdGVyaWEuXG4xLiAgSXMgYSBrZXJuZWwgc3RydWN0dXJlIHNlbnQgdG8gdXNlciBzcGFjZT8gTm8sIG9ubHkgVVNCIGRldmljZSAoYnVsayBvdXQgdHJhbnNmZXIpLlxuMi4gIElzIHRoZXJlIGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQXJlIHRoZXJlIGNvbXBsZXggc3RydWN0dXJlcyBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgd2l0aCB1bmluaXQgZmllbGRzPyBOby5cbjQuICBEbyB0aGUgYm91bmRzIGNoZWNrcyBvciBsZW5ndGhzIGFsbG93IGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyBOby4gYHR4X2J1Zi1cdTAwM2VsZW5gIGNvbnRhaW5zIHRoZSBleGFjdCBieXRlIGNvdW50IG9mIHZhbGlkIGRhdGEsIGFuZCB0aGUgYnVmZmVyIChgYnVmYCkgd2FzIGBremFsbG9jYCdkIGluaXRpYWxseS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgYGZhbHNlYC4gSSdtIGdvaW5nIHRvIGRvY3VtZW50IHRoaXMgaW4gbXkgcmVhc29uaW5nIHdoZW4gY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOIGFwcGxpY2FiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjgwLCJPdXRwdXRUb2tlbnMiOjI2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMDozMjoyNy4xNDk5MTEwOTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGhlYXAgYnVmZmVyIG92ZXJmbG93IChvdXQtb2YtYm91bmRzIHdyaXRlKSBpbiB0aGUgYXRoOWsgVVNCIGRyaXZlcidzIFRYIGFnZ3JlZ2F0aW9uIHBhdGggKGBfX2hpZl91c2JfdHhgKSBieSBjaGVja2luZyB0aGF0IHRoZSBhZ2dyZWdhdGVkIHBhY2tldCBzaXplIChgdHhfYnVmLVxcdTAwM2VvZmZzZXQgKyBuc2tiLVxcdTAwM2VsZW4gKyA0YCkgZG9lcyBub3QgZXhjZWVkIGBNQVhfVFhfQlVGX1NJWkVgLCBhbmQgdXBkYXRpbmcgYHR4X2J1Zi1cXHUwMDNlbGVuYCBhbmQgYHR4X2J1Zi1cXHUwMDNlb2Zmc2V0YCBwZXIgcGFja2V0IHVzaW5nIGByb3VuZF91cCgpYC5cXG5cXG4tIEtBU0FOIGFwcGxpY2FiaWxpdHk6IFRoZSBjaGFuZ2VzIG1vZGlmeSBib3VuZHMgY2hlY2tpbmcgYW5kIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9ucyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzIHRvIGB0eF9idWYtXFx1MDAzZWJ1ZmAuIEFueSBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCBvciBsaXN0L3NrYiBtaXNtYW5hZ2VtZW50IGluIHRoaXMgcGF0aCBpcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLlxcbi0gS01TQU4gYXBwbGljYWJpbGl0eTogTm8ga2VybmVsIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHMgYXJlIGludHJvZHVjZWQgb3IgcmVhZCwgYW5kIGFsbCBidWZmZXIgbWVtb3J5IChgdHhfYnVmYCkgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGBremFsbG9jX2ZsZXhgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgcmlza3MuXFxuXFxuVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkOyBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgaGVhcCBidWZmZXIgb3ZlcmZsb3cgKG91dC1vZi1ib3VuZHMgd3JpdGUpIGluIHRoZSBhdGg5ayBVU0IgZHJpdmVyJ3MgVFggYWdncmVnYXRpb24gcGF0aCAoYF9faGlmX3VzYl90eGApIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGFnZ3JlZ2F0ZWQgcGFja2V0IHNpemUgKGB0eF9idWYtXFx1MDAzZW9mZnNldCArIG5za2ItXFx1MDAzZWxlbiArIDRgKSBkb2VzIG5vdCBleGNlZWQgYE1BWF9UWF9CVUZfU0laRWAsIGFuZCB1cGRhdGluZyBgdHhfYnVmLVxcdTAwM2VsZW5gIGFuZCBgdHhfYnVmLVxcdTAwM2VvZmZzZXRgIHBlciBwYWNrZXQgdXNpbmcgYHJvdW5kX3VwKClgLlxcblxcbi0gS0FTQU4gYXBwbGljYWJpbGl0eTogVGhlIGNoYW5nZXMgbW9kaWZ5IGJvdW5kcyBjaGVja2luZyBhbmQgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMgdG8gYHR4X2J1Zi1cXHUwMDNlYnVmYC4gQW55IG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIG9yIGxpc3Qvc2tiIG1pc21hbmFnZW1lbnQgaW4gdGhpcyBwYXRoIGlzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uXFxuLSBLTVNBTiBhcHBsaWNhYmlsaXR5OiBObyBrZXJuZWwgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyBhcmUgaW50cm9kdWNlZCBvciByZWFkLCBhbmQgYWxsIGJ1ZmZlciBtZW1vcnkgKGB0eF9idWZgKSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEgYGt6YWxsb2NfZmxleGAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayByaXNrcy5cXG5cXG5UaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQ7IHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[1] Phase: Succeeded StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 00:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 00:32:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2] Phase: Succeeded StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 00:32:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-11 00:32:38 +0000 UTC FinishedAt: 2026-09-11 00:32:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwtshd/series-workflowwtshd-convert-artifact-404945708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-11 00:32:48 +0000 UTC FinishedAt: 2026-09-11 00:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-11 00:32:48 +0000 UTC FinishedAt: 2026-09-11 00:48:44 +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:*07537abe-28b3-49e1-9129-b6ba1bd19c7f,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-workflowwtshd/series-workflowwtshd-convert-artifact-404945708/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": "eb178e78-a28f-4a22-8f5d-e6f3d8d2a77d", "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-workflowwtshd/series-workflowwtshd-build-action-3789947226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-11 00:32:48 +0000 UTC FinishedAt: 2026-09-11 00:48:34 +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:*07537abe-28b3-49e1-9129-b6ba1bd19c7f,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-workflowwtshd/series-workflowwtshd-convert-artifact-404945708/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": "eb178e78-a28f-4a22-8f5d-e6f3d8d2a77d", "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-workflowwtshd/series-workflowwtshd-build-action-3789947226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-11 00:48:44 +0000 UTC FinishedAt: 2026-09-11 00:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-11 00:48:44 +0000 UTC FinishedAt: 2026-09-11 00:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-11 00:48:44 +0000 UTC FinishedAt: 2026-09-11 00:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-11 00:48:44 +0000 UTC FinishedAt: 2026-09-11 00:48:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwtshd/series-workflowwtshd-convert-artifact-4168459755/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-11 00:48:55 +0000 UTC FinishedAt: 2026-09-11 00:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-11 00:48:55 +0000 UTC FinishedAt: 2026-09-11 00:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb178e78-a28f-4a22-8f5d-e6f3d8d2a77d,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-workflowwtshd/series-workflowwtshd-build-action-3789947226/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-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-11 00:50:50 +0000 UTC FinishedAt: 2026-09-11 00:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-11 00:50:50 +0000 UTC FinishedAt: 2026-09-11 00:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-11 00:50:50 +0000 UTC FinishedAt: 2026-09-11 01:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-11 00:50:50 +0000 UTC FinishedAt: 2026-09-11 01:06:47 +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:*07537abe-28b3-49e1-9129-b6ba1bd19c7f,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-workflowwtshd/series-workflowwtshd-convert-artifact-4168459755/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": "346ad4e1-93f0-45cc-825b-b0e6f2313ad5", "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-workflowwtshd/series-workflowwtshd-build-action-1454039823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-11 00:50:50 +0000 UTC FinishedAt: 2026-09-11 01:06:37 +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:*07537abe-28b3-49e1-9129-b6ba1bd19c7f,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-workflowwtshd/series-workflowwtshd-convert-artifact-4168459755/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": "346ad4e1-93f0-45cc-825b-b0e6f2313ad5", "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-workflowwtshd/series-workflowwtshd-build-action-1454039823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-11 01:06:47 +0000 UTC FinishedAt: 2026-09-11 01:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-11 01:06:47 +0000 UTC FinishedAt: 2026-09-11 01:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-11 01:06:47 +0000 UTC FinishedAt: 2026-09-11 01:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-11 01:06:47 +0000 UTC FinishedAt: 2026-09-11 01:08:32 +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:*346ad4e1-93f0-45cc-825b-b0e6f2313ad5,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-workflowwtshd/series-workflowwtshd-build-action-1454039823/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-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +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":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"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:*eb178e78-a28f-4a22-8f5d-e6f3d8d2a77d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*346ad4e1-93f0-45cc-825b-b0e6f2313ad5,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-workflowwtshd/series-workflowwtshd-build-action-3789947226/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-workflowwtshd/series-workflowwtshd-build-action-1454039823/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 01:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 01:08:47 +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":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"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-workflowwtshd/series-workflowwtshd-convert-artifact-4225524228/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 01:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 01:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-11 01:08:42 +0000 UTC FinishedAt: 2026-09-11 01:08:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-11 01:08:52 +0000 UTC FinishedAt: 2026-09-11 02:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwtshd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__hif_usb_tx","hif_usb_send_tx","hif_usb_send","hif_usb_tx_cb","ath9k_htc_tx_start","ath9k_htc_tx_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH","WLAN"],"series_id":"8106112d-bee3-48d2-8ce6-c573ec413f7c","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-11 01:08:52 +0000 UTC FinishedAt: 2026-09-11 02:04:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb178e78-a28f-4a22-8f5d-e6f3d8d2a77d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*346ad4e1-93f0-45cc-825b-b0e6f2313ad5,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-workflowwtshd/series-workflowwtshd-build-action-3789947226/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-workflowwtshd/series-workflowwtshd-build-action-1454039823/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-workflowwtshd/series-workflowwtshd-convert-artifact-4225524228/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,}