Name: series-workflowhg5p4 Phase: Failed StartedAt: 2026-09-06 14:54:27 +0000 UTC FinishedAt: 2026-09-06 14:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg5p4[0] Phase: Succeeded StartedAt: 2026-09-06 14:54:27 +0000 UTC FinishedAt: 2026-09-06 14:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg5p4[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 14:54:27 +0000 UTC FinishedAt: 2026-09-06 14:56:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMDQ2NWRhMzA4OThmMDY0ODVjNmE1YTY5MWZhYzI5NjUxZDZiZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNDo1NTozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5pbmRleCA2ODY0N2ZmNGJkZDI0Li5mOTY5MDg1ZmZmYjdkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5AQCAtNjY0OCw2ICYjNDM7NjY0OCw5IEBAIEtlcm5lbCBwYXJhbWV0ZXJzXG4gXG4gXHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHNcbiBcbiYjNDM7XHRcdFx0Qm90aCB0aGUgc2l6ZSBhbmQgdGhlIGFsaWdubWVudCBtdXN0IGJlIG11bHRpcGxlcyBvZlxuJiM0MztcdFx0XHR0aGUgcGFnZSBzaXplLlxuJiM0MztcbiBcdHJlc2VydmV0b3A9XHRbWDg2LTMyLEVBUkxZXVxuIFx0XHRcdEZvcm1hdDogbm5bS01HXVxuIFx0XHRcdFJlc2VydmVzIGEgaG9sZSBhdCB0aGUgdG9wIG9mIHRoZSBrZXJuZWwgdmlydHVhbFxuZGlmZiAtLWdpdCBhL21tL21lbWJsb2NrLmMgYi9tbS9tZW1ibG9jay5jXG5pbmRleCA0MzAyZmI0YWI4NWM3Li41ZTkzYjZkYTUzZTMwIDEwMDY0NFxuLS0tIGEvbW0vbWVtYmxvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtYmxvY2suY1xuQEAgLTI4MTYsMTIgJiM0MzsyODE2LDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApXG4gXHRpZiAoKnAgIT0gJiMzOTs6JiMzOTspXG4gXHRcdGdvdG8gZXJyX3BhcmFtO1xuIFxuJiM0MztcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7cmVzZXJ2ZV9tZW06IHNpemUgYW5kIGFsaWduIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoZSBwYWdlIHNpemVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qXG4gXHQgKiBtZW1ibG9ja19waHlzX2FsbG9jKCkgZG9lc24mIzM5O3QgbGlrZSBhIHplcm8gc2l6ZSBhbGlnbixcbiBcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXG4gXHQgKi9cbi1cdGlmIChhbGlnbiBcdTAwM2MgU01QX0NBQ0hFX0JZVEVTKVxuLVx0XHRhbGlnbiA9IFNNUF9DQUNIRV9CWVRFUztcbiYjNDM7XHRpZiAoIWFsaWduKVxuJiM0MztcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4gXG4gXHRuYW1lID0gcCAmIzQzOyAxO1xuIFx0bGVuID0gc3RybGVuKG5hbWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDA0NjVkYTMwODk4ZjA2NDg1YzZhNWE2OTFmYWMyOTY1MWQ2YmVlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMTQ6NTU6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDY4NjQ3ZmY0YmRkMjQuLmY5NjkwODVmZmZiN2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC02NjQ4LDYgJiM0Mzs2NjQ4LDkgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJcmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHMKIAomIzQzOwkJCUJvdGggdGhlIHNpemUgYW5kIHRoZSBhbGlnbm1lbnQgbXVzdCBiZSBtdWx0aXBsZXMgb2YKJiM0MzsJCQl0aGUgcGFnZSBzaXplLgomIzQzOwogCXJlc2VydmV0b3A9CVtYODYtMzIsRUFSTFldCiAJCQlGb3JtYXQ6IG5uW0tNR10KIAkJCVJlc2VydmVzIGEgaG9sZSBhdCB0aGUgdG9wIG9mIHRoZSBrZXJuZWwgdmlydHVhbApkaWZmIC0tZ2l0IGEvbW0vbWVtYmxvY2suYyBiL21tL21lbWJsb2NrLmMKaW5kZXggNDMwMmZiNGFiODVjNy4uNWU5M2I2ZGE1M2UzMCAxMDA2NDQKLS0tIGEvbW0vbWVtYmxvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1ibG9jay5jCkBAIC0yODE2LDEyICYjNDM7MjgxNiwxNyBAQCBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKQogCWlmICgqcCAhPSAmIzM5OzomIzM5OykKIAkJZ290byBlcnJfcGFyYW07CiAKJiM0MzsJaWYgKCFJU19BTElHTkVEKHNpemUsIFBBR0VfU0laRSkgfHwgIUlTX0FMSUdORUQoYWxpZ24sIFBBR0VfU0laRSkpIHsKJiM0MzsJCXByX2VycigmIzM0O3Jlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogbWVtYmxvY2tfcGh5c19hbGxvYygpIGRvZXNuJiMzOTt0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sCiAJICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC4KIAkgKi8KLQlpZiAoYWxpZ24gJmx0OyBTTVBfQ0FDSEVfQllURVMpCi0JCWFsaWduID0gU01QX0NBQ0hFX0JZVEVTOwomIzQzOwlpZiAoIWFsaWduKQomIzQzOwkJYWxpZ24gPSBQQUdFX1NJWkU7CiAKIAluYW1lID0gcCAmIzQzOyAxOwogCWxlbiA9IHN0cmxlbihuYW1lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBSZXNlcnZhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHVwZGF0aW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlc2VydmVfbWVtYCBrZXJuZWwgcGFyYW1ldGVyIGluIGBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dGAuIE5vdGhpbmcgdG9vIGV4Y2l0aW5nIHRoZXJlLCBqdXN0IG1ha2luZyBzdXJlIHRoZSB1c2VyLWZhY2luZyBkb2N1bWVudGF0aW9uIGlzIHVwLXRvLWRhdGUuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBtbS9tZW1ibG9jay5jYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgbW9kaWZpZWQgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4KCkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgY2hhbmdpbmcgaG93IHRoZSBhbGlnbm1lbnQgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgZm9yY2VkIGFuIGFsaWdubWVudCBvZiBhdCBsZWFzdCBgU01QX0NBQ0hFX0JZVEVTYCBpZiBub25lIHdhcyBnaXZlbiwgYW5kIG5vdyBpdCBkZWZhdWx0cyB0byBgUEFHRV9TSVpFYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFRoZSBjb21tZW50IGhpbnRzIGF0IGBtZW1ibG9ja19waHlzX2FsbG9jKClgIG5vdCBsaWtpbmcgemVybyBhbGlnbm1lbnQsIGJ1dCBhbHNvIHRoZSBjb21tYW5kIGJlaW5nIE9LIHdpdGggaXQuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIHdoeSBkZWZhdWx0IHRvIGBQQUdFX1NJWkVgIG5vdyBpbnN0ZWFkIG9mIGBTTVBfQ0FDSEVfQllURVNgPyBJcyBpdCB0byBhbGxvdyBzbWFsbGVyIGFsbG9jYXRpb25zLCBvciBpcyBpdCBhIGJyb2FkZXIgY29tcGF0aWJpbGl0eSBmaXg/IExldCBtZSBjaGVjayB0aGUgY29kZSB1c2luZyB0aGUgYHJlYWQtZmlsZWAgY29tbWFuZC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBjb250ZXh0IG9mIGBtZW1ibG9ja19waHlzX2FsbG9jKClgIGFuZCBzZWUgaG93IHRoZSBhbGlnbm1lbnQgYWZmZWN0cyBpdHMgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IHJlc2VydmF0aW9uIHN0cmF0ZWdpZXMuIEkgaG9wZSB0aGVyZSYjMzk7cyBhIGdvb2QgZXhwbGFuYXRpb24gaW4gdGhlIGNvbW1pdCBtZXNzYWdlIG9yIHRoZSBhc3NvY2lhdGVkIGJ1ZyByZXBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tZW1ibG9jay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyODAwOlx0XG4yODAxOlx0XHQvKiBDaGVjayBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xuMjgwMjpcdFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcdTAwM2U9IFJFU0VSVkVfTUVNX01BWF9FTlRSSUVTKSB7XG4yODAzOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXG5cJiMzNDspO1xuMjgwNDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjgwNTpcdFx0fVxuMjgwNjpcdFxuMjgwNzpcdFx0b2xkcCA9IHA7XG4yODA4Olx0XHRzaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG4yODA5Olx0XHRpZiAoIXNpemUgfHwgcCA9PSBvbGRwKVxuMjgxMDpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTE6XHRcbjI4MTI6XHRcdGlmICgqcCAhPSAmIzM5OzomIzM5OylcbjI4MTM6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODE0Olx0XG4yODE1Olx0XHRhbGlnbiA9IG1lbXBhcnNlKHAmIzQzOzEsIFx1MDAyNnApO1xuMjgxNjpcdFx0aWYgKCpwICE9ICYjMzk7OiYjMzk7KVxuMjgxNzpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTg6XHRcbjI4MTk6XHRcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4yODIwOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcblwmIzM0Oyk7XG4yODIxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjgyMjpcdFx0fVxuMjgyMzpcdFxuMjgyNDpcdFx0LypcbjI4MjU6XHRcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2VzbiYjMzk7dCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuMjgyNjpcdFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbjI4Mjc6XHRcdCAqL1xuMjgyODpcdFx0aWYgKCFhbGlnbilcbjI4Mjk6XHRcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4yODMwOlx0XG4yODMxOlx0XHRuYW1lID0gcCAmIzQzOyAxO1xuMjgzMjpcdFx0bGVuID0gc3RybGVuKG5hbWUpO1xuMjgzMzpcdFxuMjgzNDpcdFx0LyogbmFtZSBuZWVkcyB0byBoYXZlIGxlbmd0aCBidXQgbm90IHRvbyBiaWcgKi9cbjI4MzU6XHRcdGlmICghbGVuIHx8IGxlbiBcdTAwM2U9IFJFU0VSVkVfTUVNX05BTUVfU0laRSlcbjI4MzY6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODM3Olx0XG4yODM4Olx0XHQvKiBNYWtlIHN1cmUgdGhhdCBuYW1lIGhhcyB0ZXh0ICovXG4yODM5Olx0XHRmb3IgKHAgPSBuYW1lOyAqcDsgcCYjNDM7JiM0MzspIHtcbjI4NDA6XHRcdFx0aWYgKCFpc3NwYWNlKCpwKSlcbjI4NDE6XHRcdFx0XHRicmVhaztcbjI4NDI6XHRcdH1cbjI4NDM6XHRcdGlmICghKnApXG4yODQ0Olx0XHRcdGdvdG8gZXJyX3BhcmFtO1xuMjg0NTpcdFxuMjg0NjpcdFx0LyogTWFrZSBzdXJlIHRoZSBuYW1lIGlzIG5vdCBhbHJlYWR5IHVzZWQgKi9cbjI4NDc6XHRcdGlmIChyZXNlcnZlX21lbV9maW5kX2J5X25hbWUobmFtZSwgXHUwMDI2c3RhcnQsIFx1MDAyNnRtcCkpIHtcbjI4NDg6XHRcdFx0cHJfZXJyKFwmIzM0O3Jlc2VydmVfbWVtOiBuYW1lIFxcXCYjMzQ7JXNcXFwmIzM0OyB3YXMgYWxyZWFkeSB1c2VkXFxuXCYjMzQ7LCBuYW1lKTtcbjI4NDk6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBgcmVzZXJ2ZV9tZW1gIGluIHRoZSBNZW1vcnkgQmxvY2sgQWxsb2NhdG9yKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJlc2VydmVfbWVtYCBzaXR1YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIGl0cyB1c2FnZSBhbmQgaW5pdGlhbGl6YXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYG1tL21lbWJsb2NrLmNgIGZpbGU7IHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCBtZW1vcnkgYmxvY2sgbWFuYWdlbWVudCByb3V0aW5lcy4gSSYjMzk7bGwgZm9jdXMgb24gbGluZXMgYXJvdW5kIDI4MDAgYW5kIHRoZW4gc2NhbiBmdXJ0aGVyLCBzcGVjaWZpY2FsbHkgcGFzdCAyODUwLCB0byBzZWUgaG93IGFuZCB3aGVyZSBgcmVzZXJ2ZV9tZW1gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCwgb3IgbW9yZSBpbXBvcnRhbnRseSwgKnNldCB1cCogd2l0aGluIHRoYXQgbW9kdWxlLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBpbml0aWFsaXphdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBtb3N0IGNvbnRleHQuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjYWxsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG1lbW9yeSBhbGxvY2F0aW9uIHNjaGVtZSBvZiB0aGUga2VybmVsLiBMb29raW5nIGZvciB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWJsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4NTA6XHRcdH1cbjI4NTE6XHRcbjI4NTI6XHRcdC8qIFBpY2sgcHJldmlvdXMgYWxsb2NhdGlvbnMgdXAgZnJvbSBLSE8gaWYgYXZhaWxhYmxlICovXG4yODUzOlx0XHRpZiAocmVzZXJ2ZV9tZW1fa2hvX3Jldml2ZShuYW1lLCBzaXplLCBhbGlnbikpXG4yODU0Olx0XHRcdHJldHVybiAxO1xuMjg1NTpcdFxuMjg1NjpcdFx0LyogVE9ETzogQWxsb2NhdGlvbiBtdXN0IGJlIG91dHNpZGUgb2Ygc2NyYXRjaCByZWdpb24gKi9cbjI4NTc6XHRcdHN0YXJ0ID0gbWVtYmxvY2tfcGh5c19hbGxvYyhzaXplLCBhbGlnbik7XG4yODU4Olx0XHRpZiAoIXN0YXJ0KSB7XG4yODU5Olx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbWVtYmxvY2sgYWxsb2NhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuMjg2MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjI4NjE6XHRcdH1cbjI4NjI6XHRcbjI4NjM6XHRcdHJlc2VydmVkX21lbV9hZGQoc3RhcnQsIHNpemUsIG5hbWUpO1xuMjg2NDpcdFxuMjg2NTpcdFx0cmV0dXJuIDE7XG4yODY2Olx0ZXJyX3BhcmFtOlxuMjg2NzpcdFx0cHJfZXJyKFwmIzM0O3Jlc2VydmVfbWVtOiBlbXB0eSBvciBtYWxmb3JtZWQgcGFyYW1ldGVyXFxuXCYjMzQ7KTtcbjI4Njg6XHRcdHJldHVybiAtRUlOVkFMO1xuMjg2OTpcdH1cbjI4NzA6XHRfX3NldHVwKFwmIzM0O3Jlc2VydmVfbWVtPVwmIzM0OywgcmVzZXJ2ZV9tZW0pO1xuMjg3MTpcdFxuMjg3MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjI4NzM6XHQjaWZkZWYgQ09ORklHX0FSQ0hfS0VFUF9NRU1CTE9DS1xuMjg3NDpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZmxhZ25hbWVbXSA9IHtcbjI4NzU6XHRcdFtpbG9nMihNRU1CTE9DS19IT1RQTFVHKV0gPSBcJiMzNDtIT1RQTFVHXCYjMzQ7LFxuMjg3NjpcdFx0W2lsb2cyKE1FTUJMT0NLX01JUlJPUildID0gXCYjMzQ7TUlSUk9SXCYjMzQ7LFxuMjg3NzpcdFx0W2lsb2cyKE1FTUJMT0NLX05PTUFQKV0gPSBcJiMzNDtOT01BUFwmIzM0OyxcbjI4Nzg6XHRcdFtpbG9nMihNRU1CTE9DS19EUklWRVJfTUFOQUdFRCldID0gXCYjMzQ7RFJWX01OR1wmIzM0OyxcbjI4Nzk6XHRcdFtpbG9nMihNRU1CTE9DS19SU1JWX05PSU5JVCldID0gXCYjMzQ7UlNWX05JVFwmIzM0OyxcbjI4ODA6XHRcdFtpbG9nMihNRU1CTE9DS19SU1JWX0tFUk4pXSA9IFwmIzM0O1JTVl9LRVJOXCYjMzQ7LFxuMjg4MTpcdFx0W2lsb2cyKE1FTUJMT0NLX0tIT19TQ1JBVENIKV0gPSBcJiMzNDtLSE9fU0NSQVRDSFwmIzM0OyxcbjI4ODI6XHR9O1xuMjg4MzpcdFxuMjg4NDpcdHN0YXRpYyBpbnQgbWVtYmxvY2tfZGVidWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnByaXZhdGUpXG4yODg1Olx0e1xuMjg4NjpcdFx0c3RydWN0IG1lbWJsb2NrX3R5cGUgKnR5cGUgPSBtLVx1MDAzZXByaXZhdGU7XG4yODg3Olx0XHRzdHJ1Y3QgbWVtYmxvY2tfcmVnaW9uICpyZWc7XG4yODg4Olx0XHRpbnQgaSwgaiwgbmlkO1xuMjg4OTpcdFx0dW5zaWduZWQgaW50IGNvdW50ID0gQVJSQVlfU0laRShmbGFnbmFtZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRWFybHkgQm9vdCBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYF9fc2V0dXAoJiMzNDtyZXNlcnZlX21lbT0mIzM0OywgcmVzZXJ2ZV9tZW0pO2AgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGFuIGVhcmx5IGJvb3QgcGFyYW1ldGVyIGhhbmRsZXIg4oCTIHVzaW5nIGBfX3NldHVwYCwgd2hpY2ggaXMgYSBkZWFkIGdpdmVhd2F5LCBsaWtlIGBlYXJseV9wYXJhbWAgb3IgYF9faW5pdGAuIFRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BwaW5nIGludG8gbXkgaGVhZCBpczogY2FuIFN5emthbGxlciBvciBhbnkgb3RoZXIgcnVudGltZSBmdXp6aW5nIGFwcHJvYWNoIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBlYXJseSBib290IHBhcnNpbmcgc3RhZ2UgYW5kLCBzcGVjaWZpY2FsbHksIHRhcmdldCBzb21ldGhpbmcgbGlrZSBgX19zZXR1cCgmIzM0O3Jlc2VydmVfbWVtPSYjMzQ7LCAuLi4pYD8KCkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gQmVmb3JlIEkganVtcCB0byBjb25jbHVzaW9ucywgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcuIEkgaGF2ZSB0byBzZWUgaWYgYHJlc2VydmVfbWVtYCBvciBhbnkgc2ltaWxhcmx5IG5hbWVkIGZ1bmN0aW9uIGlzIGV2ZW4gY2FsbGVkICphZnRlciogYm9vdC11cC4gSWYgaXQmIzM5O3MgKnNvbGVseSogZm9yIGVhcmx5IGJvb3QsIGl0JiMzOTtzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgKGFuZCBsaWtlbHkgbW9yZSBkaWZmaWN1bHQpIHRhcmdldC4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwIGFuZCBjaGVjayB0aGUgY29kZWJhc2UuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNlcnZlX21lbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODYzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dD05OD1LZXJuZWwgcGFyYW1ldGVyc1xuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTU0NDktXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo1NDUwOlx0cG5wX3Jlc2VydmVfbWVtPVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNTQ1MS1cdFx0XHRbSVNBUE5QXSBFeGNsdWRlIG1lbW9yeSByZWdpb25zIGZvciB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC02NjI4LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NjYyOTpcdHJlc2VydmVfbWVtPVx0W1JBTV1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MzAtXHRcdFx0Rm9ybWF0OiBubltLTUddOlx1MDAzY2FsaWduXHUwMDNlOlx1MDAzY2xhYmVsXHUwMDNlXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY0OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjY2NDk6XHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2NTAtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgxOS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4MjA6XHRcdFx0QWx0ZXJuYXRpdmVseSwgdGhlIG1lbW9yeSBjYW4gYmUgcmVzZXJ2ZWQgYnkgdGhlIHJlc2VydmVfbWVtIG9wdGlvbjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjEtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo3ODIyOlx0XHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBAdHJhY2VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjMtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgzNy1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4Mzg6XHRcdFx0XHRyZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcF50cmFjZW9mZl50cmFjZXByaW50a0B0cmFjZSxzY2hlZCxpcnFcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MzktXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0PTM5PVRoZSBuZXcga2VybmVsIHdpbGwgYm9vdCB1cCBhbmQgY29udGFpbiBzb21lIG9mIHRoZSBwcmV2aW91cyBrZXJuZWwmIzM5O3Mgc3RhdGUuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2toby5yc3QtNDAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2toby5yc3Q6NDE6Rm9yIGV4YW1wbGUsIGlmIHlvdSB1c2VkIGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIHRvIGNyZWF0ZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQyLWFuIGVhcmx5IG1lbW9yeSByZXNlcnZhdGlvbiwgdGhlIG5ldyBrZXJuZWwgd2lsbCBoYXZlIHRoYXQgbWVtb3J5IGF0IHRoZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdD0xMDM9YWxzbyB0aGVyZSBhcmUgYSBzZXJpZXMgb2Yga2VybmVsIHBhcmFtZXRlcnM6OlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdC0xMDctXHRwbnBfcmVzZXJ2ZV9pbz1pbzEsc2l6ZTFbLGlvMixzaXplMl0gLi4uLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0OjEwODpcdHBucF9yZXNlcnZlX21lbT1tZW0xLHNpemUxWyxtZW0yLHNpemUyXSAuLi4uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3BucC5yc3QtMTA5LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q9MjA9YW5kIHR5cGUgb2YgdGhlIG1lbW9yeSBhcmVhIGFyZSBzZXQgdXNpbmcgdGhyZWUgdmFyaWFibGVzOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjUtICAqIGBgbWVtX3R5cGVgYCB0byBzcGVjaWZ5IGlmIHRoZSBtZW1vcnkgdHlwZSAoZGVmYXVsdCBpcyBwZ3Byb3Rfd3JpdGVjb21iaW5lKS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MjY6ICAqIGBgbWVtX25hbWVgYCB0byBzcGVjaWZ5IGEgbWVtb3J5IHJlZ2lvbiBkZWZpbmVkIGJ5IGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTI3LSAgICBsaW5lIHBhcmFtZXRlci5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0PTYyPVNldHRpbmcgdGhlIHJhbW9vcHMgcGFyYW1ldGVycyBjYW4gYmUgZG9uZSBpbiBzZXZlcmFsIGRpZmZlcmVudCBtYW5uZXJzOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTIyLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdDoxMjM6IEQuIFVzaW5nIGEgcmVnaW9uIG9mIG1lbW9yeSByZXNlcnZlZCB2aWEgYGByZXNlcnZlX21lbWBgIGNvbW1hbmQgbGluZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdDoxMjQ6ICAgIHBhcmFtZXRlci4gVGhlIGFkZHJlc3MgYW5kIHNpemUgd2lsbCBiZSBkZWZpbmVkIGJ5IHRoZSBgYHJlc2VydmVfbWVtYGBcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI1OiAgICBwYXJhbWV0ZXIuIE5vdGUsIHRoYXQgYGByZXNlcnZlX21lbWBgIG1heSBub3QgYWx3YXlzIGFsbG9jYXRlIG1lbW9yeVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMjYtICAgIGluIHRoZSBzYW1lIGxvY2F0aW9uLCBhbmQgY2Fubm90IGJlIHJlbGllZCB1cG9uLiBUZXN0aW5nIHdpbGwgbmVlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMjctICAgIHRvIGJlIGRvbmUsIGFuZCBpdCBtYXkgbm90IHdvcmsgb24gZXZlcnkgbWFjaGluZSwgbm9yIGV2ZXJ5IGtlcm5lbC5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI4OiAgICBDb25zaWRlciB0aGlzIGEgXCYjMzQ7YmVzdCBlZmZvcnRcJiMzNDsgYXBwcm9hY2guIFRoZSBgYHJlc2VydmVfbWVtYGAgb3B0aW9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyOS0gICAgdGFrZXMgYSBzaXplLCBhbGlnbm1lbnQgYW5kIG5hbWUgYXMgYXJndW1lbnRzLiBUaGUgbmFtZSBpcyB1c2VkXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMzEtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEzMjpcdHJlc2VydmVfbWVtPTJNOjQwOTY6b29wcyAgcmFtb29wcy5tZW1fbmFtZT1vb3BzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEzMy1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvcG93ZXJwYy9maXJtd2FyZS1hc3Npc3RlZC1kdW1wLnJzdD0yNjQ9Tk9URTpcbkRvY3VtZW50YXRpb24vYXJjaC9wb3dlcnBjL2Zpcm13YXJlLWFzc2lzdGVkLWR1bXAucnN0OjI2NTogICAgIDEuICYjMzk7ZmFkdW1wX3Jlc2VydmVfbWVtPSYjMzk7IHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBJbnN0ZWFkXG5Eb2N1bWVudGF0aW9uL2FyY2gvcG93ZXJwYy9maXJtd2FyZS1hc3Npc3RlZC1kdW1wLnJzdC0yNjYtICAgICAgICB1c2UgJiMzOTtjcmFzaGtlcm5lbD0mIzM5OyB0byBzcGVjaWZ5IHNpemUgb2YgdGhlIG1lbW9yeSB0byByZXNlcnZlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3g4Ni9wYXQucnN0PTM0PXRoZWlyIGludGVuZGVkIHVzYWdlIGFuZCB0aGVpciBtZW1vcnkgYXR0cmlidXRlIHJlbGF0aW9uc2hpcHMuIEludGVybmFsbHksXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3Q6MzU6dGhlc2UgQVBJcyB1c2UgYSByZXNlcnZlX21lbXR5cGUoKS9mcmVlX21lbXR5cGUoKSBpbnRlcmZhY2Ugb24gdGhlIHBoeXNpY2FsXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3QtMzYtYWRkcmVzcyByYW5nZSB0byBhdm9pZCBhbnkgYWxpYXNpbmcuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTEwNj1Bbm90aGVyIG1vcmUgZ2VuZXJpYyBidXQgbGVzcyByb2J1c3Qgd2F5IHRvIGFsbG9jYXRlIGEgcmluZyBidWZmZXIgbWFwcGluZ1xuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwNzphdCBib290IGlzIHdpdGggdGhlIFwmIzM0O3Jlc2VydmVfbWVtXCYjMzQ7IG9wdGlvbjo6XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTA4LVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwOTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTEwLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExMTpUaGUgcmVzZXJ2ZV9tZW0gb3B0aW9uIGFib3ZlIHdpbGwgZmluZCAxMiBtZWdhYnl0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGF0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTEyLWJvb3QgdXAsIGFuZCBhbGlnbiBpdCBieSA0MDk2IGJ5dGVzLiBJdCB3aWxsIGxhYmVsIHRoaXMgbWVtb3J5IGFzIFwmIzM0O3RyYWNlXCYjMzQ7XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTExNT1UaGUgdHJhY2VfaW5zdGFuY2Ugb3B0aW9uIGNyZWF0ZXMgYSBcJiMzNDtib290X21hcFwmIzM0OyBpbnN0YW5jZSBhbmQgd2lsbCB1c2UgdGhlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTE2Om1lbW9yeSByZXNlcnZlZCBieSByZXNlcnZlX21lbSB0aGF0IHdhcyBsYWJlbGVkIGFzIFwmIzM0O3RyYWNlXCYjMzQ7LiBUaGlzIG1ldGhvZCBpc1xuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTExNy1tb3JlIGdlbmVyaWMgYnV0IG1heSBub3QgYmUgYXMgcmVsaWFibGUuIER1ZSB0byBLQVNMUiwgdGhlIG1lbW9yeSByZXNlcnZlZFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExODpieSByZXNlcnZlX21lbSBtYXkgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHNhbWUgbG9jYXRpb24uIElmIHRoaXMgaGFwcGVucyxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMTktdGhlbiB0aGUgcmluZyBidWZmZXIgd2lsbCBub3QgYmUgZnJvbSB0aGUgcHJldmlvdXMgYm9vdCBhbmQgd2lsbCBiZSByZXNldC5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTIxPVNvbWV0aW1lcywgYnkgdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCBpdCBjYW4ga2VlcCBLQVNMUiBmcm9tIG1vdmluZyB0aGluZ3NcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMjI6YXJvdW5kIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCB3aWxsIG1vdmUgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXNlcnZlX21lbS4gQnlcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMjMtdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCB5b3UgbWF5IGZpbmQgYmV0dGVyIHRoYXQgdGhlIGJ1ZmZlciBpcyBtb3JlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTI0PWNvbnNpc3RlbnQgdG8gd2hlcmUgaXQgaXMgcGxhY2VkOjpcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTI2OiAgcmVzZXJ2ZV9tZW09MTJNOjB4MjAwMDAwMDp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyNy1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTU0PUZyb20gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6OlxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1NS1cbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxNTY6ICByZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcF50cmFjZXByaW50a150cmFjZW9mZkB0cmFjZVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTY5PWJhY2t1cCBpbnN0YW5jZS4gRnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZTo6XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTcwLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjE3MTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlLHNjaGVkLGlycSB0cmFjZV9pbnN0YW5jZT1iYWNrdXA9Ym9vdF9tYXBcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xNzItXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMS0gKi9cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM6MjI6aW50IF9fd2VhayBvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMy17XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYz0yNz12b2lkIF9faW5pdCBvbWFwX3Jlc2VydmUodm9pZClcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmMtMjgte1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYzoyOTpcdG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jOjMwOlx0b21hcF9iYXJyaWVyX3Jlc2VydmVfbWVtYmxvY2soKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmMtMzEtfVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg9MTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwNDR4eF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAqY21kKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc0LSNpZmRlZiBDT05GSUdfT01BUF9JTlRFUkNPTk5FQ1RfQkFSUklFUlxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaDoxNzU6dm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc2LXZvaWQgb21hcF9iYXJyaWVyc19pbml0KHZvaWQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzctI2Vsc2VcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg6MTc4OnN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzkte1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuYz05OD12b2lkIG9tYXBfc21jMSh1MzIgZm4sIHUzMiBhcmcpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jLTExMC0vKiBBbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIHNhdmUgc2VjdXJlIHJhbSAqL1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jOjExMTppbnQgX19pbml0IG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmMtMTEyLXtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg9NzI9ZXh0ZXJuIHUzMiBvbWFwX3NtYzModTMyIGlkLCB1MzIgcHJvY2VzcywgdTMyIGZsYWcsIHUzMiBwYXJncyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg6NzM6ZXh0ZXJuIGludCBvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuaC03NC1leHRlcm4gdTMyIHNhdmVfc2VjdXJlX3JhbV9jb250ZXh0KHUzMiBhcmdzX3BhKTtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jPTE0Nj1vbWFwX2FyY2hfaW5pdGNhbGwob21hcDRfc3JhbV9pbml0KTtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE0OC0vKiBTdGVhbCBvbmUgcGFnZSBwaHlzaWNhbCBtZW1vcnkgZm9yIGJhcnJpZXIgaW1wbGVtZW50YXRpb24gKi9cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcDQtY29tbW9uLmM6MTQ5OnZvaWQgX19pbml0IG9tYXBfYmFycmllcl9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE1MC17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jPTI5NT12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0MS1cdFx0XHQgKiB0YWJsZSBvdmVycmlkZXMgcGFzc2VkIHZpYSBpbml0cmFtZnMsIHdoaWNoIGFyZVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jOjM0MjpcdFx0XHQgKiByZXNlcnZlZCBpbiBtZW1vcnkgdXNpbmcgYXJjaF9yZXNlcnZlX21lbV9hcmVhKClcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYy0zNDMtXHRcdFx0ICogYmVsb3cuIEFzIHRoaXMgcGFydGljdWxhciB1c2UgY2FzZSBvbmx5IHJlcXVpcmVzXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jPTM4OT1pbnQgYXBlaV9jbGFpbV9zZWEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNS1cbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYzo0MzY6dm9pZCBhcmNoX3Jlc2VydmVfbWVtX2FyZWEoYWNwaV9waHlzaWNhbF9hZGRyZXNzIGFkZHIsIHNpemVfdCBzaXplKVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNy17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYz0yMTA9c3RhdGljIHZvaWQgX19pbml0IHJlcXVlc3Rfc3RhbmRhcmRfcmVzb3VyY2VzKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDUtXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jOjI0NjpzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbWJsb2NrX3Jlc2VydmVkX3JlZ2lvbnModm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmMtMjQ3LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3MS19XG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jOjI3MjphcmNoX2luaXRjYWxsKHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyk7XG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3My1cbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jPTM0Mz1hY3BpX251bWFfeDJhcGljX2FmZmluaXR5X2luaXQoc3RydWN0IGFjcGlfc3JhdF94MmFwaWNfY3B1X2FmZmluaXR5ICpwYSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3Ny1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9hY3BpLmM6Mzc4OnZvaWQgX19pbml0IGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYShhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkciwgc2l6ZV90IHNpemUpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3OS17XG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NTQxPWFyY2hfaW5pdGNhbGwoYXJjaF9yZXNlcnZlX3Bpb19yYW5nZSk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDItXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo1NDM6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jLTU2OC19XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo1Njk6YXJjaF9pbml0Y2FsbChyZXNlcnZlX21lbWJsb2NrX3Jlc2VydmVkX3JlZ2lvbnMpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNTcwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mYWR1bXAuaD0zNT1leHRlcm4gaW50IGVhcmx5X2luaXRfZHRfc2Nhbl9md19kdW1wKHVuc2lnbmVkIGxvbmcgbm9kZSwgY29uc3QgY2hhciAqdW5hbWUsXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmgtMzYtXHRcdFx0XHQgICAgICBpbnQgZGVwdGgsIHZvaWQgKmRhdGEpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oOjM3OmV4dGVybiBpbnQgZmFkdW1wX3Jlc2VydmVfbWVtKHZvaWQpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oLTM4LSNlbmRpZlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9ODI9dm9pZCBfX2luaXQgZmFkdW1wX2NtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy05Ny1cdCAqIFtiYXNlLCBlbmQpIHNob3VsZCBiZSByZXNlcnZlZCBkdXJpbmcgZWFybHkgaW5pdCBpblxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo5ODpcdCAqIGZhZHVtcF9yZXNlcnZlX21lbSgpLiBObyBuZWVkIHRvIGNoZWNrIHRoaXMgaGVyZSBhc1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy05OS1cdCAqIGNtYV9pbml0X3Jlc2VydmVkX21lbSgpIGFscmVhZHkgY2hlY2tzIGZvciBvdmVybGFwLlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9MzIyPXN0YXRpYyBfX2luaXQgdTY0IGZhZHVtcF9jYWxjdWxhdGVfcmVzZXJ2ZV9zaXplKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjctXHRpZiAoZndfZHVtcC5yZXNlcnZlX2Jvb3R2YXIpXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjMyODpcdFx0cHJfd2FybihcJiMzNDsmIzM5O2ZhZHVtcF9yZXNlcnZlX21lbT0mIzM5OyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAmIzM5O2NyYXNoa2VybmVsPSYjMzk7IHBhcmFtZXRlci5cXG5cJiMzNDspO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjktXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNTgtXHRcdC8qXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjM1OTpcdFx0ICogJiMzOTtmYWR1bXBfcmVzZXJ2ZV9tZW09JiMzOTsgaXMgYmVpbmcgdXNlZCB0byByZXNlcnZlIG1lbW9yeVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNjAtXHRcdCAqIGZvciBmaXJtd2FyZS1hc3Npc3RlZCBkdW1wLlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9NDkyPXN0YXRpYyBib29sIF9faW5pdCBvdmVybGFwc19yZXNlcnZlZF9yYW5nZXModTY0IGJhc2UsIHU2NCBlbmQsIGludCAqaWR4KVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE3LSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo1MTg6c3RhdGljIHU2NCBfX2luaXQgZmFkdW1wX2xvY2F0ZV9yZXNlcnZlX21lbSh1NjQgYmFzZSwgdTY0IHNpemUpXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTUxOS17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NDgtXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjU0OTppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NTAte1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjE4LVx0XHQgKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NjE5Olx0XHRiYXNlID0gZmFkdW1wX2xvY2F0ZV9yZXNlcnZlX21lbShiYXNlLCBzaXplKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjIwLVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9NjY4PWVhcmx5X3BhcmFtKFwmIzM0O2ZhZHVtcFwmIzM0OywgZWFybHlfZmFkdW1wX3BhcmFtKTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3MC0vKlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzE6ICogTG9vayBmb3IgZmFkdW1wX3Jlc2VydmVfbWVtPSBjbWRsaW5lIG9wdGlvblxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzI6ICogVE9ETzogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gJiMzOTtmYWR1bXBfcmVzZXJ2ZV9tZW09JiMzOTsgcGFyYW1ldGVyLFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzMtICogICAgICAgdGhlIHNvb25lciAmIzM5O2NyYXNoa2VybmVsPSYjMzk7IHBhcmFtZXRlciBpcyBhY2N1c3RvbWVkIHRvLlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzQtICovXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY3NTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9mYWR1bXBfcmVzZXJ2ZV9tZW0oY2hhciAqcClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjc2LXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4MC19XG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY4MTplYXJseV9wYXJhbShcJiMzNDtmYWR1bXBfcmVzZXJ2ZV9tZW1cJiMzNDssIGVhcmx5X2ZhZHVtcF9yZXNlcnZlX21lbSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4Mi1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTE4Mjc9aW50IF9faW5pdCBlYXJseV9pbml0X2R0X3NjYW5fZndfZHVtcCh1bnNpZ25lZCBsb25nIG5vZGUsIGNvbnN0IGNoYXIgKnVuYW1lLFxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMTg0MS0gKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MTg0MjppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0xODQzLXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTg9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY0My1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY0NDpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1fZHQodm9pZClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY0NS17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc2LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6Njc3OnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc4LXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02ODQtXHQvKiBMb29rIGZvciB0aGUgbmV3IFwmIzM0O3Jlc2VydmVkLXJlZ2lvbnNcJiMzNDsgcHJvcGVydHkgaW4gdGhlIERUICovXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYzo2ODU6XHRlYXJseV9yZXNlcnZlX21lbV9kdCgpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjg2LVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jPTc4Nz12b2lkIF9faW5pdCBlYXJseV9pbml0X2RldnRyZWUodm9pZCAqcGFyYW1zKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2MC1cdCAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6ODYxOlx0aWYgKGZhZHVtcF9yZXNlcnZlX21lbSgpID09IDApXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjItI2VuZGlmXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjMtXHRcdGFyY2hfcmVzZXJ2ZV9jcmFzaGtlcm5lbCgpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6ODY0Olx0ZWFybHlfcmVzZXJ2ZV9tZW0oKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2NS1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE0MTU9c3RhdGljIHZvaWQgX19pbml0IHByb21fc2VuZF9jYXBhYmlsaXRpZXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE1MTEtICpcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM6MTUxMjogKiAgTm90ZSB0aGF0IGNhbGxzIHRvIHJlc2VydmVfbWVtIGhhdmUgdG8gYmUgZG9uZSBleHBsaWNpdGx5LCBtZW1vcnlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTUxMy0gKiAgYWxsb2NhdGVkIHdpdGggZWl0aGVyIGFsbG9jX3VwIG9yIGFsbG9jX2Rvd24gaXNuJiMzOTt0IGF1dG9tYXRpY2FsbHlcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE2Mjc9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHByb21fbmV4dF9jZWxsKGludCBzLCBjZWxsX3QgKipjZWxscClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE2NTUtICovXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE2NTY6c3RhdGljIHZvaWQgX19pbml0IHJlc2VydmVfbWVtKHU2NCBiYXNlLCB1NjQgc2l6ZSlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTY1Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0xODY3PXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luc3RhbnRpYXRlX3J0YXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5MDgtXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE5MDk6XHRyZXNlcnZlX21lbShiYXNlLCBzaXplKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTkxMC1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE5MzQ9c3RhdGljIHZvaWQgX19pbml0IHByb21faW5zdGFudGlhdGVfc21sKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xOTk0LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxOTk1Olx0cmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5OTYtXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0yMDEyPXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luaXRpYWxpemVfdGNlX3RhYmxlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0yMTIxLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoyMTIyOlx0cmVzZXJ2ZV9tZW0obG9jYWxfYWxsb2NfYm90dG9tLCBsb2NhbF9hbGxvY190b3AgLSBsb2NhbF9hbGxvY19ib3R0b20pO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0yMTIzLVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MzE4NT1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9jaGVja19pbml0cmQodW5zaWduZWQgbG9uZyByMywgdW5zaWduZWQgbG9uZyByNClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTMyMDAtXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjMyMDE6XHRcdHJlc2VydmVfbWVtKHByb21faW5pdHJkX3N0YXJ0LFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0zMjAyLVx0XHRcdCAgICBwcm9tX2luaXRyZF9lbmQgLSBwcm9tX2luaXRyZF9zdGFydCk7XG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTM1NT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX2dldF9jcHVfdWlkKTtcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zNTYtXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmM6MzU3OnZvaWQgX19pbml0IGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYShhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkciwgc2l6ZV90IHNpemUpXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU4LXtcbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jPTEzNT1zdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9yZXNvdXJjZXModm9pZClcbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jLTIyNi1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjI3OnN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyh2b2lkKVxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjgte1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmMtMjUyLX1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjUzOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmMtMjU0LVxuLS1cbmFyY2gvc2gvbW0vaW5pdC5jPTIxNj1zdGF0aWMgdm9pZCBfX2luaXQgZG9faW5pdF9ib290bWVtKHZvaWQpXG4tLVxuYXJjaC9zaC9tbS9pbml0LmMtMjMxLVxuYXJjaC9zaC9tbS9pbml0LmM6MjMyOnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9zaC9tbS9pbml0LmMtMjMzLXtcbi0tXG5hcmNoL3NoL21tL2luaXQuYz0yNzA9dm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZClcbi0tXG5hcmNoL3NoL21tL2luaXQuYy0yNzUtXG5hcmNoL3NoL21tL2luaXQuYzoyNzY6XHRlYXJseV9yZXNlcnZlX21lbSgpO1xuYXJjaC9zaC9tbS9pbml0LmMtMjc3LVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2lvLmg9MzQ5PWV4dGVybiB2b2lkIGFyY2hfcGh5c193Y19kZWwoaW50IGhhbmRsZSk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTMtI2lmZGVmIENPTkZJR19YODZfUEFUXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NDpleHRlcm4gaW50IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTUtZXh0ZXJuIHZvaWQgYXJjaF9pb19mcmVlX21lbXR5cGVfd2MocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3Qgc2l6ZSk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NjojZGVmaW5lIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oLTM1Ny0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmM9MTgxND1pbnQgX19hY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2sodW5zaWduZWQgaW50ICpsb2NrKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYy0xODI0LVxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jOjE4MjU6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcbmFyY2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYy0xODI2LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jPTU0Nz12b2lkIF9faW5pdCBtcHBhcnNlX3BhcnNlX3NtcF9jb25maWcodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU1MS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTUyOnN0YXRpYyB2b2lkIF9faW5pdCBzbXBfcmVzZXJ2ZV9tZW1vcnkoc3RydWN0IG1wZl9pbnRlbCAqbXBmKVxuYXJjaC94ODYva2VybmVsL21wcGFyc2UuYy01NTMte1xuLS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM9NTU3PXN0YXRpYyBpbnQgX19pbml0IHNtcF9zY2FuX2NvbmZpZyh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTg0LVx0XHRcdGlmIChtcGYtXHUwMDNlcGh5c3B0cilcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTg1Olx0XHRcdFx0c21wX3Jlc2VydmVfbWVtb3J5KG1wZik7XG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU4Ni1cbi0tXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYz03Nzc9c3RhdGljIHZvaWQgX19pbml0IGU4MjBfYWRkX2tlcm5lbF9yYW5nZSh2b2lkKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5Ni1cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjc5NzpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1vcnkodm9pZClcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5OC17XG4tLVxuYXJjaC94ODYva2VybmVsL3NldHVwLmM9ODg0PXZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy05NzEtXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjk3MjpcdGVhcmx5X3Jlc2VydmVfbWVtb3J5KCk7XG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy05NzMtXG4tLVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYz03NDg9dm9pZCBtZW10eXBlX2ZyZWVfaW8ocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3QgZW5kKVxuLS1cbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzUzLSNpZmRlZiBDT05GSUdfWDg2X1BBVFxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYzo3NTQ6aW50IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc1NS17XG4tLVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYy03NTktfVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYzo3NjA6RVhQT1JUX1NZTUJPTChhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93Yyk7XG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc2MS1cbi0tXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM9NDIyPXZvaWQgX19pbml0IGFjcGlfdGFibGVfdXBncmFkZSh2b2lkKVxuLS1cbmRyaXZlcnMvYWNwaS90YWJsZXMuYy01MDgtXHQgKiB0aGF0IHNob3VsZCBnZXQgbWFwcGVkIGFyZSBub3QgbWFya2VkIFwmIzM0O3Jlc2VydmVkXCYjMzQ7LlxuZHJpdmVycy9hY3BpL3RhYmxlcy5jOjUwOTpcdCAqIEJvdGggbWVtYmxvY2tfcmVzZXJ2ZSBhbmQgZTgyMF9fcmFuZ2VfYWRkICh2aWEgYXJjaF9yZXNlcnZlX21lbV9hcmVhKVxuZHJpdmVycy9hY3BpL3RhYmxlcy5jLTUxMC1cdCAqIHdvcmtzIGZpbmUuXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTExLVx0ICovXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM6NTEyOlx0YXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfdGFibGVzX2FkZHIsIGFsbF90YWJsZXNfc2l6ZSk7XG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTEzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaD0zNjY9aW50IGFtZGdwdV9hbWRrZmRfY3JpdV9yZXN1bWUodm9pZCAqcCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmg6MzY3OmludCBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oLTM2OC1cdFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oOjM2OTp2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaC0zNzAtXHRcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MTM3PXZvaWQgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX3N5c3RlbV9tZW0odWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTU1LS8qKlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE1NjogKiBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KCkgLSBEZWNyZWFzZSBhdmFpbGFibGUgbWVtb3J5IGJ5IHNpemVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xNTctICogb2YgYnVmZmVyLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xNjgtICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM6MTY5OmludCBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE3MC1cdFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTI2NC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoyNjU6dm9pZCBhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMjY2LVx0XHR1aW50NjRfdCBzaXplLCB1MzIgYWxsb2NfZmxhZywgaW50OF90IHhjcF9pZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MzA5PXZvaWQgYW1kZ3B1X2FtZGtmZF9yZWxlYXNlX25vdGlmeShzdHJ1Y3QgYW1kZ3B1X2JvICpibylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMzE0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjMxNTpcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChhZGV2LCBzaXplLCBhbGxvY19mbGFncyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0zMTYtXHRcdFx0XHRcdCAgYm8tXHUwMDNleGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MTcwOT1pbnQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9hbGxvY19tZW1vcnlfb2ZfZ3B1KFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODA3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4MDg6XHRyZXQgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTgwOS1cdFx0XHRcdFx0ICAgICAgeGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTg5MS1lcnJfYm9fY3JlYXRlOlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4OTI6XHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoYWRldiwgYWxpZ25lZF9zaXplLCBmbGFncywgeGNwX2lkKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODkzLWVycl9yZXNlcnZlX2xpbWl0OlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYz0xMDY3PWludCBhbWRncHVfYm9faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3MS1cdFx0LyogcmVzZXJ2ZSBQQVQgbWVtb3J5IHNwYWNlIHRvIFdDIGZvciBWUkFNICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM6MTA3MjpcdFx0aW50IHIgPSBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhhZGV2LVx1MDAzZWdtYy5hcGVyX2Jhc2UsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3My1cdFx0XHRcdGFkZXYtXHUwMDNlZ21jLmFwZXJfc2l6ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYz0xNzA5PXN0YXRpYyBpbnQga2ZkX2lvY3RsX3NldF94bmFja19tb2RlKHN0cnVjdCBmaWxlICpmaWxlcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzAtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jOjE3MzE6XHRcdHIgPSBzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHAsIGFyZ3MtXHUwMDNleG5hY2tfZW5hYmxlZCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzItXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NDg4PXN2bV9taWdyYXRlX3JhbV90b192cmFtKHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSwgdWludDMyX3QgYmVzdF9sb2MsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy01MTctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjUxODpcdHIgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KG5vZGUtXHUwMDNlYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTE5LVx0XHRcdFx0XHRwcmFuZ2UtXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTYzLW91dDpcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NTY0Olx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KG5vZGUtXHUwMDNlYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTY1LVx0XHRcdFx0XHRwcmFuZ2UtXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0yNzk9c3RhdGljIHZvaWQgc3ZtX3JhbmdlX2ZyZWUoc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLCBib29sIGRvX3VubWFwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMDQtXHRcdHByX2RlYnVnKFwmIzM0O3VucmVzZXJ2ZSBwcmFuZ2UgMHglcCBzaXplOiAweCVsbHhcXG5cJiMzNDssIHByYW5nZSwgc2l6ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzA1Olx0XHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMDYtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMzU9c3ZtX3JhbmdlICpzdm1fcmFuZ2VfbmV3KHN0cnVjdCBzdm1fcmFuZ2VfbGlzdCAqc3ZtcywgdWludDY0X3Qgc3RhcnQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTM0Ny1cdGlmICghcC1cdTAwM2V4bmFja19lbmFibGVkIFx1MDAyNlx1MDAyNiB1cGRhdGVfbWVtX3VzYWdlIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjM0ODpcdCAgICBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzQ5LVx0XHRcdFx0ICAgIEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApKSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jPTMyODI9aW50XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI4Mzpzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwgYm9vbCB4bmFja19lbmFibGVkKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyODQte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMjk4LVx0XHRcdGlmICh4bmFja19lbmFibGVkKSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI5OTpcdFx0XHRcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDAtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDEtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzAyOlx0XHRcdFx0ciA9IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzAzLVx0XHRcdFx0XHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxMS1cdFx0aWYgKHhuYWNrX2VuYWJsZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzEyOlx0XHRcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTMtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzMxNTpcdFx0XHRyID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTYtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI3LVx0aWYgKHIpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzMyODpcdFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHJlc2VydmVkX3NpemUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMyOS1cdFx0XHRcdFx0S0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oPTIxND12b2lkIHN2bV9yYW5nZV9zZXRfbWF4X3BhZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uaDoyMTU6aW50IHN2bV9yYW5nZV9zd2l0Y2hfeG5hY2tfcmVzZXJ2ZV9tZW0oc3RydWN0IGtmZF9wcm9jZXNzICpwLCBib29sIHhuYWNrX2VuYWJsZWQpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oLTIxNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tbS5jPTczPWludCBhc3RfbW1faW5pdChzdHJ1Y3QgYXN0X2RldmljZSAqYXN0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmMtODMtXHQvKiBEb24mIzM5O3QgZmFpbCBvbiBlcnJvcnMsIGJ1dCBwZXJmb3JtYW5jZSBtaWdodCBiZSByZWR1Y2VkLiAqL1xuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYzo4NDpcdGRldm1fYXJjaF9pb19yZXNlcnZlX21lbXR5cGVfd2MoZGV2LVx1MDAzZWRldiwgYmFzZSwgc2l6ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tbS5jLTg1LVx0ZGV2bV9hcmNoX3BoeXNfd2NfYWRkKGRldi1cdTAwM2VkZXYsIGJhc2UsIHNpemUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmM9MjcwPW5vdXZlYXVfdHRtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjQtXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3R0bS5jOjMyNTpcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGRldmljZS1cdTAwM2VmdW5jLVx1MDAzZXJlc291cmNlX2FkZHIoZGV2aWNlLCBOVktNX0JBUjFfRkIpLFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjYtXHRcdFx0XHQgICBkZXZpY2UtXHUwMDNlZnVuYy1cdTAwM2VyZXNvdXJjZV9zaXplKGRldmljZSwgTlZLTV9CQVIxX0ZCKSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmM9Mzg2PWludCByYWRlb25fYm9faW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYy0zODgtXHQvKiByZXNlcnZlIFBBVCBtZW1vcnkgc3BhY2UgdG8gV0MgZm9yIFZSQU0gKi9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jOjM4OTpcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJkZXYtXHUwMDNlbWMuYXBlcl9iYXNlLFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzkwLVx0XHRcdFx0ICAgcmRldi1cdTAwM2VtYy5hcGVyX3NpemUpO1xuLS1cbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmM9MTE4PXN0YXRpYyBpbnQgZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKHVuc2lnbmVkIGxvbmcgbm9kZSxcbi0tXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTEyMC1cbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmM6MTIxOnN0YXRpYyBpbnQgX19pbml0IGVhcmx5X2luaXRfZHRfcmVzZXJ2ZV9tZW1vcnkocGh5c19hZGRyX3QgYmFzZSxcbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmMtMTIyLVx0XHRcdFx0XHQgICAgICAgcGh5c19hZGRyX3Qgc2l6ZSwgYm9vbCBub21hcClcbi0tXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTE0Mz1zdGF0aWMgaW50IF9faW5pdCBfX3Jlc2VydmVkX21lbV9yZXNlcnZlX3JlZyh1bnNpZ25lZCBsb25nIG5vZGUsXG4tLVxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xNjktXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjE3MDpcdGlmIChzaXplIFx1MDAyNlx1MDAyNiBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KGJhc2UsIHNpemUsIG5vbWFwKSA9PSAwKSB7XG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTE3MS1cdFx0ZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKG5vZGUsIGJhc2UsIHNpemUpO1xuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9Mjk9c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9pb1sxNl0gPSB7WzAgLi4uIDE1XSA9IC0xIH07XHQvKiByZXNlcnZlIChkb24mIzM5O3QgdXNlKSBzb21lIEkvTyByZWdpb24gKi9cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MzA6c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9tZW1bMTZdID0ge1swIC4uLiAxNV0gPSAtMSB9O1x0LyogcmVzZXJ2ZSAoZG9uJiMzOTt0IHVzZSkgc29tZSBtZW1vcnkgcmVnaW9uICovXG5kcml2ZXJzL3BucC9yZXNvdXJjZS5jLTMxLVxuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9MjMwPWludCBwbnBfY2hlY2tfbWVtKHN0cnVjdCBwbnBfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmMtMjUzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MjU0Olx0XHRpbnQgcmFkZHIgPSBwbnBfcmVzZXJ2ZV9tZW1baSBcdTAwM2NcdTAwM2MgMV07XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE5OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgcmVzZXJ2ZWQsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgYG1tL21lbWJsb2NrLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4gS25vd2luZyB0aGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbiwgSSBleHBlY3QgaXQgdG8gY29udGFpbiB0aGUgZGV0YWlscyBvZiBob3cgcGh5c2ljYWwgbWVtb3J5IGlzIGFsbG9jYXRlZCBiZWZvcmUgdGhlIG1vcmUgYWR2YW5jZWQgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtcyBjb21lIGludG8gcGxheS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbiYjMzk7cyBjcml0aWNhbCBhc3BlY3RzLCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgMjc1MCB0aHJvdWdoIDI4NzAgaW4gdGhlIGZpbGUuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgc2VjdGlvbiB3aWxsIGNvbnRhaW4gdGhlIGNydWNpYWwgbG9naWMgZm9yIHByZS1ib290IG1lbW9yeSByZXNlcnZhdGlvbi4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBzZWUgaG93IHRoZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIEJJT1Mgb3IgZmlybXdhcmUgZHVyaW5nIGVhcmx5IGJvb3Qgc3RhZ2VzIGhlcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGhlcmUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBtZW1vcnkgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiBnZW5lcmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWJsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3NTA6XHRcdGlmIChlcnIpIHtcbjI3NTE6XHRcdFx0cHJfd2FybihcJiMzNDtOb2RlICYjMzk7JXMmIzM5OyBpcyBpbmNvbXBhdGlibGUgd2l0aCAmIzM5OyVzJiMzOTs6ICVkXFxuXCYjMzQ7LFxuMjc1MjpcdFx0XHRcdG5hbWUsIFJFU0VSVkVfTUVNX0tIT19OT0RFX0NPTVBBVElCTEUsIGVycik7XG4yNzUzOlx0XHRcdHJldHVybiBmYWxzZTtcbjI3NTQ6XHRcdH1cbjI3NTU6XHRcbjI3NTY6XHRcdHBfc3RhcnQgPSBmZHRfZ2V0cHJvcChmZHQsIG9mZnNldCwgXCYjMzQ7c3RhcnRcJiMzNDssIFx1MDAyNmxlbl9zdGFydCk7XG4yNzU3Olx0XHRwX3NpemUgPSBmZHRfZ2V0cHJvcChmZHQsIG9mZnNldCwgXCYjMzQ7c2l6ZVwmIzM0OywgXHUwMDI2bGVuX3NpemUpO1xuMjc1ODpcdFx0aWYgKCFwX3N0YXJ0IHx8IGxlbl9zdGFydCAhPSBzaXplb2YoKnBfc3RhcnQpIHx8ICFwX3NpemUgfHxcbjI3NTk6XHRcdCAgICBsZW5fc2l6ZSAhPSBzaXplb2YoKnBfc2l6ZSkpIHtcbjI3NjA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjc2MTpcdFx0fVxuMjc2MjpcdFxuMjc2MzpcdFx0aWYgKCpwX3N0YXJ0IFx1MDAyNiAoYWxpZ24gLSAxKSkge1xuMjc2NDpcdFx0XHRwcl93YXJuKFwmIzM0O0tITyByZXNlcnZlLW1lbSAmIzM5OyVzJiMzOTsgaGFzIHdyb25nIGFsaWdubWVudCAoMHglbHgsIDB4JWx4KVxcblwmIzM0OyxcbjI3NjU6XHRcdFx0XHRuYW1lLCAobG9uZylhbGlnbiwgKGxvbmcpKnBfc3RhcnQpO1xuMjc2NjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzY3Olx0XHR9XG4yNzY4Olx0XG4yNzY5Olx0XHRpZiAoKnBfc2l6ZSAhPSBzaXplKSB7XG4yNzcwOlx0XHRcdHByX3dhcm4oXCYjMzQ7S0hPIHJlc2VydmUtbWVtICYjMzk7JXMmIzM5OyBoYXMgd3Jvbmcgc2l6ZSAoMHglbHggIT0gMHglbHgpXFxuXCYjMzQ7LFxuMjc3MTpcdFx0XHRcdG5hbWUsIChsb25nKSpwX3NpemUsIChsb25nKXNpemUpO1xuMjc3MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzczOlx0XHR9XG4yNzc0Olx0XG4yNzc1Olx0XHRyZXNlcnZlZF9tZW1fYWRkKCpwX3N0YXJ0LCBzaXplLCBuYW1lKTtcbjI3NzY6XHRcdHByX2luZm8oXCYjMzQ7UmV2aXZlZCBtZW1vcnkgcmVzZXJ2YXRpb24gJiMzOTslcyYjMzk7IGZyb20gS0hPXFxuXCYjMzQ7LCBuYW1lKTtcbjI3Nzc6XHRcbjI3Nzg6XHRcdHJldHVybiB0cnVlO1xuMjc3OTpcdH1cbjI3ODA6XHQjZWxzZVxuMjc4MTpcdHN0YXRpYyBib29sIF9faW5pdCByZXNlcnZlX21lbV9raG9fcmV2aXZlKGNvbnN0IGNoYXIgKm5hbWUsIHBoeXNfYWRkcl90IHNpemUsXG4yNzgyOlx0XHRcdFx0XHRcdCAgcGh5c19hZGRyX3QgYWxpZ24pXG4yNzgzOlx0e1xuMjc4NDpcdFx0cmV0dXJuIGZhbHNlO1xuMjc4NTpcdH1cbjI3ODY6XHQjZW5kaWYgLyogQ09ORklHX0tFWEVDX0hBTkRPVkVSICovXG4yNzg3Olx0XG4yNzg4Olx0LypcbjI3ODk6XHQgKiBQYXJzZSByZXNlcnZlX21lbT1ubjphbGlnbjpuYW1lXG4yNzkwOlx0ICovXG4yNzkxOlx0c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcbjI3OTI6XHR7XG4yNzkzOlx0XHRwaHlzX2FkZHJfdCBzdGFydCwgc2l6ZSwgYWxpZ24sIHRtcDtcbjI3OTQ6XHRcdGNoYXIgKm5hbWU7XG4yNzk1Olx0XHRjaGFyICpvbGRwO1xuMjc5NjpcdFx0aW50IGxlbjtcbjI3OTc6XHRcbjI3OTg6XHRcdGlmICghcClcbjI3OTk6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODAwOlx0XG4yODAxOlx0XHQvKiBDaGVjayBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xuMjgwMjpcdFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcdTAwM2U9IFJFU0VSVkVfTUVNX01BWF9FTlRSSUVTKSB7XG4yODAzOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXG5cJiMzNDspO1xuMjgwNDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjgwNTpcdFx0fVxuMjgwNjpcdFxuMjgwNzpcdFx0b2xkcCA9IHA7XG4yODA4Olx0XHRzaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG4yODA5Olx0XHRpZiAoIXNpemUgfHwgcCA9PSBvbGRwKVxuMjgxMDpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTE6XHRcbjI4MTI6XHRcdGlmICgqcCAhPSAmIzM5OzomIzM5OylcbjI4MTM6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODE0Olx0XG4yODE1Olx0XHRhbGlnbiA9IG1lbXBhcnNlKHAmIzQzOzEsIFx1MDAyNnApO1xuMjgxNjpcdFx0aWYgKCpwICE9ICYjMzk7OiYjMzk7KVxuMjgxNzpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTg6XHRcbjI4MTk6XHRcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4yODIwOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcblwmIzM0Oyk7XG4yODIxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjgyMjpcdFx0fVxuMjgyMzpcdFxuMjgyNDpcdFx0LypcbjI4MjU6XHRcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2VzbiYjMzk7dCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuMjgyNjpcdFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbjI4Mjc6XHRcdCAqL1xuMjgyODpcdFx0aWYgKCFhbGlnbilcbjI4Mjk6XHRcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjMzCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogOTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpczogcmVzZXJ2ZV9tZW0oKSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSBhIHBhdGNoIHRoYXQgbW9kaWZpZXMgdGhlIGByZXNlcnZlX21lbWAgZnVuY3Rpb24sIGFuZCBteSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZ1enphYmxlIHdpdGggU3l6a2FsbGVyLgoKRmlyc3QsIEkgb2JzZXJ2ZSB0aGF0IGBfX3NldHVwKCYjMzQ7cmVzZXJ2ZV9tZW09JiMzNDssIHJlc2VydmVfbWVtKWAgaXMgaW52b2x2ZWQuIFRoaXMgaXMga2V5LiBgX19zZXR1cGAgaW5kaWNhdGVzIHRoYXQgYHJlc2VydmVfbWVtYCBpcyB0aWVkIHRvIGtlcm5lbCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIHBhcnNpbmcsIHdoaWNoIGhhcHBlbnMgdmVyeSBlYXJseSBkdXJpbmcgYm9vdCwgYmVmb3JlIHVzZXJzcGFjZSBldmVuIHN0YXJ0cy4gSXQmIzM5O3MgZXhlY3V0ZWQgd2l0aGluIHRoZSBgZG9faW5pdGNhbGxgIC8gYHBhcnNlX2Vhcmx5X3BhcmFtYCAvIGBwYXJzZV9hcmdzYCBwaGFzZS4KCkkgY29uZmlybSB0aGF0IGByZXNlcnZlX21lbWAgaXMgYHN0YXRpY2AgYW5kIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBUaGlzIG1lYW5zIGl0JiMzOTtzIG9ubHkgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGJlIGRpc2NhcmRlZCBvbmNlIGJvb3QgaXMgY29tcGxldGUuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgYSBkZWFkIGVuZCBmb3IgZnV6emluZywgYnV0IGxldCYjMzk7cyBiZSB0aG9yb3VnaC4KCk15IHVuZGVyc3RhbmRpbmcgb2YgU3l6a2FsbGVyIGlzIHRoYXQgaXQgb3BlcmF0ZXMgaW4gYSBydW5uaW5nIGtlcm5lbCBlbnZpcm9ubWVudCwgdGFyZ2V0aW5nIHN5c2NhbGxzIGFuZCBnZW5lcmF0ZWQgcHJvZ3JhbXMuIFN5emthbGxlciBjYW5ub3QgZHluYW1pY2FsbHkgcmUtaW52b2tlIGJvb3QtdGltZSBwYXJhbWV0ZXJzIG9yIGBfX2luaXRgIGZ1bmN0aW9ucy4gSXQgc2ltcGx5ICpjYW4mIzM5O3QqIGRpcmVjdGx5IHBhc3MgYSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIHRvIGByZXNlcnZlX21lbWAgYWZ0ZXIgdGhlIGtlcm5lbCBpcyBib290ZWQuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdW5hYmxlIHRvIHJlYWNoIHRoaXMgcGFydCBvZiB0aGUgY29kZS4KCkNoZWNraW5nIHRoZSBwcm9qZWN0IGRvY3VtZW50YXRpb24sIEkgaGF2ZSB0byBlbnN1cmUgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBNeSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCBpcyBub3QsIGJ1dCBJIHdpbGwgY2hlY2sgdGhlIG90aGVyIGFyZWFzLgoKU2VjdGlvbiAyIGNsZWFybHkgb3V0bGluZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgYXJlIG91dC4gQnV0IHRoZSBvbmUgdGhhdCByZWFsbHkganVtcHMgb3V0IGlzIHRoZSAmIzM0O0NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSYjMzQ7LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBteSBhc3N1bXB0aW9ucy4gVGhlIHBhdGNoIGNoYW5nZXMgaW5jbHVkZToKMS4gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLiBJcnJlbGV2YW50IHRvIGZ1enppbmcuCjIuIENoYW5nZXMgd2l0aGluIGBtbS9tZW1ibG9jay5jYCB0byBgcmVzZXJ2ZV9tZW1gOiBhbiBhZGRlZCBjaGVjayBgaWYgKCFJU19BTElHTkVEKHNpemUsIFBBR0VfU0laRSkgfHwgIUlTX0FMSUdORUQoYWxpZ24sIFBBR0VfU0laRSkpYCBhbmQgYSBjaGFuZ2UgdG8gdGhlIGZhbGxiYWNrIGFsaWdubWVudCBgaWYgKCFhbGlnbikgYWxpZ24gPSBQQUdFX1NJWkU7YAoKQ3J1Y2lhbGx5LCBib3RoIGNoYW5nZXMgYXJlIHN0cmljdGx5ICppbnNpZGUqIHRoZSBgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApYCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVnaXN0ZXJlZCBvbmx5IHRocm91Z2ggYF9fc2V0dXAoJiMzNDtyZXNlcnZlX21lbT0mIzM0OywgcmVzZXJ2ZV9tZW0pYC4KCkkmIzM5O3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCBgcmVzZXJ2ZV9tZW1gIGlzIGBfX2luaXRgLCBtZWFuaW5nIGl0IHJlc2lkZXMgaW4gdGhlIGAuaW5pdC50ZXh0YCBzZWN0aW9uLiBBZnRlciBpbml0aWFsaXphdGlvbiwgdGhlIGtlcm5lbCBjYWxscyBgZnJlZV9pbml0bWVtKClgLCBmcmVlaW5nIHRoZSBgLmluaXQudGV4dGAgYW5kIGAuaW5pdC5kYXRhYCBwYWdlcy4gVGh1cywgaXQmIzM5O3MgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIFN5emthbGxlciBjYW4gZXZlbiB0aGluayBhYm91dCByZWFjaGluZyB0aGlzIHBhcnQgb2YgdGhlIGNvZGViYXNlLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgYXMgbW9kaWZpZWQsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBieSBTeXprYWxsZXIgZHVyaW5nIHJ1bnRpbWUgZnV6emluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb2RlIGlzIHNwZWNpZmljYWxseSBwYXJ0IG9mIHRoZSBlYXJseSBib290IHByb2Nlc3MgYW5kIGlzIGRpc2NhcmRlZCBiZWZvcmUgdGhlIGZ1enplciBldmVuIGJlZ2lucy4KClNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzOgotICAgYFdvcnRoRnV6emluZzogZmFsc2VgCi0gICBgRW5hYmxlQ29uZmlnczogW11gCi0gICBgRm9jdXNTeW1ib2xzOiBbXWAKLSAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkb2N1bWVudGF0aW9uIGFuZCB0aGUgYF9faW5pdGAgYm9vdC10aW1lIHBhcmFtZXRlciBwYXJzaW5nIGZ1bmN0aW9uIGByZXNlcnZlX21lbSgpYCwgd2hpY2ggaXMgZXhlY3V0ZWQgZHVyaW5nIGVhcmx5IGtlcm5lbCBib290ICh2aWEgYF9fc2V0dXBgKSBhbmQgZGlzY2FyZGVkIGJlZm9yZSB1c2Vyc3BhY2UvZnV6emVyIGV4ZWN1dGlvbi4gSXQgaXMgdGhlcmVmb3JlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGRvY3VtZW50YXRpb24gYW5kIG1vZGlmaWVzIHRoZSBgX19pbml0YCBlYXJseSBib290IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgaGFuZGxlciBgcmVzZXJ2ZV9tZW0oKWAgaW4gbW0vbWVtYmxvY2suYy4gVGhpcyBjb2RlIGV4ZWN1dGVzIGV4Y2x1c2l2ZWx5IGR1cmluZyBlYXJseSBib290IHBhcmFtZXRlciBzZXR1cCBhbmQgaXMgZnJlZWQgcHJpb3IgdG8gdXNlcnNwYWNlIGV4ZWN1dGlvbiwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjM3LjM4NzI3NDY2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDgxNzcwNDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjM3LjM4NzI4MDI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxMjI0OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDA0NjVkYTMwODk4ZjA2NDg1YzZhNWE2OTFmYWMyOTY1MWQ2YmVlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDE0OjU1OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5pbmRleCA2ODY0N2ZmNGJkZDI0Li5mOTY5MDg1ZmZmYjdkIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5AQCAtNjY0OCw2ICs2NjQ4LDkgQEAgS2VybmVsIHBhcmFtZXRlcnNcXG4gXFxuIFxcdFxcdFxcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXFxuIFxcbitcXHRcXHRcXHRCb3RoIHRoZSBzaXplIGFuZCB0aGUgYWxpZ25tZW50IG11c3QgYmUgbXVsdGlwbGVzIG9mXFxuK1xcdFxcdFxcdHRoZSBwYWdlIHNpemUuXFxuK1xcbiBcXHRyZXNlcnZldG9wPVxcdFtYODYtMzIsRUFSTFldXFxuIFxcdFxcdFxcdEZvcm1hdDogbm5bS01HXVxcbiBcXHRcXHRcXHRSZXNlcnZlcyBhIGhvbGUgYXQgdGhlIHRvcCBvZiB0aGUga2VybmVsIHZpcnR1YWxcXG5kaWZmIC0tZ2l0IGEvbW0vbWVtYmxvY2suYyBiL21tL21lbWJsb2NrLmNcXG5pbmRleCA0MzAyZmI0YWI4NWM3Li41ZTkzYjZkYTUzZTMwIDEwMDY0NFxcbi0tLSBhL21tL21lbWJsb2NrLmNcXG4rKysgYi9tbS9tZW1ibG9jay5jXFxuQEAgLTI4MTYsMTIgKzI4MTYsMTcgQEAgc3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG4gXFx0aWYgKCpwICE9ICc6JylcXG4gXFx0XFx0Z290byBlcnJfcGFyYW07XFxuIFxcbitcXHRpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSkge1xcbitcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2Vzbid0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sXFxuIFxcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoYWxpZ24gXFx1MDAzYyBTTVBfQ0FDSEVfQllURVMpXFxuLVxcdFxcdGFsaWduID0gU01QX0NBQ0hFX0JZVEVTO1xcbitcXHRpZiAoIWFsaWduKVxcbitcXHRcXHRhbGlnbiA9IFBBR0VfU0laRTtcXG4gXFxuIFxcdG5hbWUgPSBwICsgMTtcXG4gXFx0bGVuID0gc3RybGVuKG5hbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTozNy44MTkxMTM2NzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2NjQ5OTE4NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRvY3VtZW50YXRpb24gYW5kIG1vZGlmaWVzIHRoZSBgX19pbml0YCBlYXJseSBib290IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgaGFuZGxlciBgcmVzZXJ2ZV9tZW0oKWAgaW4gbW0vbWVtYmxvY2suYy4gVGhpcyBjb2RlIGV4ZWN1dGVzIGV4Y2x1c2l2ZWx5IGR1cmluZyBlYXJseSBib290IHBhcmFtZXRlciBzZXR1cCBhbmQgaXMgZnJlZWQgcHJpb3IgdG8gdXNlcnNwYWNlIGV4ZWN1dGlvbiwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMDQ2NWRhMzA4OThmMDY0ODVjNmE1YTY5MWZhYzI5NjUxZDZiZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNDo1NTozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDY4NjQ3ZmY0YmRkMjQuLmY5NjkwODVmZmZiN2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbkBAIC02NjQ4LDYgKzY2NDgsOSBAQCBLZXJuZWwgcGFyYW1ldGVyc1xuIFxuIFx0XHRcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXG4gXG4rXHRcdFx0Qm90aCB0aGUgc2l6ZSBhbmQgdGhlIGFsaWdubWVudCBtdXN0IGJlIG11bHRpcGxlcyBvZlxuK1x0XHRcdHRoZSBwYWdlIHNpemUuXG4rXG4gXHRyZXNlcnZldG9wPVx0W1g4Ni0zMixFQVJMWV1cbiBcdFx0XHRGb3JtYXQ6IG5uW0tNR11cbiBcdFx0XHRSZXNlcnZlcyBhIGhvbGUgYXQgdGhlIHRvcCBvZiB0aGUga2VybmVsIHZpcnR1YWxcbmRpZmYgLS1naXQgYS9tbS9tZW1ibG9jay5jIGIvbW0vbWVtYmxvY2suY1xuaW5kZXggNDMwMmZiNGFiODVjNy4uNWU5M2I2ZGE1M2UzMCAxMDA2NDRcbi0tLSBhL21tL21lbWJsb2NrLmNcbisrKyBiL21tL21lbWJsb2NrLmNcbkBAIC0yODE2LDEyICsyODE2LDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApXG4gXHRpZiAoKnAgIT0gJzonKVxuIFx0XHRnb3RvIGVycl9wYXJhbTtcbiBcbitcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4rXHRcdHByX2VycihcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBtZW1ibG9ja19waHlzX2FsbG9jKCkgZG9lc24ndCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuIFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbiBcdCAqL1xuLVx0aWYgKGFsaWduIFx1MDAzYyBTTVBfQ0FDSEVfQllURVMpXG4tXHRcdGFsaWduID0gU01QX0NBQ0hFX0JZVEVTO1xuK1x0aWYgKCFhbGlnbilcbitcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4gXG4gXHRuYW1lID0gcCArIDE7XG4gXHRsZW4gPSBzdHJsZW4obmFtZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTozNy44MTkxMTUyOTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Mzg3OTY2MTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IFJlc2VydmF0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2Ugd2UncmUgdXBkYXRpbmcgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgcmVzZXJ2ZV9tZW1gIGtlcm5lbCBwYXJhbWV0ZXIgaW4gYERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0YC4gTm90aGluZyB0b28gZXhjaXRpbmcgdGhlcmUsIGp1c3QgbWFraW5nIHN1cmUgdGhlIHVzZXItZmFjaW5nIGRvY3VtZW50YXRpb24gaXMgdXAtdG8tZGF0ZS4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYG1tL21lbWJsb2NrLmNgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGByZXNlcnZlX21lbWAgZnVuY3Rpb24uXG5cbkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgY2hhbmdpbmcgaG93IHRoZSBhbGlnbm1lbnQgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgZm9yY2VkIGFuIGFsaWdubWVudCBvZiBhdCBsZWFzdCBgU01QX0NBQ0hFX0JZVEVTYCBpZiBub25lIHdhcyBnaXZlbiwgYW5kIG5vdyBpdCBkZWZhdWx0cyB0byBgUEFHRV9TSVpFYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFRoZSBjb21tZW50IGhpbnRzIGF0IGBtZW1ibG9ja19waHlzX2FsbG9jKClgIG5vdCBsaWtpbmcgemVybyBhbGlnbm1lbnQsIGJ1dCBhbHNvIHRoZSBjb21tYW5kIGJlaW5nIE9LIHdpdGggaXQuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIHdoeSBkZWZhdWx0IHRvIGBQQUdFX1NJWkVgIG5vdyBpbnN0ZWFkIG9mIGBTTVBfQ0FDSEVfQllURVNgPyBJcyBpdCB0byBhbGxvdyBzbWFsbGVyIGFsbG9jYXRpb25zLCBvciBpcyBpdCBhIGJyb2FkZXIgY29tcGF0aWJpbGl0eSBmaXg/IExldCBtZSBjaGVjayB0aGUgY29kZSB1c2luZyB0aGUgYHJlYWQtZmlsZWAgY29tbWFuZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGNvbnRleHQgb2YgYG1lbWJsb2NrX3BoeXNfYWxsb2MoKWAgYW5kIHNlZSBob3cgdGhlIGFsaWdubWVudCBhZmZlY3RzIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiBtZW1vcnkgcmVzZXJ2YXRpb24gc3RyYXRlZ2llcy4gSSBob3BlIHRoZXJlJ3MgYSBnb29kIGV4cGxhbmF0aW9uIGluIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgYXNzb2NpYXRlZCBidWcgcmVwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTU6NDIuMjA3MDg0NjMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL21lbWJsb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMDpcXHRcXG4yODAxOlxcdFxcdC8qIENoZWNrIGlmIHRoZXJlJ3Mgcm9vbSBmb3IgbW9yZSByZXNlcnZlZCBtZW1vcnkgKi9cXG4yODAyOlxcdFxcdGlmIChyZXNlcnZlZF9tZW1fY291bnQgXFx1MDAzZT0gUkVTRVJWRV9NRU1fTUFYX0VOVFJJRVMpIHtcXG4yODAzOlxcdFxcdFxcdHByX2VycihcXFwicmVzZXJ2ZV9tZW06IG5vIG1vcmUgcm9vbSBmb3IgcmVzZXJ2ZWQgbWVtb3J5XFxcXG5cXFwiKTtcXG4yODA0OlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMjgwNTpcXHRcXHR9XFxuMjgwNjpcXHRcXG4yODA3OlxcdFxcdG9sZHAgPSBwO1xcbjI4MDg6XFx0XFx0c2l6ZSA9IG1lbXBhcnNlKHAsIFxcdTAwMjZwKTtcXG4yODA5OlxcdFxcdGlmICghc2l6ZSB8fCBwID09IG9sZHApXFxuMjgxMDpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODExOlxcdFxcbjI4MTI6XFx0XFx0aWYgKCpwICE9ICc6JylcXG4yODEzOlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTQ6XFx0XFxuMjgxNTpcXHRcXHRhbGlnbiA9IG1lbXBhcnNlKHArMSwgXFx1MDAyNnApO1xcbjI4MTY6XFx0XFx0aWYgKCpwICE9ICc6JylcXG4yODE3OlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTg6XFx0XFxuMjgxOTpcXHRcXHRpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSkge1xcbjI4MjA6XFx0XFx0XFx0cHJfZXJyKFxcXCJyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcXFxuXFxcIik7XFxuMjgyMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODIyOlxcdFxcdH1cXG4yODIzOlxcdFxcbjI4MjQ6XFx0XFx0LypcXG4yODI1OlxcdFxcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2Vzbid0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sXFxuMjgyNjpcXHRcXHQgKiBidXQgaXQgaXMgT0sgZm9yIHRoaXMgY29tbWFuZCB0byBoYXZlIGl0LlxcbjI4Mjc6XFx0XFx0ICovXFxuMjgyODpcXHRcXHRpZiAoIWFsaWduKVxcbjI4Mjk6XFx0XFx0XFx0YWxpZ24gPSBQQUdFX1NJWkU7XFxuMjgzMDpcXHRcXG4yODMxOlxcdFxcdG5hbWUgPSBwICsgMTtcXG4yODMyOlxcdFxcdGxlbiA9IHN0cmxlbihuYW1lKTtcXG4yODMzOlxcdFxcbjI4MzQ6XFx0XFx0LyogbmFtZSBuZWVkcyB0byBoYXZlIGxlbmd0aCBidXQgbm90IHRvbyBiaWcgKi9cXG4yODM1OlxcdFxcdGlmICghbGVuIHx8IGxlbiBcXHUwMDNlPSBSRVNFUlZFX01FTV9OQU1FX1NJWkUpXFxuMjgzNjpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODM3OlxcdFxcbjI4Mzg6XFx0XFx0LyogTWFrZSBzdXJlIHRoYXQgbmFtZSBoYXMgdGV4dCAqL1xcbjI4Mzk6XFx0XFx0Zm9yIChwID0gbmFtZTsgKnA7IHArKykge1xcbjI4NDA6XFx0XFx0XFx0aWYgKCFpc3NwYWNlKCpwKSlcXG4yODQxOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI4NDI6XFx0XFx0fVxcbjI4NDM6XFx0XFx0aWYgKCEqcClcXG4yODQ0OlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4NDU6XFx0XFxuMjg0NjpcXHRcXHQvKiBNYWtlIHN1cmUgdGhlIG5hbWUgaXMgbm90IGFscmVhZHkgdXNlZCAqL1xcbjI4NDc6XFx0XFx0aWYgKHJlc2VydmVfbWVtX2ZpbmRfYnlfbmFtZShuYW1lLCBcXHUwMDI2c3RhcnQsIFxcdTAwMjZ0bXApKSB7XFxuMjg0ODpcXHRcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBuYW1lIFxcXFxcXFwiJXNcXFxcXFxcIiB3YXMgYWxyZWFkeSB1c2VkXFxcXG5cXFwiLCBuYW1lKTtcXG4yODQ5OlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjQyLjIwNzI1MDQ4M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NjA1NTQ1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHJlc2VydmVfbWVtYCBpbiB0aGUgTWVtb3J5IEJsb2NrIEFsbG9jYXRvcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJlc2VydmVfbWVtYCBzaXR1YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzbyBJJ2xsIHN0YXJ0IHdpdGggaXRzIHVzYWdlIGFuZCBpbml0aWFsaXphdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgbW0vbWVtYmxvY2suY2AgZmlsZTsgdGhhdCdzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgbWVtb3J5IGJsb2NrIG1hbmFnZW1lbnQgcm91dGluZXMuIEknbGwgZm9jdXMgb24gbGluZXMgYXJvdW5kIDI4MDAgYW5kIHRoZW4gc2NhbiBmdXJ0aGVyLCBzcGVjaWZpY2FsbHkgcGFzdCAyODUwLCB0byBzZWUgaG93IGFuZCB3aGVyZSBgcmVzZXJ2ZV9tZW1gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCwgb3IgbW9yZSBpbXBvcnRhbnRseSwgKnNldCB1cCogd2l0aGluIHRoYXQgbW9kdWxlLiBJdCdzIHVzdWFsbHkgdGhlIGluaXRpYWxpemF0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgY29udGV4dC4gVGhpcyBzaG91bGQgaGVscCBtZSBwaW5wb2ludCB0aGUgcHVycG9zZSBvZiB0aGlzIGNhbGwgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIG9mIHRoZSBrZXJuZWwuIExvb2tpbmcgZm9yIHRoZSBjYWxsIHNpdGVzIGlzIGtleSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0NC44Njc4MDcxMDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtYmxvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyODUwOlxcdFxcdH1cXG4yODUxOlxcdFxcbjI4NTI6XFx0XFx0LyogUGljayBwcmV2aW91cyBhbGxvY2F0aW9ucyB1cCBmcm9tIEtITyBpZiBhdmFpbGFibGUgKi9cXG4yODUzOlxcdFxcdGlmIChyZXNlcnZlX21lbV9raG9fcmV2aXZlKG5hbWUsIHNpemUsIGFsaWduKSlcXG4yODU0OlxcdFxcdFxcdHJldHVybiAxO1xcbjI4NTU6XFx0XFxuMjg1NjpcXHRcXHQvKiBUT0RPOiBBbGxvY2F0aW9uIG11c3QgYmUgb3V0c2lkZSBvZiBzY3JhdGNoIHJlZ2lvbiAqL1xcbjI4NTc6XFx0XFx0c3RhcnQgPSBtZW1ibG9ja19waHlzX2FsbG9jKHNpemUsIGFsaWduKTtcXG4yODU4OlxcdFxcdGlmICghc3RhcnQpIHtcXG4yODU5OlxcdFxcdFxcdHByX2VycihcXFwicmVzZXJ2ZV9tZW06IG1lbWJsb2NrIGFsbG9jYXRpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4yODYwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI4NjE6XFx0XFx0fVxcbjI4NjI6XFx0XFxuMjg2MzpcXHRcXHRyZXNlcnZlZF9tZW1fYWRkKHN0YXJ0LCBzaXplLCBuYW1lKTtcXG4yODY0OlxcdFxcbjI4NjU6XFx0XFx0cmV0dXJuIDE7XFxuMjg2NjpcXHRlcnJfcGFyYW06XFxuMjg2NzpcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBlbXB0eSBvciBtYWxmb3JtZWQgcGFyYW1ldGVyXFxcXG5cXFwiKTtcXG4yODY4OlxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI4Njk6XFx0fVxcbjI4NzA6XFx0X19zZXR1cChcXFwicmVzZXJ2ZV9tZW09XFxcIiwgcmVzZXJ2ZV9tZW0pO1xcbjI4NzE6XFx0XFxuMjg3MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMjg3MzpcXHQjaWZkZWYgQ09ORklHX0FSQ0hfS0VFUF9NRU1CTE9DS1xcbjI4NzQ6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmbGFnbmFtZVtdID0ge1xcbjI4NzU6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX0hPVFBMVUcpXSA9IFxcXCJIT1RQTFVHXFxcIixcXG4yODc2OlxcdFxcdFtpbG9nMihNRU1CTE9DS19NSVJST1IpXSA9IFxcXCJNSVJST1JcXFwiLFxcbjI4Nzc6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX05PTUFQKV0gPSBcXFwiTk9NQVBcXFwiLFxcbjI4Nzg6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX0RSSVZFUl9NQU5BR0VEKV0gPSBcXFwiRFJWX01OR1xcXCIsXFxuMjg3OTpcXHRcXHRbaWxvZzIoTUVNQkxPQ0tfUlNSVl9OT0lOSVQpXSA9IFxcXCJSU1ZfTklUXFxcIixcXG4yODgwOlxcdFxcdFtpbG9nMihNRU1CTE9DS19SU1JWX0tFUk4pXSA9IFxcXCJSU1ZfS0VSTlxcXCIsXFxuMjg4MTpcXHRcXHRbaWxvZzIoTUVNQkxPQ0tfS0hPX1NDUkFUQ0gpXSA9IFxcXCJLSE9fU0NSQVRDSFxcXCIsXFxuMjg4MjpcXHR9O1xcbjI4ODM6XFx0XFxuMjg4NDpcXHRzdGF0aWMgaW50IG1lbWJsb2NrX2RlYnVnX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpwcml2YXRlKVxcbjI4ODU6XFx0e1xcbjI4ODY6XFx0XFx0c3RydWN0IG1lbWJsb2NrX3R5cGUgKnR5cGUgPSBtLVxcdTAwM2Vwcml2YXRlO1xcbjI4ODc6XFx0XFx0c3RydWN0IG1lbWJsb2NrX3JlZ2lvbiAqcmVnO1xcbjI4ODg6XFx0XFx0aW50IGksIGosIG5pZDtcXG4yODg5OlxcdFxcdHVuc2lnbmVkIGludCBjb3VudCA9IEFSUkFZX1NJWkUoZmxhZ25hbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0NC44Njc5NDU1OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjQ2MDc5NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFYXJseSBCb290IFBhcmFtZXRlciBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9fc2V0dXAoXCJyZXNlcnZlX21lbT1cIiwgcmVzZXJ2ZV9tZW0pO2AgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYW4gZWFybHkgYm9vdCBwYXJhbWV0ZXIgaGFuZGxlciDigJMgdXNpbmcgYF9fc2V0dXBgLCB3aGljaCBpcyBhIGRlYWQgZ2l2ZWF3YXksIGxpa2UgYGVhcmx5X3BhcmFtYCBvciBgX19pbml0YC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHBpbmcgaW50byBteSBoZWFkIGlzOiBjYW4gU3l6a2FsbGVyIG9yIGFueSBvdGhlciBydW50aW1lIGZ1enppbmcgYXBwcm9hY2ggYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGVhcmx5IGJvb3QgcGFyc2luZyBzdGFnZSBhbmQsIHNwZWNpZmljYWxseSwgdGFyZ2V0IHNvbWV0aGluZyBsaWtlIGBfX3NldHVwKFwicmVzZXJ2ZV9tZW09XCIsIC4uLilgP1xuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nLiBJIGhhdmUgdG8gc2VlIGlmIGByZXNlcnZlX21lbWAgb3IgYW55IHNpbWlsYXJseSBuYW1lZCBmdW5jdGlvbiBpcyBldmVuIGNhbGxlZCAqYWZ0ZXIqIGJvb3QtdXAuIElmIGl0J3MgKnNvbGVseSogZm9yIGVhcmx5IGJvb3QsIGl0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCAoYW5kIGxpa2VseSBtb3JlIGRpZmZpY3VsdCkgdGFyZ2V0LiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAgYW5kIGNoZWNrIHRoZSBjb2RlYmFzZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTUsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0OC4xMTQwMjczNzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxNDUxNzA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNlcnZlX21lbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg2MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ9OTg9S2VybmVsIHBhcmFtZXRlcnNcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTU0NDktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NTQ1MDpcXHRwbnBfcmVzZXJ2ZV9tZW09XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNTQ1MS1cXHRcXHRcXHRbSVNBUE5QXSBFeGNsdWRlIG1lbW9yeSByZWdpb25zIGZvciB0aGVcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MjgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NjYyOTpcXHRyZXNlcnZlX21lbT1cXHRbUkFNXVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MzAtXFx0XFx0XFx0Rm9ybWF0OiBubltLTUddOlxcdTAwM2NhbGlnblxcdTAwM2U6XFx1MDAzY2xhYmVsXFx1MDAzZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY0OC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo2NjQ5OlxcdFxcdFxcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY1MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MTktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NzgyMDpcXHRcXHRcXHRBbHRlcm5hdGl2ZWx5LCB0aGUgbWVtb3J5IGNhbiBiZSByZXNlcnZlZCBieSB0aGUgcmVzZXJ2ZV9tZW0gb3B0aW9uOlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NzgyMjpcXHRcXHRcXHRcXHRyZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC03ODM3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4Mzg6XFx0XFx0XFx0XFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBedHJhY2VvZmZedHJhY2VwcmludGtAdHJhY2Usc2NoZWQsaXJxXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgzOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0va2hvLnJzdD0zOT1UaGUgbmV3IGtlcm5lbCB3aWxsIGJvb3QgdXAgYW5kIGNvbnRhaW4gc29tZSBvZiB0aGUgcHJldmlvdXMga2VybmVsJ3Mgc3RhdGUuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0va2hvLnJzdDo0MTpGb3IgZXhhbXBsZSwgaWYgeW91IHVzZWQgYGByZXNlcnZlX21lbWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgdG8gY3JlYXRlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQyLWFuIGVhcmx5IG1lbW9yeSByZXNlcnZhdGlvbiwgdGhlIG5ldyBrZXJuZWwgd2lsbCBoYXZlIHRoYXQgbWVtb3J5IGF0IHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0PTEwMz1hbHNvIHRoZXJlIGFyZSBhIHNlcmllcyBvZiBrZXJuZWwgcGFyYW1ldGVyczo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3BucC5yc3QtMTA3LVxcdHBucF9yZXNlcnZlX2lvPWlvMSxzaXplMVssaW8yLHNpemUyXSAuLi4uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0OjEwODpcXHRwbnBfcmVzZXJ2ZV9tZW09bWVtMSxzaXplMVssbWVtMixzaXplMl0gLi4uLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdC0xMDktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0PTIwPWFuZCB0eXBlIG9mIHRoZSBtZW1vcnkgYXJlYSBhcmUgc2V0IHVzaW5nIHRocmVlIHZhcmlhYmxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjUtICAqIGBgbWVtX3R5cGVgYCB0byBzcGVjaWZ5IGlmIHRoZSBtZW1vcnkgdHlwZSAoZGVmYXVsdCBpcyBwZ3Byb3Rfd3JpdGVjb21iaW5lKS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjI2OiAgKiBgYG1lbV9uYW1lYGAgdG8gc3BlY2lmeSBhIG1lbW9yeSByZWdpb24gZGVmaW5lZCBieSBgYHJlc2VydmVfbWVtYGAgY29tbWFuZFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjctICAgIGxpbmUgcGFyYW1ldGVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdD02Mj1TZXR0aW5nIHRoZSByYW1vb3BzIHBhcmFtZXRlcnMgY2FuIGJlIGRvbmUgaW4gc2V2ZXJhbCBkaWZmZXJlbnQgbWFubmVyczpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTIyLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTIzOiBELiBVc2luZyBhIHJlZ2lvbiBvZiBtZW1vcnkgcmVzZXJ2ZWQgdmlhIGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kIGxpbmVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEyNDogICAgcGFyYW1ldGVyLiBUaGUgYWRkcmVzcyBhbmQgc2l6ZSB3aWxsIGJlIGRlZmluZWQgYnkgdGhlIGBgcmVzZXJ2ZV9tZW1gYFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI1OiAgICBwYXJhbWV0ZXIuIE5vdGUsIHRoYXQgYGByZXNlcnZlX21lbWBgIG1heSBub3QgYWx3YXlzIGFsbG9jYXRlIG1lbW9yeVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTI2LSAgICBpbiB0aGUgc2FtZSBsb2NhdGlvbiwgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi4gVGVzdGluZyB3aWxsIG5lZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyNy0gICAgdG8gYmUgZG9uZSwgYW5kIGl0IG1heSBub3Qgd29yayBvbiBldmVyeSBtYWNoaW5lLCBub3IgZXZlcnkga2VybmVsLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI4OiAgICBDb25zaWRlciB0aGlzIGEgXFxcImJlc3QgZWZmb3J0XFxcIiBhcHByb2FjaC4gVGhlIGBgcmVzZXJ2ZV9tZW1gYCBvcHRpb25cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyOS0gICAgdGFrZXMgYSBzaXplLCBhbGlnbm1lbnQgYW5kIG5hbWUgYXMgYXJndW1lbnRzLiBUaGUgbmFtZSBpcyB1c2VkXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEzMS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEzMjpcXHRyZXNlcnZlX21lbT0yTTo0MDk2Om9vcHMgIHJhbW9vcHMubWVtX25hbWU9b29wc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTMzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3Q9MjY0PU5PVEU6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3Q6MjY1OiAgICAgMS4gJ2ZhZHVtcF9yZXNlcnZlX21lbT0nIHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBJbnN0ZWFkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3QtMjY2LSAgICAgICAgdXNlICdjcmFzaGtlcm5lbD0nIHRvIHNwZWNpZnkgc2l6ZSBvZiB0aGUgbWVtb3J5IHRvIHJlc2VydmVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC94ODYvcGF0LnJzdD0zND10aGVpciBpbnRlbmRlZCB1c2FnZSBhbmQgdGhlaXIgbWVtb3J5IGF0dHJpYnV0ZSByZWxhdGlvbnNoaXBzLiBJbnRlcm5hbGx5LFxcbkRvY3VtZW50YXRpb24vYXJjaC94ODYvcGF0LnJzdDozNTp0aGVzZSBBUElzIHVzZSBhIHJlc2VydmVfbWVtdHlwZSgpL2ZyZWVfbWVtdHlwZSgpIGludGVyZmFjZSBvbiB0aGUgcGh5c2ljYWxcXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3QtMzYtYWRkcmVzcyByYW5nZSB0byBhdm9pZCBhbnkgYWxpYXNpbmcuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTA2PUFub3RoZXIgbW9yZSBnZW5lcmljIGJ1dCBsZXNzIHJvYnVzdCB3YXkgdG8gYWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBtYXBwaW5nXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwNzphdCBib290IGlzIHdpdGggdGhlIFxcXCJyZXNlcnZlX21lbVxcXCIgb3B0aW9uOjpcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMDk6ICByZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMTAtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExMTpUaGUgcmVzZXJ2ZV9tZW0gb3B0aW9uIGFib3ZlIHdpbGwgZmluZCAxMiBtZWdhYnl0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGF0XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTExMi1ib290IHVwLCBhbmQgYWxpZ24gaXQgYnkgNDA5NiBieXRlcy4gSXQgd2lsbCBsYWJlbCB0aGlzIG1lbW9yeSBhcyBcXFwidHJhY2VcXFwiXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTE1PVRoZSB0cmFjZV9pbnN0YW5jZSBvcHRpb24gY3JlYXRlcyBhIFxcXCJib290X21hcFxcXCIgaW5zdGFuY2UgYW5kIHdpbGwgdXNlIHRoZVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMTY6bWVtb3J5IHJlc2VydmVkIGJ5IHJlc2VydmVfbWVtIHRoYXQgd2FzIGxhYmVsZWQgYXMgXFxcInRyYWNlXFxcIi4gVGhpcyBtZXRob2QgaXNcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTE3LW1vcmUgZ2VuZXJpYyBidXQgbWF5IG5vdCBiZSBhcyByZWxpYWJsZS4gRHVlIHRvIEtBU0xSLCB0aGUgbWVtb3J5IHJlc2VydmVkXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExODpieSByZXNlcnZlX21lbSBtYXkgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHNhbWUgbG9jYXRpb24uIElmIHRoaXMgaGFwcGVucyxcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTE5LXRoZW4gdGhlIHJpbmcgYnVmZmVyIHdpbGwgbm90IGJlIGZyb20gdGhlIHByZXZpb3VzIGJvb3QgYW5kIHdpbGwgYmUgcmVzZXQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTIxPVNvbWV0aW1lcywgYnkgdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCBpdCBjYW4ga2VlcCBLQVNMUiBmcm9tIG1vdmluZyB0aGluZ3NcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTIyOmFyb3VuZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgd2lsbCBtb3ZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgcmVzZXJ2ZV9tZW0uIEJ5XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyMy11c2luZyBhIGxhcmdlciBhbGlnbm1lbnQsIHlvdSBtYXkgZmluZCBiZXR0ZXIgdGhhdCB0aGUgYnVmZmVyIGlzIG1vcmVcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTI0PWNvbnNpc3RlbnQgdG8gd2hlcmUgaXQgaXMgcGxhY2VkOjpcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMjY6ICByZXNlcnZlX21lbT0xMk06MHgyMDAwMDAwOnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyNy1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdD0xNTQ9RnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZTo6XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1NS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTU2OiAgcmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBedHJhY2VwcmludGtedHJhY2VvZmZAdHJhY2VcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTU3LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTE2OT1iYWNrdXAgaW5zdGFuY2UuIEZyb20gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6OlxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xNzAtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjE3MTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlLHNjaGVkLGlycSB0cmFjZV9pbnN0YW5jZT1iYWNrdXA9Ym9vdF9tYXBcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTcyLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMS0gKi9cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jOjIyOmludCBfX3dlYWsgb21hcF9zZWN1cmVfcmFtX3Jlc2VydmVfbWVtYmxvY2sodm9pZClcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jLTIzLXtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM9Mjc9dm9pZCBfX2luaXQgb21hcF9yZXNlcnZlKHZvaWQpXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yOC17XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYzoyOTpcXHRvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jaygpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM6MzA6XFx0b21hcF9iYXJyaWVyX3Jlc2VydmVfbWVtYmxvY2soKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jLTMxLX1cXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg9MTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwNDR4eF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAqY21kKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzQtI2lmZGVmIENPTkZJR19PTUFQX0lOVEVSQ09OTkVDVF9CQVJSSUVSXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaDoxNzU6dm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5oLTE3Ni12b2lkIG9tYXBfYmFycmllcnNfaW5pdCh2b2lkKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5oLTE3Ny0jZWxzZVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg6MTc4OnN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc5LXtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuYz05OD12b2lkIG9tYXBfc21jMSh1MzIgZm4sIHUzMiBhcmcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmMtMTEwLS8qIEFsbG9jYXRlIHRoZSBtZW1vcnkgdG8gc2F2ZSBzZWN1cmUgcmFtICovXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jOjExMTppbnQgX19pbml0IG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jLTExMi17XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg9NzI9ZXh0ZXJuIHUzMiBvbWFwX3NtYzModTMyIGlkLCB1MzIgcHJvY2VzcywgdTMyIGZsYWcsIHUzMiBwYXJncyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5oOjczOmV4dGVybiBpbnQgb21hcF9zZWN1cmVfcmFtX3Jlc2VydmVfbWVtYmxvY2sodm9pZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5oLTc0LWV4dGVybiB1MzIgc2F2ZV9zZWN1cmVfcmFtX2NvbnRleHQodTMyIGFyZ3NfcGEpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwNC1jb21tb24uYz0xNDY9b21hcF9hcmNoX2luaXRjYWxsKG9tYXA0X3NyYW1faW5pdCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE0OC0vKiBTdGVhbCBvbmUgcGFnZSBwaHlzaWNhbCBtZW1vcnkgZm9yIGJhcnJpZXIgaW1wbGVtZW50YXRpb24gKi9cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jOjE0OTp2b2lkIF9faW5pdCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcDQtY29tbW9uLmMtMTUwLXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYz0yOTU9dm9pZCBfX2lvbWVtICphY3BpX29zX2lvcmVtYXAoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0MS1cXHRcXHRcXHQgKiB0YWJsZSBvdmVycmlkZXMgcGFzc2VkIHZpYSBpbml0cmFtZnMsIHdoaWNoIGFyZVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYzozNDI6XFx0XFx0XFx0ICogcmVzZXJ2ZWQgaW4gbWVtb3J5IHVzaW5nIGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYSgpXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0My1cXHRcXHRcXHQgKiBiZWxvdy4gQXMgdGhpcyBwYXJ0aWN1bGFyIHVzZSBjYXNlIG9ubHkgcmVxdWlyZXNcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYz0zODk9aW50IGFwZWlfY2xhaW1fc2VhKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hY3BpLmM6NDM2OnZvaWQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL2FybTY0L2tlcm5lbC9hY3BpLmMtNDM3LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmM9MjEwPXN0YXRpYyB2b2lkIF9faW5pdCByZXF1ZXN0X3N0YW5kYXJkX3Jlc291cmNlcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDUtXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYzoyNDY6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDcte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNzEtfVxcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmM6MjcyOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3My1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9hY3BpLmM9MzQzPWFjcGlfbnVtYV94MmFwaWNfYWZmaW5pdHlfaW5pdChzdHJ1Y3QgYWNwaV9zcmF0X3gyYXBpY19jcHVfYWZmaW5pdHkgKnBhKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL2FjcGkuYy0zNzctXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL2FjcGkuYzozNzg6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3OS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYz01NDE9YXJjaF9pbml0Y2FsbChhcmNoX3Jlc2VydmVfcGlvX3JhbmdlKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NTQzOnN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jLTU0NC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NjgtfVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jOjU2OTphcmNoX2luaXRjYWxsKHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyk7XFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNTcwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oPTM1PWV4dGVybiBpbnQgZWFybHlfaW5pdF9kdF9zY2FuX2Z3X2R1bXAodW5zaWduZWQgbG9uZyBub2RlLCBjb25zdCBjaGFyICp1bmFtZSxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmgtMzYtXFx0XFx0XFx0XFx0ICAgICAgaW50IGRlcHRoLCB2b2lkICpkYXRhKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmg6Mzc6ZXh0ZXJuIGludCBmYWR1bXBfcmVzZXJ2ZV9tZW0odm9pZCk7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oLTM4LSNlbmRpZlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz04Mj12b2lkIF9faW5pdCBmYWR1bXBfY21hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtOTctXFx0ICogW2Jhc2UsIGVuZCkgc2hvdWxkIGJlIHJlc2VydmVkIGR1cmluZyBlYXJseSBpbml0IGluXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo5ODpcXHQgKiBmYWR1bXBfcmVzZXJ2ZV9tZW0oKS4gTm8gbmVlZCB0byBjaGVjayB0aGlzIGhlcmUgYXNcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTk5LVxcdCAqIGNtYV9pbml0X3Jlc2VydmVkX21lbSgpIGFscmVhZHkgY2hlY2tzIGZvciBvdmVybGFwLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz0zMjI9c3RhdGljIF9faW5pdCB1NjQgZmFkdW1wX2NhbGN1bGF0ZV9yZXNlcnZlX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMzI3LVxcdGlmIChmd19kdW1wLnJlc2VydmVfYm9vdHZhcilcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjMyODpcXHRcXHRwcl93YXJuKFxcXCInZmFkdW1wX3Jlc2VydmVfbWVtPScgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ2NyYXNoa2VybmVsPScgcGFyYW1ldGVyLlxcXFxuXFxcIik7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjktXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTM1OC1cXHRcXHQvKlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MzU5OlxcdFxcdCAqICdmYWR1bXBfcmVzZXJ2ZV9tZW09JyBpcyBiZWluZyB1c2VkIHRvIHJlc2VydmUgbWVtb3J5XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNjAtXFx0XFx0ICogZm9yIGZpcm13YXJlLWFzc2lzdGVkIGR1bXAuXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTQ5Mj1zdGF0aWMgYm9vbCBfX2luaXQgb3ZlcmxhcHNfcmVzZXJ2ZWRfcmFuZ2VzKHU2NCBiYXNlLCB1NjQgZW5kLCBpbnQgKmlkeClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE3LSAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTE4OnN0YXRpYyB1NjQgX19pbml0IGZhZHVtcF9sb2NhdGVfcmVzZXJ2ZV9tZW0odTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE5LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTQ4LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTQ5OmludCBfX2luaXQgZmFkdW1wX3Jlc2VydmVfbWVtKHZvaWQpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NTAte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02MTgtXFx0XFx0ICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2MTk6XFx0XFx0YmFzZSA9IGZhZHVtcF9sb2NhdGVfcmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTY2OD1lYXJseV9wYXJhbShcXFwiZmFkdW1wXFxcIiwgZWFybHlfZmFkdW1wX3BhcmFtKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjcwLS8qXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzE6ICogTG9vayBmb3IgZmFkdW1wX3Jlc2VydmVfbWVtPSBjbWRsaW5lIG9wdGlvblxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NjcyOiAqIFRPRE86IFJlbW92ZSByZWZlcmVuY2VzIHRvICdmYWR1bXBfcmVzZXJ2ZV9tZW09JyBwYXJhbWV0ZXIsXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzMtICogICAgICAgdGhlIHNvb25lciAnY3Jhc2hrZXJuZWw9JyBwYXJhbWV0ZXIgaXMgYWNjdXN0b21lZCB0by5cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3NC0gKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY3NTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9mYWR1bXBfcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3Ni17XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4MC19XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2ODE6ZWFybHlfcGFyYW0oXFxcImZhZHVtcF9yZXNlcnZlX21lbVxcXCIsIGVhcmx5X2ZhZHVtcF9yZXNlcnZlX21lbSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02ODItXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTE4Mjc9aW50IF9faW5pdCBlYXJseV9pbml0X2R0X3NjYW5fZndfZHVtcCh1bnNpZ25lZCBsb25nIG5vZGUsIGNvbnN0IGNoYXIgKnVuYW1lLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0xODQxLSAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MTg0MjppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMTg0My17XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTg9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjQzLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY0NDpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1fZHQodm9pZClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02NDUte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc2LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY3NzpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW0odm9pZClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02Nzgte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjg0LVxcdC8qIExvb2sgZm9yIHRoZSBuZXcgXFxcInJlc2VydmVkLXJlZ2lvbnNcXFwiIHByb3BlcnR5IGluIHRoZSBEVCAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY4NTpcXHRlYXJseV9yZXNlcnZlX21lbV9kdCgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY4Ni1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jPTc4Nz12b2lkIF9faW5pdCBlYXJseV9pbml0X2RldnRyZWUodm9pZCAqcGFyYW1zKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtODYwLVxcdCAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjg2MTpcXHRpZiAoZmFkdW1wX3Jlc2VydmVfbWVtKCkgPT0gMClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjItI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtODYzLVxcdFxcdGFyY2hfcmVzZXJ2ZV9jcmFzaGtlcm5lbCgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjg2NDpcXHRlYXJseV9yZXNlcnZlX21lbSgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTQxNT1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9zZW5kX2NhcGFiaWxpdGllcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xNTExLSAqXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxNTEyOiAqICBOb3RlIHRoYXQgY2FsbHMgdG8gcmVzZXJ2ZV9tZW0gaGF2ZSB0byBiZSBkb25lIGV4cGxpY2l0bHksIG1lbW9yeVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTUxMy0gKiAgYWxsb2NhdGVkIHdpdGggZWl0aGVyIGFsbG9jX3VwIG9yIGFsbG9jX2Rvd24gaXNuJ3QgYXV0b21hdGljYWxseVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0xNjI3PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBwcm9tX25leHRfY2VsbChpbnQgcywgY2VsbF90ICoqY2VsbHApXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE2NTUtICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxNjU2OnN0YXRpYyB2b2lkIF9faW5pdCByZXNlcnZlX21lbSh1NjQgYmFzZSwgdTY0IHNpemUpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xNjU3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTg2Nz1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9pbnN0YW50aWF0ZV9ydGFzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5MDgtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxOTA5OlxcdHJlc2VydmVfbWVtKGJhc2UsIHNpemUpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTkxMC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTkzND1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9pbnN0YW50aWF0ZV9zbWwodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTk5NC1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE5OTU6XFx0cmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xOTk2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0yMDEyPXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luaXRpYWxpemVfdGNlX3RhYmxlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTIxMjEtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoyMTIyOlxcdHJlc2VydmVfbWVtKGxvY2FsX2FsbG9jX2JvdHRvbSwgbG9jYWxfYWxsb2NfdG9wIC0gbG9jYWxfYWxsb2NfYm90dG9tKTtcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTIxMjMtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTMxODU9c3RhdGljIHZvaWQgX19pbml0IHByb21fY2hlY2tfaW5pdHJkKHVuc2lnbmVkIGxvbmcgcjMsIHVuc2lnbmVkIGxvbmcgcjQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTMyMDAtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzozMjAxOlxcdFxcdHJlc2VydmVfbWVtKHByb21faW5pdHJkX3N0YXJ0LFxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMzIwMi1cXHRcXHRcXHQgICAgcHJvbV9pbml0cmRfZW5kIC0gcHJvbV9pbml0cmRfc3RhcnQpO1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTM1NT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX2dldF9jcHVfdWlkKTtcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU2LVxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozNTc6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU4LXtcXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM9MTM1PXN0YXRpYyB2b2lkIF9faW5pdCBpbml0X3Jlc291cmNlcyh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjYtXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYzoyMjc6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjgte1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yNTItfVxcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjUzOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jLTI1NC1cXG4tLVxcbmFyY2gvc2gvbW0vaW5pdC5jPTIxNj1zdGF0aWMgdm9pZCBfX2luaXQgZG9faW5pdF9ib290bWVtKHZvaWQpXFxuLS1cXG5hcmNoL3NoL21tL2luaXQuYy0yMzEtXFxuYXJjaC9zaC9tbS9pbml0LmM6MjMyOnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxcbmFyY2gvc2gvbW0vaW5pdC5jLTIzMy17XFxuLS1cXG5hcmNoL3NoL21tL2luaXQuYz0yNzA9dm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZClcXG4tLVxcbmFyY2gvc2gvbW0vaW5pdC5jLTI3NS1cXG5hcmNoL3NoL21tL2luaXQuYzoyNzY6XFx0ZWFybHlfcmVzZXJ2ZV9tZW0oKTtcXG5hcmNoL3NoL21tL2luaXQuYy0yNzctXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oPTM0OT1leHRlcm4gdm9pZCBhcmNoX3BoeXNfd2NfZGVsKGludCBoYW5kbGUpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTMtI2lmZGVmIENPTkZJR19YODZfUEFUXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaDozNTQ6ZXh0ZXJuIGludCBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oLTM1NS1leHRlcm4gdm9pZCBhcmNoX2lvX2ZyZWVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NjojZGVmaW5lIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTctI2VuZGlmXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmM9MTgxND1pbnQgX19hY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2sodW5zaWduZWQgaW50ICpsb2NrKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jLTE4MjQtXFxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jOjE4MjU6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmMtMTgyNi17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jPTU0Nz12b2lkIF9faW5pdCBtcHBhcnNlX3BhcnNlX3NtcF9jb25maWcodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTUxLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTUyOnN0YXRpYyB2b2lkIF9faW5pdCBzbXBfcmVzZXJ2ZV9tZW1vcnkoc3RydWN0IG1wZl9pbnRlbCAqbXBmKVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTUzLXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM9NTU3PXN0YXRpYyBpbnQgX19pbml0IHNtcF9zY2FuX2NvbmZpZyh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL21wcGFyc2UuYy01ODQtXFx0XFx0XFx0aWYgKG1wZi1cXHUwMDNlcGh5c3B0cilcXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jOjU4NTpcXHRcXHRcXHRcXHRzbXBfcmVzZXJ2ZV9tZW1vcnkobXBmKTtcXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU4Ni1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jPTc3Nz1zdGF0aWMgdm9pZCBfX2luaXQgZTgyMF9hZGRfa2VybmVsX3JhbmdlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy03OTYtXFxuYXJjaC94ODYva2VybmVsL3NldHVwLmM6Nzk3OnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbW9yeSh2b2lkKVxcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5OC17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYz04ODQ9dm9pZCBfX2luaXQgc2V0dXBfYXJjaChjaGFyICoqY21kbGluZV9wKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3NldHVwLmMtOTcxLVxcdCAqL1xcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjk3MjpcXHRlYXJseV9yZXNlcnZlX21lbW9yeSgpO1xcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTk3My1cXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmM9NzQ4PXZvaWQgbWVtdHlwZV9mcmVlX2lvKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IGVuZClcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzUzLSNpZmRlZiBDT05GSUdfWDg2X1BBVFxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmM6NzU0OmludCBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzU1LXtcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzU5LX1cXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jOjc2MDpFWFBPUlRfU1lNQk9MKGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKTtcXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc2MS1cXG4tLVxcbmRyaXZlcnMvYWNwaS90YWJsZXMuYz00MjI9dm9pZCBfX2luaXQgYWNwaV90YWJsZV91cGdyYWRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTA4LVxcdCAqIHRoYXQgc2hvdWxkIGdldCBtYXBwZWQgYXJlIG5vdCBtYXJrZWQgXFxcInJlc2VydmVkXFxcIi5cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM6NTA5OlxcdCAqIEJvdGggbWVtYmxvY2tfcmVzZXJ2ZSBhbmQgZTgyMF9fcmFuZ2VfYWRkICh2aWEgYXJjaF9yZXNlcnZlX21lbV9hcmVhKVxcbmRyaXZlcnMvYWNwaS90YWJsZXMuYy01MTAtXFx0ICogd29ya3MgZmluZS5cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTExLVxcdCAqL1xcbmRyaXZlcnMvYWNwaS90YWJsZXMuYzo1MTI6XFx0YXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfdGFibGVzX2FkZHIsIGFsbF90YWJsZXNfc2l6ZSk7XFxuZHJpdmVycy9hY3BpL3RhYmxlcy5jLTUxMy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaD0zNjY9aW50IGFtZGdwdV9hbWRrZmRfY3JpdV9yZXN1bWUodm9pZCAqcCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oOjM2NzppbnQgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmgtMzY4LVxcdFxcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmg6MzY5OnZvaWQgYW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaC0zNzAtXFx0XFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jPTEzNz12b2lkIGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9zeXN0ZW1fbWVtKHVpbnQ2NF90IHNpemUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTU1LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoxNTY6ICogYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdCgpIC0gRGVjcmVhc2UgYXZhaWxhYmxlIG1lbW9yeSBieSBzaXplXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE1Ny0gKiBvZiBidWZmZXIuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTY4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoxNjk6aW50IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE3MC1cXHRcXHR1aW50NjRfdCBzaXplLCB1MzIgYWxsb2NfZmxhZywgaW50OF90IHhjcF9pZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0yNjQtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjI2NTp2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMjY2LVxcdFxcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jPTMwOT12b2lkIGFtZGdwdV9hbWRrZmRfcmVsZWFzZV9ub3RpZnkoc3RydWN0IGFtZGdwdV9ibyAqYm8pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMzE0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzozMTU6XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KGFkZXYsIHNpemUsIGFsbG9jX2ZsYWdzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0zMTYtXFx0XFx0XFx0XFx0XFx0ICBiby1cXHUwMDNleGNwX2lkKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYz0xNzA5PWludCBhbWRncHVfYW1ka2ZkX2dwdXZtX2FsbG9jX21lbW9yeV9vZl9ncHUoXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTgwNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM6MTgwODpcXHRyZXQgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE4MDktXFx0XFx0XFx0XFx0XFx0ICAgICAgeGNwX2lkKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODkxLWVycl9ib19jcmVhdGU6XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4OTI6XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsIHhjcF9pZCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE4OTMtZXJyX3Jlc2VydmVfbGltaXQ6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM9MTA2Nz1pbnQgYW1kZ3B1X2JvX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3MS1cXHRcXHQvKiByZXNlcnZlIFBBVCBtZW1vcnkgc3BhY2UgdG8gV0MgZm9yIFZSQU0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM6MTA3MjpcXHRcXHRpbnQgciA9IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGFkZXYtXFx1MDAzZWdtYy5hcGVyX2Jhc2UsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jLTEwNzMtXFx0XFx0XFx0XFx0YWRldi1cXHUwMDNlZ21jLmFwZXJfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jPTE3MDk9c3RhdGljIGludCBrZmRfaW9jdGxfc2V0X3huYWNrX21vZGUoc3RydWN0IGZpbGUgKmZpbGVwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYy0xNzMwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmM6MTczMTpcXHRcXHRyID0gc3ZtX3JhbmdlX3N3aXRjaF94bmFja19yZXNlcnZlX21lbShwLCBhcmdzLVxcdTAwM2V4bmFja19lbmFibGVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzItXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NDg4PXN2bV9taWdyYXRlX3JhbV90b192cmFtKHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSwgdWludDMyX3QgYmVzdF9sb2MsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTUxNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjUxODpcXHRyID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChub2RlLVxcdTAwM2VhZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTE5LVxcdFxcdFxcdFxcdFxcdHByYW5nZS1cXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy01NjMtb3V0OlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NTY0OlxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChub2RlLVxcdTAwM2VhZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTY1LVxcdFxcdFxcdFxcdFxcdHByYW5nZS1cXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jPTI3OT1zdGF0aWMgdm9pZCBzdm1fcmFuZ2VfZnJlZShzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsIGJvb2wgZG9fdW5tYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzA0LVxcdFxcdHByX2RlYnVnKFxcXCJ1bnJlc2VydmUgcHJhbmdlIDB4JXAgc2l6ZTogMHglbGx4XFxcXG5cXFwiLCBwcmFuZ2UsIHNpemUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMDU6XFx0XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMwNi1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMzU9c3ZtX3JhbmdlICpzdm1fcmFuZ2VfbmV3KHN0cnVjdCBzdm1fcmFuZ2VfbGlzdCAqc3ZtcywgdWludDY0X3Qgc3RhcnQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzQ3LVxcdGlmICghcC1cXHUwMDNleG5hY2tfZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiB1cGRhdGVfbWVtX3VzYWdlIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjM0ODpcXHQgICAgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTM0OS1cXHRcXHRcXHRcXHQgICAgS0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCkpIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMjgyPWludFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMjgzOnN2bV9yYW5nZV9zd2l0Y2hfeG5hY2tfcmVzZXJ2ZV9tZW0oc3RydWN0IGtmZF9wcm9jZXNzICpwLCBib29sIHhuYWNrX2VuYWJsZWQpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyODQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyOTgtXFx0XFx0XFx0aWYgKHhuYWNrX2VuYWJsZWQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI5OTpcXHRcXHRcXHRcXHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMwMC1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMwMS1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzAyOlxcdFxcdFxcdFxcdHIgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDMtXFx0XFx0XFx0XFx0XFx0S0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxMS1cXHRcXHRpZiAoeG5hY2tfZW5hYmxlZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzEyOlxcdFxcdFxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzEzLVxcdFxcdFxcdFxcdFxcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzE0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjMzMTU6XFx0XFx0XFx0ciA9IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxNi1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI3LVxcdGlmIChyKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzI4OlxcdFxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCByZXNlcnZlZF9zaXplLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI5LVxcdFxcdFxcdFxcdFxcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oPTIxND12b2lkIHN2bV9yYW5nZV9zZXRfbWF4X3BhZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmg6MjE1OmludCBzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwgYm9vbCB4bmFja19lbmFibGVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmgtMjE2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYz03Mz1pbnQgYXN0X21tX2luaXQoc3RydWN0IGFzdF9kZXZpY2UgKmFzdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmMtODMtXFx0LyogRG9uJ3QgZmFpbCBvbiBlcnJvcnMsIGJ1dCBwZXJmb3JtYW5jZSBtaWdodCBiZSByZWR1Y2VkLiAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmM6ODQ6XFx0ZGV2bV9hcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhkZXYtXFx1MDAzZWRldiwgYmFzZSwgc2l6ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYy04NS1cXHRkZXZtX2FyY2hfcGh5c193Y19hZGQoZGV2LVxcdTAwM2VkZXYsIGJhc2UsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYz0yNzA9bm91dmVhdV90dG1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmMtMzI0LVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmM6MzI1OlxcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGRldmljZS1cXHUwMDNlZnVuYy1cXHUwMDNlcmVzb3VyY2VfYWRkcihkZXZpY2UsIE5WS01fQkFSMV9GQiksXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjYtXFx0XFx0XFx0XFx0ICAgZGV2aWNlLVxcdTAwM2VmdW5jLVxcdTAwM2VyZXNvdXJjZV9zaXplKGRldmljZSwgTlZLTV9CQVIxX0ZCKSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYz0zODY9aW50IHJhZGVvbl9ib19pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzg4LVxcdC8qIHJlc2VydmUgUEFUIG1lbW9yeSBzcGFjZSB0byBXQyBmb3IgVlJBTSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jOjM4OTpcXHRhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZGV2LVxcdTAwM2VtYy5hcGVyX2Jhc2UsXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzkwLVxcdFxcdFxcdFxcdCAgIHJkZXYtXFx1MDAzZW1jLmFwZXJfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTExOD1zdGF0aWMgaW50IGZkdF9maXh1cF9yZXNlcnZlZF9tZW1fbm9kZSh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTEyMC1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjEyMTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KHBoeXNfYWRkcl90IGJhc2UsXFxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xMjItXFx0XFx0XFx0XFx0XFx0ICAgICAgIHBoeXNfYWRkcl90IHNpemUsIGJvb2wgbm9tYXApXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTE0Mz1zdGF0aWMgaW50IF9faW5pdCBfX3Jlc2VydmVkX21lbV9yZXNlcnZlX3JlZyh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTE2OS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjE3MDpcXHRpZiAoc2l6ZSBcXHUwMDI2XFx1MDAyNiBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KGJhc2UsIHNpemUsIG5vbWFwKSA9PSAwKSB7XFxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xNzEtXFx0XFx0ZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKG5vZGUsIGJhc2UsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYz0yOT1zdGF0aWMgaW50IHBucF9yZXNlcnZlX2lvWzE2XSA9IHtbMCAuLi4gMTVdID0gLTEgfTtcXHQvKiByZXNlcnZlIChkb24ndCB1c2UpIHNvbWUgSS9PIHJlZ2lvbiAqL1xcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MzA6c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9tZW1bMTZdID0ge1swIC4uLiAxNV0gPSAtMSB9O1xcdC8qIHJlc2VydmUgKGRvbid0IHVzZSkgc29tZSBtZW1vcnkgcmVnaW9uICovXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYy0zMS1cXG4tLVxcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9MjMwPWludCBwbnBfY2hlY2tfbWVtKHN0cnVjdCBwbnBfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxcbi0tXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYy0yNTMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MjU0OlxcdFxcdGludCByYWRkciA9IHBucF9yZXNlcnZlX21lbVtpIFxcdTAwM2NcXHUwMDNjIDFdO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo1MC4zMjg1NDkwMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTY3ODM3MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG1lbW9yeSBpcyBiZWluZyByZXNlcnZlZCwgc28gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGBtbS9tZW1ibG9jay5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4gS25vd2luZyB0aGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbiwgSSBleHBlY3QgaXQgdG8gY29udGFpbiB0aGUgZGV0YWlscyBvZiBob3cgcGh5c2ljYWwgbWVtb3J5IGlzIGFsbG9jYXRlZCBiZWZvcmUgdGhlIG1vcmUgYWR2YW5jZWQgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtcyBjb21lIGludG8gcGxheS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbidzIGNyaXRpY2FsIGFzcGVjdHMsIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyAyNzUwIHRocm91Z2ggMjg3MCBpbiB0aGUgZmlsZS4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyBzZWN0aW9uIHdpbGwgY29udGFpbiB0aGUgY3J1Y2lhbCBsb2dpYyBmb3IgcHJlLWJvb3QgbWVtb3J5IHJlc2VydmF0aW9uLiBIb3BlZnVsbHksIEknbGwgc2VlIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBCSU9TIG9yIGZpcm13YXJlIGR1cmluZyBlYXJseSBib290IHN0YWdlcyBoZXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBoZXJlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgbWVtb3J5IHJlc291cmNlIG1hbmFnZW1lbnQgaW4gZ2VuZXJhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo1My4yOTYzODkwODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL21lbWJsb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc1MDpcXHRcXHRpZiAoZXJyKSB7XFxuMjc1MTpcXHRcXHRcXHRwcl93YXJuKFxcXCJOb2RlICclcycgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVzJzogJWRcXFxcblxcXCIsXFxuMjc1MjpcXHRcXHRcXHRcXHRuYW1lLCBSRVNFUlZFX01FTV9LSE9fTk9ERV9DT01QQVRJQkxFLCBlcnIpO1xcbjI3NTM6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI3NTQ6XFx0XFx0fVxcbjI3NTU6XFx0XFxuMjc1NjpcXHRcXHRwX3N0YXJ0ID0gZmR0X2dldHByb3AoZmR0LCBvZmZzZXQsIFxcXCJzdGFydFxcXCIsIFxcdTAwMjZsZW5fc3RhcnQpO1xcbjI3NTc6XFx0XFx0cF9zaXplID0gZmR0X2dldHByb3AoZmR0LCBvZmZzZXQsIFxcXCJzaXplXFxcIiwgXFx1MDAyNmxlbl9zaXplKTtcXG4yNzU4OlxcdFxcdGlmICghcF9zdGFydCB8fCBsZW5fc3RhcnQgIT0gc2l6ZW9mKCpwX3N0YXJ0KSB8fCAhcF9zaXplIHx8XFxuMjc1OTpcXHRcXHQgICAgbGVuX3NpemUgIT0gc2l6ZW9mKCpwX3NpemUpKSB7XFxuMjc2MDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjc2MTpcXHRcXHR9XFxuMjc2MjpcXHRcXG4yNzYzOlxcdFxcdGlmICgqcF9zdGFydCBcXHUwMDI2IChhbGlnbiAtIDEpKSB7XFxuMjc2NDpcXHRcXHRcXHRwcl93YXJuKFxcXCJLSE8gcmVzZXJ2ZS1tZW0gJyVzJyBoYXMgd3JvbmcgYWxpZ25tZW50ICgweCVseCwgMHglbHgpXFxcXG5cXFwiLFxcbjI3NjU6XFx0XFx0XFx0XFx0bmFtZSwgKGxvbmcpYWxpZ24sIChsb25nKSpwX3N0YXJ0KTtcXG4yNzY2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNzY3OlxcdFxcdH1cXG4yNzY4OlxcdFxcbjI3Njk6XFx0XFx0aWYgKCpwX3NpemUgIT0gc2l6ZSkge1xcbjI3NzA6XFx0XFx0XFx0cHJfd2FybihcXFwiS0hPIHJlc2VydmUtbWVtICclcycgaGFzIHdyb25nIHNpemUgKDB4JWx4ICE9IDB4JWx4KVxcXFxuXFxcIixcXG4yNzcxOlxcdFxcdFxcdFxcdG5hbWUsIChsb25nKSpwX3NpemUsIChsb25nKXNpemUpO1xcbjI3NzI6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI3NzM6XFx0XFx0fVxcbjI3NzQ6XFx0XFxuMjc3NTpcXHRcXHRyZXNlcnZlZF9tZW1fYWRkKCpwX3N0YXJ0LCBzaXplLCBuYW1lKTtcXG4yNzc2OlxcdFxcdHByX2luZm8oXFxcIlJldml2ZWQgbWVtb3J5IHJlc2VydmF0aW9uICclcycgZnJvbSBLSE9cXFxcblxcXCIsIG5hbWUpO1xcbjI3Nzc6XFx0XFxuMjc3ODpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4yNzc5OlxcdH1cXG4yNzgwOlxcdCNlbHNlXFxuMjc4MTpcXHRzdGF0aWMgYm9vbCBfX2luaXQgcmVzZXJ2ZV9tZW1fa2hvX3Jldml2ZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCBzaXplLFxcbjI3ODI6XFx0XFx0XFx0XFx0XFx0XFx0ICBwaHlzX2FkZHJfdCBhbGlnbilcXG4yNzgzOlxcdHtcXG4yNzg0OlxcdFxcdHJldHVybiBmYWxzZTtcXG4yNzg1OlxcdH1cXG4yNzg2OlxcdCNlbmRpZiAvKiBDT05GSUdfS0VYRUNfSEFORE9WRVIgKi9cXG4yNzg3OlxcdFxcbjI3ODg6XFx0LypcXG4yNzg5OlxcdCAqIFBhcnNlIHJlc2VydmVfbWVtPW5uOmFsaWduOm5hbWVcXG4yNzkwOlxcdCAqL1xcbjI3OTE6XFx0c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG4yNzkyOlxcdHtcXG4yNzkzOlxcdFxcdHBoeXNfYWRkcl90IHN0YXJ0LCBzaXplLCBhbGlnbiwgdG1wO1xcbjI3OTQ6XFx0XFx0Y2hhciAqbmFtZTtcXG4yNzk1OlxcdFxcdGNoYXIgKm9sZHA7XFxuMjc5NjpcXHRcXHRpbnQgbGVuO1xcbjI3OTc6XFx0XFxuMjc5ODpcXHRcXHRpZiAoIXApXFxuMjc5OTpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODAwOlxcdFxcbjI4MDE6XFx0XFx0LyogQ2hlY2sgaWYgdGhlcmUncyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xcbjI4MDI6XFx0XFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcXHUwMDNlPSBSRVNFUlZFX01FTV9NQVhfRU5UUklFUykge1xcbjI4MDM6XFx0XFx0XFx0cHJfZXJyKFxcXCJyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXFxcblxcXCIpO1xcbjI4MDQ6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4yODA1OlxcdFxcdH1cXG4yODA2OlxcdFxcbjI4MDc6XFx0XFx0b2xkcCA9IHA7XFxuMjgwODpcXHRcXHRzaXplID0gbWVtcGFyc2UocCwgXFx1MDAyNnApO1xcbjI4MDk6XFx0XFx0aWYgKCFzaXplIHx8IHAgPT0gb2xkcClcXG4yODEwOlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTE6XFx0XFxuMjgxMjpcXHRcXHRpZiAoKnAgIT0gJzonKVxcbjI4MTM6XFx0XFx0XFx0Z290byBlcnJfcGFyYW07XFxuMjgxNDpcXHRcXG4yODE1OlxcdFxcdGFsaWduID0gbWVtcGFyc2UocCsxLCBcXHUwMDI2cCk7XFxuMjgxNjpcXHRcXHRpZiAoKnAgIT0gJzonKVxcbjI4MTc6XFx0XFx0XFx0Z290byBlcnJfcGFyYW07XFxuMjgxODpcXHRcXG4yODE5OlxcdFxcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XFxuMjgyMDpcXHRcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxcXG5cXFwiKTtcXG4yODIxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI4MjI6XFx0XFx0fVxcbjI4MjM6XFx0XFxuMjgyNDpcXHRcXHQvKlxcbjI4MjU6XFx0XFx0ICogbWVtYmxvY2tfcGh5c19hbGxvYygpIGRvZXNuJ3QgbGlrZSBhIHplcm8gc2l6ZSBhbGlnbixcXG4yODI2OlxcdFxcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXFxuMjgyNzpcXHRcXHQgKi9cXG4yODI4OlxcdFxcdGlmICghYWxpZ24pXFxuMjgyOTpcXHRcXHRcXHRhbGlnbiA9IFBBR0VfU0laRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTU6NTMuMjk2NTQ0ODk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMTcyNDU5NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpczogcmVzZXJ2ZV9tZW0oKSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBzZWUgYSBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgcmVzZXJ2ZV9tZW1gIGZ1bmN0aW9uLCBhbmQgbXkgam9iIGlzIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlIHdpdGggU3l6a2FsbGVyLlxuXG5GaXJzdCwgSSBvYnNlcnZlIHRoYXQgYF9fc2V0dXAoXCJyZXNlcnZlX21lbT1cIiwgcmVzZXJ2ZV9tZW0pYCBpcyBpbnZvbHZlZC4gVGhpcyBpcyBrZXkuIGBfX3NldHVwYCBpbmRpY2F0ZXMgdGhhdCBgcmVzZXJ2ZV9tZW1gIGlzIHRpZWQgdG8ga2VybmVsIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgcGFyc2luZywgd2hpY2ggaGFwcGVucyB2ZXJ5IGVhcmx5IGR1cmluZyBib290LCBiZWZvcmUgdXNlcnNwYWNlIGV2ZW4gc3RhcnRzLiBJdCdzIGV4ZWN1dGVkIHdpdGhpbiB0aGUgYGRvX2luaXRjYWxsYCAvIGBwYXJzZV9lYXJseV9wYXJhbWAgLyBgcGFyc2VfYXJnc2AgcGhhc2UuXG5cbkkgY29uZmlybSB0aGF0IGByZXNlcnZlX21lbWAgaXMgYHN0YXRpY2AgYW5kIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBUaGlzIG1lYW5zIGl0J3Mgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gYmUgZGlzY2FyZGVkIG9uY2UgYm9vdCBpcyBjb21wbGV0ZS4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLCBidXQgbGV0J3MgYmUgdGhvcm91Z2guXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgU3l6a2FsbGVyIGlzIHRoYXQgaXQgb3BlcmF0ZXMgaW4gYSBydW5uaW5nIGtlcm5lbCBlbnZpcm9ubWVudCwgdGFyZ2V0aW5nIHN5c2NhbGxzIGFuZCBnZW5lcmF0ZWQgcHJvZ3JhbXMuIFN5emthbGxlciBjYW5ub3QgZHluYW1pY2FsbHkgcmUtaW52b2tlIGJvb3QtdGltZSBwYXJhbWV0ZXJzIG9yIGBfX2luaXRgIGZ1bmN0aW9ucy4gSXQgc2ltcGx5ICpjYW4ndCogZGlyZWN0bHkgcGFzcyBhIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgdG8gYHJlc2VydmVfbWVtYCBhZnRlciB0aGUga2VybmVsIGlzIGJvb3RlZC4gSXQncyBmdW5kYW1lbnRhbGx5IHVuYWJsZSB0byByZWFjaCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuXG5cbkNoZWNraW5nIHRoZSBwcm9qZWN0IGRvY3VtZW50YXRpb24sIEkgaGF2ZSB0byBlbnN1cmUgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBNeSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCBpcyBub3QsIGJ1dCBJIHdpbGwgY2hlY2sgdGhlIG90aGVyIGFyZWFzLlxuXG5TZWN0aW9uIDIgY2xlYXJseSBvdXRsaW5lcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBhcmUgb3V0LiBCdXQgdGhlIG9uZSB0aGF0IHJlYWxseSBqdW1wcyBvdXQgaXMgdGhlIFwiQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlXCIsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBteSBhc3N1bXB0aW9ucy4gVGhlIHBhdGNoIGNoYW5nZXMgaW5jbHVkZTpcbjEuIERvY3VtZW50YXRpb24gdXBkYXRlcy4gSXJyZWxldmFudCB0byBmdXp6aW5nLlxuMi4gQ2hhbmdlcyB3aXRoaW4gYG1tL21lbWJsb2NrLmNgIHRvIGByZXNlcnZlX21lbWA6IGFuIGFkZGVkIGNoZWNrIGBpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSlgIGFuZCBhIGNoYW5nZSB0byB0aGUgZmFsbGJhY2sgYWxpZ25tZW50IGBpZiAoIWFsaWduKSBhbGlnbiA9IFBBR0VfU0laRTtgXG5cbkNydWNpYWxseSwgYm90aCBjaGFuZ2VzIGFyZSBzdHJpY3RseSAqaW5zaWRlKiB0aGUgYF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgb25seSB0aHJvdWdoIGBfX3NldHVwKFwicmVzZXJ2ZV9tZW09XCIsIHJlc2VydmVfbWVtKWAuXG5cbkkndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGF0IGByZXNlcnZlX21lbWAgaXMgYF9faW5pdGAsIG1lYW5pbmcgaXQgcmVzaWRlcyBpbiB0aGUgYC5pbml0LnRleHRgIHNlY3Rpb24uIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUga2VybmVsIGNhbGxzIGBmcmVlX2luaXRtZW0oKWAsIGZyZWVpbmcgdGhlIGAuaW5pdC50ZXh0YCBhbmQgYC5pbml0LmRhdGFgIHBhZ2VzLiBUaHVzLCBpdCdzIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBTeXprYWxsZXIgY2FuIGV2ZW4gdGhpbmsgYWJvdXQgcmVhY2hpbmcgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlYmFzZS5cblxuVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgYXMgbW9kaWZpZWQsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBieSBTeXprYWxsZXIgZHVyaW5nIHJ1bnRpbWUgZnV6emluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb2RlIGlzIHNwZWNpZmljYWxseSBwYXJ0IG9mIHRoZSBlYXJseSBib290IHByb2Nlc3MgYW5kIGlzIGRpc2NhcmRlZCBiZWZvcmUgdGhlIGZ1enplciBldmVuIGJlZ2lucy5cblxuU28sIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czpcbi0gICBgV29ydGhGdXp6aW5nOiBmYWxzZWBcbi0gICBgRW5hYmxlQ29uZmlnczogW11gXG4tICAgYEZvY3VzU3ltYm9sczogW11gXG4tICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRvY3VtZW50YXRpb24gYW5kIHRoZSBgX19pbml0YCBib290LXRpbWUgcGFyYW1ldGVyIHBhcnNpbmcgZnVuY3Rpb24gYHJlc2VydmVfbWVtKClgLCB3aGljaCBpcyBleGVjdXRlZCBkdXJpbmcgZWFybHkga2VybmVsIGJvb3QgKHZpYSBgX19zZXR1cGApIGFuZCBkaXNjYXJkZWQgYmVmb3JlIHVzZXJzcGFjZS9mdXp6ZXIgZXhlY3V0aW9uLiBJdCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjMzLCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTY6MDQuNDY5MDA4MDA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NjowNC40NjkwMzQ0OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg5p4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 14:54:27 +0000 UTC FinishedAt: 2026-09-06 14:56:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMDQ2NWRhMzA4OThmMDY0ODVjNmE1YTY5MWZhYzI5NjUxZDZiZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNDo1NTozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5pbmRleCA2ODY0N2ZmNGJkZDI0Li5mOTY5MDg1ZmZmYjdkIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5AQCAtNjY0OCw2ICYjNDM7NjY0OCw5IEBAIEtlcm5lbCBwYXJhbWV0ZXJzXG4gXG4gXHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHNcbiBcbiYjNDM7XHRcdFx0Qm90aCB0aGUgc2l6ZSBhbmQgdGhlIGFsaWdubWVudCBtdXN0IGJlIG11bHRpcGxlcyBvZlxuJiM0MztcdFx0XHR0aGUgcGFnZSBzaXplLlxuJiM0MztcbiBcdHJlc2VydmV0b3A9XHRbWDg2LTMyLEVBUkxZXVxuIFx0XHRcdEZvcm1hdDogbm5bS01HXVxuIFx0XHRcdFJlc2VydmVzIGEgaG9sZSBhdCB0aGUgdG9wIG9mIHRoZSBrZXJuZWwgdmlydHVhbFxuZGlmZiAtLWdpdCBhL21tL21lbWJsb2NrLmMgYi9tbS9tZW1ibG9jay5jXG5pbmRleCA0MzAyZmI0YWI4NWM3Li41ZTkzYjZkYTUzZTMwIDEwMDY0NFxuLS0tIGEvbW0vbWVtYmxvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtYmxvY2suY1xuQEAgLTI4MTYsMTIgJiM0MzsyODE2LDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApXG4gXHRpZiAoKnAgIT0gJiMzOTs6JiMzOTspXG4gXHRcdGdvdG8gZXJyX3BhcmFtO1xuIFxuJiM0MztcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7cmVzZXJ2ZV9tZW06IHNpemUgYW5kIGFsaWduIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoZSBwYWdlIHNpemVcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qXG4gXHQgKiBtZW1ibG9ja19waHlzX2FsbG9jKCkgZG9lc24mIzM5O3QgbGlrZSBhIHplcm8gc2l6ZSBhbGlnbixcbiBcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXG4gXHQgKi9cbi1cdGlmIChhbGlnbiBcdTAwM2MgU01QX0NBQ0hFX0JZVEVTKVxuLVx0XHRhbGlnbiA9IFNNUF9DQUNIRV9CWVRFUztcbiYjNDM7XHRpZiAoIWFsaWduKVxuJiM0MztcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4gXG4gXHRuYW1lID0gcCAmIzQzOyAxO1xuIFx0bGVuID0gc3RybGVuKG5hbWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDA0NjVkYTMwODk4ZjA2NDg1YzZhNWE2OTFmYWMyOTY1MWQ2YmVlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMTQ6NTU6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDY4NjQ3ZmY0YmRkMjQuLmY5NjkwODVmZmZiN2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC02NjQ4LDYgJiM0Mzs2NjQ4LDkgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJcmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHMKIAomIzQzOwkJCUJvdGggdGhlIHNpemUgYW5kIHRoZSBhbGlnbm1lbnQgbXVzdCBiZSBtdWx0aXBsZXMgb2YKJiM0MzsJCQl0aGUgcGFnZSBzaXplLgomIzQzOwogCXJlc2VydmV0b3A9CVtYODYtMzIsRUFSTFldCiAJCQlGb3JtYXQ6IG5uW0tNR10KIAkJCVJlc2VydmVzIGEgaG9sZSBhdCB0aGUgdG9wIG9mIHRoZSBrZXJuZWwgdmlydHVhbApkaWZmIC0tZ2l0IGEvbW0vbWVtYmxvY2suYyBiL21tL21lbWJsb2NrLmMKaW5kZXggNDMwMmZiNGFiODVjNy4uNWU5M2I2ZGE1M2UzMCAxMDA2NDQKLS0tIGEvbW0vbWVtYmxvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1ibG9jay5jCkBAIC0yODE2LDEyICYjNDM7MjgxNiwxNyBAQCBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKQogCWlmICgqcCAhPSAmIzM5OzomIzM5OykKIAkJZ290byBlcnJfcGFyYW07CiAKJiM0MzsJaWYgKCFJU19BTElHTkVEKHNpemUsIFBBR0VfU0laRSkgfHwgIUlTX0FMSUdORUQoYWxpZ24sIFBBR0VfU0laRSkpIHsKJiM0MzsJCXByX2VycigmIzM0O3Jlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogbWVtYmxvY2tfcGh5c19hbGxvYygpIGRvZXNuJiMzOTt0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sCiAJICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC4KIAkgKi8KLQlpZiAoYWxpZ24gJmx0OyBTTVBfQ0FDSEVfQllURVMpCi0JCWFsaWduID0gU01QX0NBQ0hFX0JZVEVTOwomIzQzOwlpZiAoIWFsaWduKQomIzQzOwkJYWxpZ24gPSBQQUdFX1NJWkU7CiAKIAluYW1lID0gcCAmIzQzOyAxOwogCWxlbiA9IHN0cmxlbihuYW1lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbW9yeSBSZXNlcnZhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHVwZGF0aW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlc2VydmVfbWVtYCBrZXJuZWwgcGFyYW1ldGVyIGluIGBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dGAuIE5vdGhpbmcgdG9vIGV4Y2l0aW5nIHRoZXJlLCBqdXN0IG1ha2luZyBzdXJlIHRoZSB1c2VyLWZhY2luZyBkb2N1bWVudGF0aW9uIGlzIHVwLXRvLWRhdGUuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBtbS9tZW1ibG9jay5jYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgbW9kaWZpZWQgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4KCkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgY2hhbmdpbmcgaG93IHRoZSBhbGlnbm1lbnQgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgZm9yY2VkIGFuIGFsaWdubWVudCBvZiBhdCBsZWFzdCBgU01QX0NBQ0hFX0JZVEVTYCBpZiBub25lIHdhcyBnaXZlbiwgYW5kIG5vdyBpdCBkZWZhdWx0cyB0byBgUEFHRV9TSVpFYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFRoZSBjb21tZW50IGhpbnRzIGF0IGBtZW1ibG9ja19waHlzX2FsbG9jKClgIG5vdCBsaWtpbmcgemVybyBhbGlnbm1lbnQsIGJ1dCBhbHNvIHRoZSBjb21tYW5kIGJlaW5nIE9LIHdpdGggaXQuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIHdoeSBkZWZhdWx0IHRvIGBQQUdFX1NJWkVgIG5vdyBpbnN0ZWFkIG9mIGBTTVBfQ0FDSEVfQllURVNgPyBJcyBpdCB0byBhbGxvdyBzbWFsbGVyIGFsbG9jYXRpb25zLCBvciBpcyBpdCBhIGJyb2FkZXIgY29tcGF0aWJpbGl0eSBmaXg/IExldCBtZSBjaGVjayB0aGUgY29kZSB1c2luZyB0aGUgYHJlYWQtZmlsZWAgY29tbWFuZC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBjb250ZXh0IG9mIGBtZW1ibG9ja19waHlzX2FsbG9jKClgIGFuZCBzZWUgaG93IHRoZSBhbGlnbm1lbnQgYWZmZWN0cyBpdHMgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugb24gbWVtb3J5IHJlc2VydmF0aW9uIHN0cmF0ZWdpZXMuIEkgaG9wZSB0aGVyZSYjMzk7cyBhIGdvb2QgZXhwbGFuYXRpb24gaW4gdGhlIGNvbW1pdCBtZXNzYWdlIG9yIHRoZSBhc3NvY2lhdGVkIGJ1ZyByZXBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tZW1ibG9jay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyODAwOlx0XG4yODAxOlx0XHQvKiBDaGVjayBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xuMjgwMjpcdFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcdTAwM2U9IFJFU0VSVkVfTUVNX01BWF9FTlRSSUVTKSB7XG4yODAzOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXG5cJiMzNDspO1xuMjgwNDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjgwNTpcdFx0fVxuMjgwNjpcdFxuMjgwNzpcdFx0b2xkcCA9IHA7XG4yODA4Olx0XHRzaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG4yODA5Olx0XHRpZiAoIXNpemUgfHwgcCA9PSBvbGRwKVxuMjgxMDpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTE6XHRcbjI4MTI6XHRcdGlmICgqcCAhPSAmIzM5OzomIzM5OylcbjI4MTM6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODE0Olx0XG4yODE1Olx0XHRhbGlnbiA9IG1lbXBhcnNlKHAmIzQzOzEsIFx1MDAyNnApO1xuMjgxNjpcdFx0aWYgKCpwICE9ICYjMzk7OiYjMzk7KVxuMjgxNzpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTg6XHRcbjI4MTk6XHRcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4yODIwOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcblwmIzM0Oyk7XG4yODIxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjgyMjpcdFx0fVxuMjgyMzpcdFxuMjgyNDpcdFx0LypcbjI4MjU6XHRcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2VzbiYjMzk7dCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuMjgyNjpcdFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbjI4Mjc6XHRcdCAqL1xuMjgyODpcdFx0aWYgKCFhbGlnbilcbjI4Mjk6XHRcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4yODMwOlx0XG4yODMxOlx0XHRuYW1lID0gcCAmIzQzOyAxO1xuMjgzMjpcdFx0bGVuID0gc3RybGVuKG5hbWUpO1xuMjgzMzpcdFxuMjgzNDpcdFx0LyogbmFtZSBuZWVkcyB0byBoYXZlIGxlbmd0aCBidXQgbm90IHRvbyBiaWcgKi9cbjI4MzU6XHRcdGlmICghbGVuIHx8IGxlbiBcdTAwM2U9IFJFU0VSVkVfTUVNX05BTUVfU0laRSlcbjI4MzY6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODM3Olx0XG4yODM4Olx0XHQvKiBNYWtlIHN1cmUgdGhhdCBuYW1lIGhhcyB0ZXh0ICovXG4yODM5Olx0XHRmb3IgKHAgPSBuYW1lOyAqcDsgcCYjNDM7JiM0MzspIHtcbjI4NDA6XHRcdFx0aWYgKCFpc3NwYWNlKCpwKSlcbjI4NDE6XHRcdFx0XHRicmVhaztcbjI4NDI6XHRcdH1cbjI4NDM6XHRcdGlmICghKnApXG4yODQ0Olx0XHRcdGdvdG8gZXJyX3BhcmFtO1xuMjg0NTpcdFxuMjg0NjpcdFx0LyogTWFrZSBzdXJlIHRoZSBuYW1lIGlzIG5vdCBhbHJlYWR5IHVzZWQgKi9cbjI4NDc6XHRcdGlmIChyZXNlcnZlX21lbV9maW5kX2J5X25hbWUobmFtZSwgXHUwMDI2c3RhcnQsIFx1MDAyNnRtcCkpIHtcbjI4NDg6XHRcdFx0cHJfZXJyKFwmIzM0O3Jlc2VydmVfbWVtOiBuYW1lIFxcXCYjMzQ7JXNcXFwmIzM0OyB3YXMgYWxyZWFkeSB1c2VkXFxuXCYjMzQ7LCBuYW1lKTtcbjI4NDk6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBgcmVzZXJ2ZV9tZW1gIGluIHRoZSBNZW1vcnkgQmxvY2sgQWxsb2NhdG9yKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJlc2VydmVfbWVtYCBzaXR1YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIGl0cyB1c2FnZSBhbmQgaW5pdGlhbGl6YXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYG1tL21lbWJsb2NrLmNgIGZpbGU7IHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCBtZW1vcnkgYmxvY2sgbWFuYWdlbWVudCByb3V0aW5lcy4gSSYjMzk7bGwgZm9jdXMgb24gbGluZXMgYXJvdW5kIDI4MDAgYW5kIHRoZW4gc2NhbiBmdXJ0aGVyLCBzcGVjaWZpY2FsbHkgcGFzdCAyODUwLCB0byBzZWUgaG93IGFuZCB3aGVyZSBgcmVzZXJ2ZV9tZW1gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCwgb3IgbW9yZSBpbXBvcnRhbnRseSwgKnNldCB1cCogd2l0aGluIHRoYXQgbW9kdWxlLiBJdCYjMzk7cyB1c3VhbGx5IHRoZSBpbml0aWFsaXphdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBtb3N0IGNvbnRleHQuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjYWxsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG1lbW9yeSBhbGxvY2F0aW9uIHNjaGVtZSBvZiB0aGUga2VybmVsLiBMb29raW5nIGZvciB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWJsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI4NTA6XHRcdH1cbjI4NTE6XHRcbjI4NTI6XHRcdC8qIFBpY2sgcHJldmlvdXMgYWxsb2NhdGlvbnMgdXAgZnJvbSBLSE8gaWYgYXZhaWxhYmxlICovXG4yODUzOlx0XHRpZiAocmVzZXJ2ZV9tZW1fa2hvX3Jldml2ZShuYW1lLCBzaXplLCBhbGlnbikpXG4yODU0Olx0XHRcdHJldHVybiAxO1xuMjg1NTpcdFxuMjg1NjpcdFx0LyogVE9ETzogQWxsb2NhdGlvbiBtdXN0IGJlIG91dHNpZGUgb2Ygc2NyYXRjaCByZWdpb24gKi9cbjI4NTc6XHRcdHN0YXJ0ID0gbWVtYmxvY2tfcGh5c19hbGxvYyhzaXplLCBhbGlnbik7XG4yODU4Olx0XHRpZiAoIXN0YXJ0KSB7XG4yODU5Olx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbWVtYmxvY2sgYWxsb2NhdGlvbiBmYWlsZWRcXG5cJiMzNDspO1xuMjg2MDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjI4NjE6XHRcdH1cbjI4NjI6XHRcbjI4NjM6XHRcdHJlc2VydmVkX21lbV9hZGQoc3RhcnQsIHNpemUsIG5hbWUpO1xuMjg2NDpcdFxuMjg2NTpcdFx0cmV0dXJuIDE7XG4yODY2Olx0ZXJyX3BhcmFtOlxuMjg2NzpcdFx0cHJfZXJyKFwmIzM0O3Jlc2VydmVfbWVtOiBlbXB0eSBvciBtYWxmb3JtZWQgcGFyYW1ldGVyXFxuXCYjMzQ7KTtcbjI4Njg6XHRcdHJldHVybiAtRUlOVkFMO1xuMjg2OTpcdH1cbjI4NzA6XHRfX3NldHVwKFwmIzM0O3Jlc2VydmVfbWVtPVwmIzM0OywgcmVzZXJ2ZV9tZW0pO1xuMjg3MTpcdFxuMjg3MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjI4NzM6XHQjaWZkZWYgQ09ORklHX0FSQ0hfS0VFUF9NRU1CTE9DS1xuMjg3NDpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZmxhZ25hbWVbXSA9IHtcbjI4NzU6XHRcdFtpbG9nMihNRU1CTE9DS19IT1RQTFVHKV0gPSBcJiMzNDtIT1RQTFVHXCYjMzQ7LFxuMjg3NjpcdFx0W2lsb2cyKE1FTUJMT0NLX01JUlJPUildID0gXCYjMzQ7TUlSUk9SXCYjMzQ7LFxuMjg3NzpcdFx0W2lsb2cyKE1FTUJMT0NLX05PTUFQKV0gPSBcJiMzNDtOT01BUFwmIzM0OyxcbjI4Nzg6XHRcdFtpbG9nMihNRU1CTE9DS19EUklWRVJfTUFOQUdFRCldID0gXCYjMzQ7RFJWX01OR1wmIzM0OyxcbjI4Nzk6XHRcdFtpbG9nMihNRU1CTE9DS19SU1JWX05PSU5JVCldID0gXCYjMzQ7UlNWX05JVFwmIzM0OyxcbjI4ODA6XHRcdFtpbG9nMihNRU1CTE9DS19SU1JWX0tFUk4pXSA9IFwmIzM0O1JTVl9LRVJOXCYjMzQ7LFxuMjg4MTpcdFx0W2lsb2cyKE1FTUJMT0NLX0tIT19TQ1JBVENIKV0gPSBcJiMzNDtLSE9fU0NSQVRDSFwmIzM0OyxcbjI4ODI6XHR9O1xuMjg4MzpcdFxuMjg4NDpcdHN0YXRpYyBpbnQgbWVtYmxvY2tfZGVidWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnByaXZhdGUpXG4yODg1Olx0e1xuMjg4NjpcdFx0c3RydWN0IG1lbWJsb2NrX3R5cGUgKnR5cGUgPSBtLVx1MDAzZXByaXZhdGU7XG4yODg3Olx0XHRzdHJ1Y3QgbWVtYmxvY2tfcmVnaW9uICpyZWc7XG4yODg4Olx0XHRpbnQgaSwgaiwgbmlkO1xuMjg4OTpcdFx0dW5zaWduZWQgaW50IGNvdW50ID0gQVJSQVlfU0laRShmbGFnbmFtZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRWFybHkgQm9vdCBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYF9fc2V0dXAoJiMzNDtyZXNlcnZlX21lbT0mIzM0OywgcmVzZXJ2ZV9tZW0pO2AgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGlzIGFuIGVhcmx5IGJvb3QgcGFyYW1ldGVyIGhhbmRsZXIg4oCTIHVzaW5nIGBfX3NldHVwYCwgd2hpY2ggaXMgYSBkZWFkIGdpdmVhd2F5LCBsaWtlIGBlYXJseV9wYXJhbWAgb3IgYF9faW5pdGAuIFRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BwaW5nIGludG8gbXkgaGVhZCBpczogY2FuIFN5emthbGxlciBvciBhbnkgb3RoZXIgcnVudGltZSBmdXp6aW5nIGFwcHJvYWNoIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBlYXJseSBib290IHBhcnNpbmcgc3RhZ2UgYW5kLCBzcGVjaWZpY2FsbHksIHRhcmdldCBzb21ldGhpbmcgbGlrZSBgX19zZXR1cCgmIzM0O3Jlc2VydmVfbWVtPSYjMzQ7LCAuLi4pYD8KCkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gQmVmb3JlIEkganVtcCB0byBjb25jbHVzaW9ucywgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcuIEkgaGF2ZSB0byBzZWUgaWYgYHJlc2VydmVfbWVtYCBvciBhbnkgc2ltaWxhcmx5IG5hbWVkIGZ1bmN0aW9uIGlzIGV2ZW4gY2FsbGVkICphZnRlciogYm9vdC11cC4gSWYgaXQmIzM5O3MgKnNvbGVseSogZm9yIGVhcmx5IGJvb3QsIGl0JiMzOTtzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgKGFuZCBsaWtlbHkgbW9yZSBkaWZmaWN1bHQpIHRhcmdldC4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwIGFuZCBjaGVjayB0aGUgY29kZWJhc2UuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXNlcnZlX21lbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODYzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dD05OD1LZXJuZWwgcGFyYW1ldGVyc1xuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTU0NDktXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo1NDUwOlx0cG5wX3Jlc2VydmVfbWVtPVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNTQ1MS1cdFx0XHRbSVNBUE5QXSBFeGNsdWRlIG1lbW9yeSByZWdpb25zIGZvciB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC02NjI4LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NjYyOTpcdHJlc2VydmVfbWVtPVx0W1JBTV1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MzAtXHRcdFx0Rm9ybWF0OiBubltLTUddOlx1MDAzY2FsaWduXHUwMDNlOlx1MDAzY2xhYmVsXHUwMDNlXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY0OC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjY2NDk6XHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6b29wcyByYW1vb3BzLm1lbV9uYW1lPW9vcHNcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2NTAtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgxOS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4MjA6XHRcdFx0QWx0ZXJuYXRpdmVseSwgdGhlIG1lbW9yeSBjYW4gYmUgcmVzZXJ2ZWQgYnkgdGhlIHJlc2VydmVfbWVtIG9wdGlvbjpcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjEtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo3ODIyOlx0XHRcdFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBAdHJhY2VcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjMtXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgzNy1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4Mzg6XHRcdFx0XHRyZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcF50cmFjZW9mZl50cmFjZXByaW50a0B0cmFjZSxzY2hlZCxpcnFcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MzktXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0PTM5PVRoZSBuZXcga2VybmVsIHdpbGwgYm9vdCB1cCBhbmQgY29udGFpbiBzb21lIG9mIHRoZSBwcmV2aW91cyBrZXJuZWwmIzM5O3Mgc3RhdGUuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2toby5yc3QtNDAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2toby5yc3Q6NDE6Rm9yIGV4YW1wbGUsIGlmIHlvdSB1c2VkIGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIHRvIGNyZWF0ZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQyLWFuIGVhcmx5IG1lbW9yeSByZXNlcnZhdGlvbiwgdGhlIG5ldyBrZXJuZWwgd2lsbCBoYXZlIHRoYXQgbWVtb3J5IGF0IHRoZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdD0xMDM9YWxzbyB0aGVyZSBhcmUgYSBzZXJpZXMgb2Yga2VybmVsIHBhcmFtZXRlcnM6OlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdC0xMDctXHRwbnBfcmVzZXJ2ZV9pbz1pbzEsc2l6ZTFbLGlvMixzaXplMl0gLi4uLlxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0OjEwODpcdHBucF9yZXNlcnZlX21lbT1tZW0xLHNpemUxWyxtZW0yLHNpemUyXSAuLi4uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3BucC5yc3QtMTA5LVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q9MjA9YW5kIHR5cGUgb2YgdGhlIG1lbW9yeSBhcmVhIGFyZSBzZXQgdXNpbmcgdGhyZWUgdmFyaWFibGVzOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjUtICAqIGBgbWVtX3R5cGVgYCB0byBzcGVjaWZ5IGlmIHRoZSBtZW1vcnkgdHlwZSAoZGVmYXVsdCBpcyBwZ3Byb3Rfd3JpdGVjb21iaW5lKS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MjY6ICAqIGBgbWVtX25hbWVgYCB0byBzcGVjaWZ5IGEgbWVtb3J5IHJlZ2lvbiBkZWZpbmVkIGJ5IGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTI3LSAgICBsaW5lIHBhcmFtZXRlci5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0PTYyPVNldHRpbmcgdGhlIHJhbW9vcHMgcGFyYW1ldGVycyBjYW4gYmUgZG9uZSBpbiBzZXZlcmFsIGRpZmZlcmVudCBtYW5uZXJzOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTIyLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdDoxMjM6IEQuIFVzaW5nIGEgcmVnaW9uIG9mIG1lbW9yeSByZXNlcnZlZCB2aWEgYGByZXNlcnZlX21lbWBgIGNvbW1hbmQgbGluZVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdDoxMjQ6ICAgIHBhcmFtZXRlci4gVGhlIGFkZHJlc3MgYW5kIHNpemUgd2lsbCBiZSBkZWZpbmVkIGJ5IHRoZSBgYHJlc2VydmVfbWVtYGBcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI1OiAgICBwYXJhbWV0ZXIuIE5vdGUsIHRoYXQgYGByZXNlcnZlX21lbWBgIG1heSBub3QgYWx3YXlzIGFsbG9jYXRlIG1lbW9yeVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMjYtICAgIGluIHRoZSBzYW1lIGxvY2F0aW9uLCBhbmQgY2Fubm90IGJlIHJlbGllZCB1cG9uLiBUZXN0aW5nIHdpbGwgbmVlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMjctICAgIHRvIGJlIGRvbmUsIGFuZCBpdCBtYXkgbm90IHdvcmsgb24gZXZlcnkgbWFjaGluZSwgbm9yIGV2ZXJ5IGtlcm5lbC5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI4OiAgICBDb25zaWRlciB0aGlzIGEgXCYjMzQ7YmVzdCBlZmZvcnRcJiMzNDsgYXBwcm9hY2guIFRoZSBgYHJlc2VydmVfbWVtYGAgb3B0aW9uXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyOS0gICAgdGFrZXMgYSBzaXplLCBhbGlnbm1lbnQgYW5kIG5hbWUgYXMgYXJndW1lbnRzLiBUaGUgbmFtZSBpcyB1c2VkXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdC0xMzEtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEzMjpcdHJlc2VydmVfbWVtPTJNOjQwOTY6b29wcyAgcmFtb29wcy5tZW1fbmFtZT1vb3BzXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEzMy1cbi0tXG5Eb2N1bWVudGF0aW9uL2FyY2gvcG93ZXJwYy9maXJtd2FyZS1hc3Npc3RlZC1kdW1wLnJzdD0yNjQ9Tk9URTpcbkRvY3VtZW50YXRpb24vYXJjaC9wb3dlcnBjL2Zpcm13YXJlLWFzc2lzdGVkLWR1bXAucnN0OjI2NTogICAgIDEuICYjMzk7ZmFkdW1wX3Jlc2VydmVfbWVtPSYjMzk7IHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBJbnN0ZWFkXG5Eb2N1bWVudGF0aW9uL2FyY2gvcG93ZXJwYy9maXJtd2FyZS1hc3Npc3RlZC1kdW1wLnJzdC0yNjYtICAgICAgICB1c2UgJiMzOTtjcmFzaGtlcm5lbD0mIzM5OyB0byBzcGVjaWZ5IHNpemUgb2YgdGhlIG1lbW9yeSB0byByZXNlcnZlXG4tLVxuRG9jdW1lbnRhdGlvbi9hcmNoL3g4Ni9wYXQucnN0PTM0PXRoZWlyIGludGVuZGVkIHVzYWdlIGFuZCB0aGVpciBtZW1vcnkgYXR0cmlidXRlIHJlbGF0aW9uc2hpcHMuIEludGVybmFsbHksXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3Q6MzU6dGhlc2UgQVBJcyB1c2UgYSByZXNlcnZlX21lbXR5cGUoKS9mcmVlX21lbXR5cGUoKSBpbnRlcmZhY2Ugb24gdGhlIHBoeXNpY2FsXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3QtMzYtYWRkcmVzcyByYW5nZSB0byBhdm9pZCBhbnkgYWxpYXNpbmcuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTEwNj1Bbm90aGVyIG1vcmUgZ2VuZXJpYyBidXQgbGVzcyByb2J1c3Qgd2F5IHRvIGFsbG9jYXRlIGEgcmluZyBidWZmZXIgbWFwcGluZ1xuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwNzphdCBib290IGlzIHdpdGggdGhlIFwmIzM0O3Jlc2VydmVfbWVtXCYjMzQ7IG9wdGlvbjo6XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTA4LVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwOTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTEwLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExMTpUaGUgcmVzZXJ2ZV9tZW0gb3B0aW9uIGFib3ZlIHdpbGwgZmluZCAxMiBtZWdhYnl0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGF0XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTEyLWJvb3QgdXAsIGFuZCBhbGlnbiBpdCBieSA0MDk2IGJ5dGVzLiBJdCB3aWxsIGxhYmVsIHRoaXMgbWVtb3J5IGFzIFwmIzM0O3RyYWNlXCYjMzQ7XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTExNT1UaGUgdHJhY2VfaW5zdGFuY2Ugb3B0aW9uIGNyZWF0ZXMgYSBcJiMzNDtib290X21hcFwmIzM0OyBpbnN0YW5jZSBhbmQgd2lsbCB1c2UgdGhlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTE2Om1lbW9yeSByZXNlcnZlZCBieSByZXNlcnZlX21lbSB0aGF0IHdhcyBsYWJlbGVkIGFzIFwmIzM0O3RyYWNlXCYjMzQ7LiBUaGlzIG1ldGhvZCBpc1xuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTExNy1tb3JlIGdlbmVyaWMgYnV0IG1heSBub3QgYmUgYXMgcmVsaWFibGUuIER1ZSB0byBLQVNMUiwgdGhlIG1lbW9yeSByZXNlcnZlZFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExODpieSByZXNlcnZlX21lbSBtYXkgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHNhbWUgbG9jYXRpb24uIElmIHRoaXMgaGFwcGVucyxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMTktdGhlbiB0aGUgcmluZyBidWZmZXIgd2lsbCBub3QgYmUgZnJvbSB0aGUgcHJldmlvdXMgYm9vdCBhbmQgd2lsbCBiZSByZXNldC5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTIxPVNvbWV0aW1lcywgYnkgdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCBpdCBjYW4ga2VlcCBLQVNMUiBmcm9tIG1vdmluZyB0aGluZ3NcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMjI6YXJvdW5kIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCB3aWxsIG1vdmUgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXNlcnZlX21lbS4gQnlcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMjMtdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCB5b3UgbWF5IGZpbmQgYmV0dGVyIHRoYXQgdGhlIGJ1ZmZlciBpcyBtb3JlXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTI0PWNvbnNpc3RlbnQgdG8gd2hlcmUgaXQgaXMgcGxhY2VkOjpcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTI2OiAgcmVzZXJ2ZV9tZW09MTJNOjB4MjAwMDAwMDp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyNy1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTU0PUZyb20gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6OlxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1NS1cbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxNTY6ICByZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcF50cmFjZXByaW50a150cmFjZW9mZkB0cmFjZVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTY5PWJhY2t1cCBpbnN0YW5jZS4gRnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZTo6XG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTcwLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjE3MTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlLHNjaGVkLGlycSB0cmFjZV9pbnN0YW5jZT1iYWNrdXA9Ym9vdF9tYXBcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xNzItXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMS0gKi9cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM6MjI6aW50IF9fd2VhayBvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMy17XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYz0yNz12b2lkIF9faW5pdCBvbWFwX3Jlc2VydmUodm9pZClcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmMtMjgte1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYzoyOTpcdG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKCk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jOjMwOlx0b21hcF9iYXJyaWVyX3Jlc2VydmVfbWVtYmxvY2soKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmMtMzEtfVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg9MTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwNDR4eF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAqY21kKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc0LSNpZmRlZiBDT05GSUdfT01BUF9JTlRFUkNPTk5FQ1RfQkFSUklFUlxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaDoxNzU6dm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc2LXZvaWQgb21hcF9iYXJyaWVyc19pbml0KHZvaWQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzctI2Vsc2VcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg6MTc4OnN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzkte1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuYz05OD12b2lkIG9tYXBfc21jMSh1MzIgZm4sIHUzMiBhcmcpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jLTExMC0vKiBBbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIHNhdmUgc2VjdXJlIHJhbSAqL1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jOjExMTppbnQgX19pbml0IG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmMtMTEyLXtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg9NzI9ZXh0ZXJuIHUzMiBvbWFwX3NtYzModTMyIGlkLCB1MzIgcHJvY2VzcywgdTMyIGZsYWcsIHUzMiBwYXJncyk7XG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg6NzM6ZXh0ZXJuIGludCBvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuaC03NC1leHRlcm4gdTMyIHNhdmVfc2VjdXJlX3JhbV9jb250ZXh0KHUzMiBhcmdzX3BhKTtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jPTE0Nj1vbWFwX2FyY2hfaW5pdGNhbGwob21hcDRfc3JhbV9pbml0KTtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE0OC0vKiBTdGVhbCBvbmUgcGFnZSBwaHlzaWNhbCBtZW1vcnkgZm9yIGJhcnJpZXIgaW1wbGVtZW50YXRpb24gKi9cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcDQtY29tbW9uLmM6MTQ5OnZvaWQgX19pbml0IG9tYXBfYmFycmllcl9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE1MC17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jPTI5NT12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0MS1cdFx0XHQgKiB0YWJsZSBvdmVycmlkZXMgcGFzc2VkIHZpYSBpbml0cmFtZnMsIHdoaWNoIGFyZVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jOjM0MjpcdFx0XHQgKiByZXNlcnZlZCBpbiBtZW1vcnkgdXNpbmcgYXJjaF9yZXNlcnZlX21lbV9hcmVhKClcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYy0zNDMtXHRcdFx0ICogYmVsb3cuIEFzIHRoaXMgcGFydGljdWxhciB1c2UgY2FzZSBvbmx5IHJlcXVpcmVzXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jPTM4OT1pbnQgYXBlaV9jbGFpbV9zZWEoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNS1cbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYzo0MzY6dm9pZCBhcmNoX3Jlc2VydmVfbWVtX2FyZWEoYWNwaV9waHlzaWNhbF9hZGRyZXNzIGFkZHIsIHNpemVfdCBzaXplKVxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNy17XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYz0yMTA9c3RhdGljIHZvaWQgX19pbml0IHJlcXVlc3Rfc3RhbmRhcmRfcmVzb3VyY2VzKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDUtXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jOjI0NjpzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbWJsb2NrX3Jlc2VydmVkX3JlZ2lvbnModm9pZClcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmMtMjQ3LXtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3MS19XG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jOjI3MjphcmNoX2luaXRjYWxsKHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyk7XG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3My1cbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jPTM0Mz1hY3BpX251bWFfeDJhcGljX2FmZmluaXR5X2luaXQoc3RydWN0IGFjcGlfc3JhdF94MmFwaWNfY3B1X2FmZmluaXR5ICpwYSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3Ny1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9hY3BpLmM6Mzc4OnZvaWQgX19pbml0IGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYShhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkciwgc2l6ZV90IHNpemUpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3OS17XG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NTQxPWFyY2hfaW5pdGNhbGwoYXJjaF9yZXNlcnZlX3Bpb19yYW5nZSk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDItXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo1NDM6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jLTU2OC19XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYzo1Njk6YXJjaF9pbml0Y2FsbChyZXNlcnZlX21lbWJsb2NrX3Jlc2VydmVkX3JlZ2lvbnMpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNTcwLVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mYWR1bXAuaD0zNT1leHRlcm4gaW50IGVhcmx5X2luaXRfZHRfc2Nhbl9md19kdW1wKHVuc2lnbmVkIGxvbmcgbm9kZSwgY29uc3QgY2hhciAqdW5hbWUsXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmgtMzYtXHRcdFx0XHQgICAgICBpbnQgZGVwdGgsIHZvaWQgKmRhdGEpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oOjM3OmV4dGVybiBpbnQgZmFkdW1wX3Jlc2VydmVfbWVtKHZvaWQpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oLTM4LSNlbmRpZlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9ODI9dm9pZCBfX2luaXQgZmFkdW1wX2NtYV9pbml0KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy05Ny1cdCAqIFtiYXNlLCBlbmQpIHNob3VsZCBiZSByZXNlcnZlZCBkdXJpbmcgZWFybHkgaW5pdCBpblxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo5ODpcdCAqIGZhZHVtcF9yZXNlcnZlX21lbSgpLiBObyBuZWVkIHRvIGNoZWNrIHRoaXMgaGVyZSBhc1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy05OS1cdCAqIGNtYV9pbml0X3Jlc2VydmVkX21lbSgpIGFscmVhZHkgY2hlY2tzIGZvciBvdmVybGFwLlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9MzIyPXN0YXRpYyBfX2luaXQgdTY0IGZhZHVtcF9jYWxjdWxhdGVfcmVzZXJ2ZV9zaXplKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjctXHRpZiAoZndfZHVtcC5yZXNlcnZlX2Jvb3R2YXIpXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjMyODpcdFx0cHJfd2FybihcJiMzNDsmIzM5O2ZhZHVtcF9yZXNlcnZlX21lbT0mIzM5OyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAmIzM5O2NyYXNoa2VybmVsPSYjMzk7IHBhcmFtZXRlci5cXG5cJiMzNDspO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjktXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNTgtXHRcdC8qXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjM1OTpcdFx0ICogJiMzOTtmYWR1bXBfcmVzZXJ2ZV9tZW09JiMzOTsgaXMgYmVpbmcgdXNlZCB0byByZXNlcnZlIG1lbW9yeVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNjAtXHRcdCAqIGZvciBmaXJtd2FyZS1hc3Npc3RlZCBkdW1wLlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9NDkyPXN0YXRpYyBib29sIF9faW5pdCBvdmVybGFwc19yZXNlcnZlZF9yYW5nZXModTY0IGJhc2UsIHU2NCBlbmQsIGludCAqaWR4KVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE3LSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo1MTg6c3RhdGljIHU2NCBfX2luaXQgZmFkdW1wX2xvY2F0ZV9yZXNlcnZlX21lbSh1NjQgYmFzZSwgdTY0IHNpemUpXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTUxOS17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NDgtXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjU0OTppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NTAte1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjE4LVx0XHQgKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NjE5Olx0XHRiYXNlID0gZmFkdW1wX2xvY2F0ZV9yZXNlcnZlX21lbShiYXNlLCBzaXplKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjIwLVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM9NjY4PWVhcmx5X3BhcmFtKFwmIzM0O2ZhZHVtcFwmIzM0OywgZWFybHlfZmFkdW1wX3BhcmFtKTtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3MC0vKlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzE6ICogTG9vayBmb3IgZmFkdW1wX3Jlc2VydmVfbWVtPSBjbWRsaW5lIG9wdGlvblxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzI6ICogVE9ETzogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gJiMzOTtmYWR1bXBfcmVzZXJ2ZV9tZW09JiMzOTsgcGFyYW1ldGVyLFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzMtICogICAgICAgdGhlIHNvb25lciAmIzM5O2NyYXNoa2VybmVsPSYjMzk7IHBhcmFtZXRlciBpcyBhY2N1c3RvbWVkIHRvLlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzQtICovXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY3NTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9mYWR1bXBfcmVzZXJ2ZV9tZW0oY2hhciAqcClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjc2LXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4MC19XG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY4MTplYXJseV9wYXJhbShcJiMzNDtmYWR1bXBfcmVzZXJ2ZV9tZW1cJiMzNDssIGVhcmx5X2ZhZHVtcF9yZXNlcnZlX21lbSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4Mi1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTE4Mjc9aW50IF9faW5pdCBlYXJseV9pbml0X2R0X3NjYW5fZndfZHVtcCh1bnNpZ25lZCBsb25nIG5vZGUsIGNvbnN0IGNoYXIgKnVuYW1lLFxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMTg0MS0gKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MTg0MjppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0xODQzLXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTg9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY0My1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY0NDpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1fZHQodm9pZClcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY0NS17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc2LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6Njc3OnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc4LXtcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02ODQtXHQvKiBMb29rIGZvciB0aGUgbmV3IFwmIzM0O3Jlc2VydmVkLXJlZ2lvbnNcJiMzNDsgcHJvcGVydHkgaW4gdGhlIERUICovXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYzo2ODU6XHRlYXJseV9yZXNlcnZlX21lbV9kdCgpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjg2LVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jPTc4Nz12b2lkIF9faW5pdCBlYXJseV9pbml0X2RldnRyZWUodm9pZCAqcGFyYW1zKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2MC1cdCAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6ODYxOlx0aWYgKGZhZHVtcF9yZXNlcnZlX21lbSgpID09IDApXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjItI2VuZGlmXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjMtXHRcdGFyY2hfcmVzZXJ2ZV9jcmFzaGtlcm5lbCgpO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6ODY0Olx0ZWFybHlfcmVzZXJ2ZV9tZW0oKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2NS1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE0MTU9c3RhdGljIHZvaWQgX19pbml0IHByb21fc2VuZF9jYXBhYmlsaXRpZXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE1MTEtICpcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM6MTUxMjogKiAgTm90ZSB0aGF0IGNhbGxzIHRvIHJlc2VydmVfbWVtIGhhdmUgdG8gYmUgZG9uZSBleHBsaWNpdGx5LCBtZW1vcnlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTUxMy0gKiAgYWxsb2NhdGVkIHdpdGggZWl0aGVyIGFsbG9jX3VwIG9yIGFsbG9jX2Rvd24gaXNuJiMzOTt0IGF1dG9tYXRpY2FsbHlcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE2Mjc9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IHByb21fbmV4dF9jZWxsKGludCBzLCBjZWxsX3QgKipjZWxscClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE2NTUtICovXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE2NTY6c3RhdGljIHZvaWQgX19pbml0IHJlc2VydmVfbWVtKHU2NCBiYXNlLCB1NjQgc2l6ZSlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTY1Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0xODY3PXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luc3RhbnRpYXRlX3J0YXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5MDgtXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE5MDk6XHRyZXNlcnZlX21lbShiYXNlLCBzaXplKTtcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTkxMC1cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTE5MzQ9c3RhdGljIHZvaWQgX19pbml0IHByb21faW5zdGFudGlhdGVfc21sKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xOTk0LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxOTk1Olx0cmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5OTYtXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0yMDEyPXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luaXRpYWxpemVfdGNlX3RhYmxlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0yMTIxLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoyMTIyOlx0cmVzZXJ2ZV9tZW0obG9jYWxfYWxsb2NfYm90dG9tLCBsb2NhbF9hbGxvY190b3AgLSBsb2NhbF9hbGxvY19ib3R0b20pO1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0yMTIzLVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MzE4NT1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9jaGVja19pbml0cmQodW5zaWduZWQgbG9uZyByMywgdW5zaWduZWQgbG9uZyByNClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTMyMDAtXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjMyMDE6XHRcdHJlc2VydmVfbWVtKHByb21faW5pdHJkX3N0YXJ0LFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0zMjAyLVx0XHRcdCAgICBwcm9tX2luaXRyZF9lbmQgLSBwcm9tX2luaXRyZF9zdGFydCk7XG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTM1NT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX2dldF9jcHVfdWlkKTtcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zNTYtXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmM6MzU3OnZvaWQgX19pbml0IGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYShhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkciwgc2l6ZV90IHNpemUpXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU4LXtcbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jPTEzNT1zdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9yZXNvdXJjZXModm9pZClcbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jLTIyNi1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjI3OnN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyh2b2lkKVxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjgte1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmMtMjUyLX1cbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjUzOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmMtMjU0LVxuLS1cbmFyY2gvc2gvbW0vaW5pdC5jPTIxNj1zdGF0aWMgdm9pZCBfX2luaXQgZG9faW5pdF9ib290bWVtKHZvaWQpXG4tLVxuYXJjaC9zaC9tbS9pbml0LmMtMjMxLVxuYXJjaC9zaC9tbS9pbml0LmM6MjMyOnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxuYXJjaC9zaC9tbS9pbml0LmMtMjMzLXtcbi0tXG5hcmNoL3NoL21tL2luaXQuYz0yNzA9dm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZClcbi0tXG5hcmNoL3NoL21tL2luaXQuYy0yNzUtXG5hcmNoL3NoL21tL2luaXQuYzoyNzY6XHRlYXJseV9yZXNlcnZlX21lbSgpO1xuYXJjaC9zaC9tbS9pbml0LmMtMjc3LVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2lvLmg9MzQ5PWV4dGVybiB2b2lkIGFyY2hfcGh5c193Y19kZWwoaW50IGhhbmRsZSk7XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTMtI2lmZGVmIENPTkZJR19YODZfUEFUXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NDpleHRlcm4gaW50IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpO1xuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTUtZXh0ZXJuIHZvaWQgYXJjaF9pb19mcmVlX21lbXR5cGVfd2MocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3Qgc2l6ZSk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NjojZGVmaW5lIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oLTM1Ny0jZW5kaWZcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmM9MTgxND1pbnQgX19hY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2sodW5zaWduZWQgaW50ICpsb2NrKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYy0xODI0LVxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jOjE4MjU6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcbmFyY2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYy0xODI2LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jPTU0Nz12b2lkIF9faW5pdCBtcHBhcnNlX3BhcnNlX3NtcF9jb25maWcodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU1MS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTUyOnN0YXRpYyB2b2lkIF9faW5pdCBzbXBfcmVzZXJ2ZV9tZW1vcnkoc3RydWN0IG1wZl9pbnRlbCAqbXBmKVxuYXJjaC94ODYva2VybmVsL21wcGFyc2UuYy01NTMte1xuLS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM9NTU3PXN0YXRpYyBpbnQgX19pbml0IHNtcF9zY2FuX2NvbmZpZyh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTg0LVx0XHRcdGlmIChtcGYtXHUwMDNlcGh5c3B0cilcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTg1Olx0XHRcdFx0c21wX3Jlc2VydmVfbWVtb3J5KG1wZik7XG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU4Ni1cbi0tXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYz03Nzc9c3RhdGljIHZvaWQgX19pbml0IGU4MjBfYWRkX2tlcm5lbF9yYW5nZSh2b2lkKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5Ni1cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjc5NzpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1vcnkodm9pZClcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5OC17XG4tLVxuYXJjaC94ODYva2VybmVsL3NldHVwLmM9ODg0PXZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy05NzEtXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjk3MjpcdGVhcmx5X3Jlc2VydmVfbWVtb3J5KCk7XG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy05NzMtXG4tLVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYz03NDg9dm9pZCBtZW10eXBlX2ZyZWVfaW8ocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3QgZW5kKVxuLS1cbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzUzLSNpZmRlZiBDT05GSUdfWDg2X1BBVFxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYzo3NTQ6aW50IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc1NS17XG4tLVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYy03NTktfVxuYXJjaC94ODYvbW0vcGF0L21lbXR5cGUuYzo3NjA6RVhQT1JUX1NZTUJPTChhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93Yyk7XG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc2MS1cbi0tXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM9NDIyPXZvaWQgX19pbml0IGFjcGlfdGFibGVfdXBncmFkZSh2b2lkKVxuLS1cbmRyaXZlcnMvYWNwaS90YWJsZXMuYy01MDgtXHQgKiB0aGF0IHNob3VsZCBnZXQgbWFwcGVkIGFyZSBub3QgbWFya2VkIFwmIzM0O3Jlc2VydmVkXCYjMzQ7LlxuZHJpdmVycy9hY3BpL3RhYmxlcy5jOjUwOTpcdCAqIEJvdGggbWVtYmxvY2tfcmVzZXJ2ZSBhbmQgZTgyMF9fcmFuZ2VfYWRkICh2aWEgYXJjaF9yZXNlcnZlX21lbV9hcmVhKVxuZHJpdmVycy9hY3BpL3RhYmxlcy5jLTUxMC1cdCAqIHdvcmtzIGZpbmUuXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTExLVx0ICovXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM6NTEyOlx0YXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfdGFibGVzX2FkZHIsIGFsbF90YWJsZXNfc2l6ZSk7XG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTEzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaD0zNjY9aW50IGFtZGdwdV9hbWRrZmRfY3JpdV9yZXN1bWUodm9pZCAqcCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmg6MzY3OmludCBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oLTM2OC1cdFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oOjM2OTp2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaC0zNzAtXHRcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MTM3PXZvaWQgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX3N5c3RlbV9tZW0odWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTU1LS8qKlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE1NjogKiBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KCkgLSBEZWNyZWFzZSBhdmFpbGFibGUgbWVtb3J5IGJ5IHNpemVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xNTctICogb2YgYnVmZmVyLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xNjgtICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM6MTY5OmludCBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE3MC1cdFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTI2NC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoyNjU6dm9pZCBhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMjY2LVx0XHR1aW50NjRfdCBzaXplLCB1MzIgYWxsb2NfZmxhZywgaW50OF90IHhjcF9pZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MzA5PXZvaWQgYW1kZ3B1X2FtZGtmZF9yZWxlYXNlX25vdGlmeShzdHJ1Y3QgYW1kZ3B1X2JvICpibylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMzE0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjMxNTpcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChhZGV2LCBzaXplLCBhbGxvY19mbGFncyxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0zMTYtXHRcdFx0XHRcdCAgYm8tXHUwMDNleGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM9MTcwOT1pbnQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9hbGxvY19tZW1vcnlfb2ZfZ3B1KFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODA3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4MDg6XHRyZXQgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTgwOS1cdFx0XHRcdFx0ICAgICAgeGNwX2lkKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTg5MS1lcnJfYm9fY3JlYXRlOlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4OTI6XHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoYWRldiwgYWxpZ25lZF9zaXplLCBmbGFncywgeGNwX2lkKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODkzLWVycl9yZXNlcnZlX2xpbWl0OlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYz0xMDY3PWludCBhbWRncHVfYm9faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3MS1cdFx0LyogcmVzZXJ2ZSBQQVQgbWVtb3J5IHNwYWNlIHRvIFdDIGZvciBWUkFNICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM6MTA3MjpcdFx0aW50IHIgPSBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhhZGV2LVx1MDAzZWdtYy5hcGVyX2Jhc2UsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3My1cdFx0XHRcdGFkZXYtXHUwMDNlZ21jLmFwZXJfc2l6ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYz0xNzA5PXN0YXRpYyBpbnQga2ZkX2lvY3RsX3NldF94bmFja19tb2RlKHN0cnVjdCBmaWxlICpmaWxlcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzAtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jOjE3MzE6XHRcdHIgPSBzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHAsIGFyZ3MtXHUwMDNleG5hY2tfZW5hYmxlZCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzItXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NDg4PXN2bV9taWdyYXRlX3JhbV90b192cmFtKHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSwgdWludDMyX3QgYmVzdF9sb2MsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy01MTctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjUxODpcdHIgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KG5vZGUtXHUwMDNlYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTE5LVx0XHRcdFx0XHRwcmFuZ2UtXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTYzLW91dDpcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NTY0Olx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KG5vZGUtXHUwMDNlYWRldixcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTY1LVx0XHRcdFx0XHRwcmFuZ2UtXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0yNzk9c3RhdGljIHZvaWQgc3ZtX3JhbmdlX2ZyZWUoc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLCBib29sIGRvX3VubWFwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMDQtXHRcdHByX2RlYnVnKFwmIzM0O3VucmVzZXJ2ZSBwcmFuZ2UgMHglcCBzaXplOiAweCVsbHhcXG5cJiMzNDssIHByYW5nZSwgc2l6ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzA1Olx0XHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMDYtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMzU9c3ZtX3JhbmdlICpzdm1fcmFuZ2VfbmV3KHN0cnVjdCBzdm1fcmFuZ2VfbGlzdCAqc3ZtcywgdWludDY0X3Qgc3RhcnQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTM0Ny1cdGlmICghcC1cdTAwM2V4bmFja19lbmFibGVkIFx1MDAyNlx1MDAyNiB1cGRhdGVfbWVtX3VzYWdlIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjM0ODpcdCAgICBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzQ5LVx0XHRcdFx0ICAgIEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApKSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jPTMyODI9aW50XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI4Mzpzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwgYm9vbCB4bmFja19lbmFibGVkKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyODQte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMjk4LVx0XHRcdGlmICh4bmFja19lbmFibGVkKSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI5OTpcdFx0XHRcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDAtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDEtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzAyOlx0XHRcdFx0ciA9IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzAzLVx0XHRcdFx0XHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxMS1cdFx0aWYgKHhuYWNrX2VuYWJsZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzEyOlx0XHRcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTMtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTQtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzMxNTpcdFx0XHRyID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMTYtXHRcdFx0XHRcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI3LVx0aWYgKHIpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzMyODpcdFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHJlc2VydmVkX3NpemUsXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMyOS1cdFx0XHRcdFx0S0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oPTIxND12b2lkIHN2bV9yYW5nZV9zZXRfbWF4X3BhZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uaDoyMTU6aW50IHN2bV9yYW5nZV9zd2l0Y2hfeG5hY2tfcmVzZXJ2ZV9tZW0oc3RydWN0IGtmZF9wcm9jZXNzICpwLCBib29sIHhuYWNrX2VuYWJsZWQpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oLTIxNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tbS5jPTczPWludCBhc3RfbW1faW5pdChzdHJ1Y3QgYXN0X2RldmljZSAqYXN0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmMtODMtXHQvKiBEb24mIzM5O3QgZmFpbCBvbiBlcnJvcnMsIGJ1dCBwZXJmb3JtYW5jZSBtaWdodCBiZSByZWR1Y2VkLiAqL1xuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYzo4NDpcdGRldm1fYXJjaF9pb19yZXNlcnZlX21lbXR5cGVfd2MoZGV2LVx1MDAzZWRldiwgYmFzZSwgc2l6ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tbS5jLTg1LVx0ZGV2bV9hcmNoX3BoeXNfd2NfYWRkKGRldi1cdTAwM2VkZXYsIGJhc2UsIHNpemUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmM9MjcwPW5vdXZlYXVfdHRtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjQtXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3R0bS5jOjMyNTpcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGRldmljZS1cdTAwM2VmdW5jLVx1MDAzZXJlc291cmNlX2FkZHIoZGV2aWNlLCBOVktNX0JBUjFfRkIpLFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjYtXHRcdFx0XHQgICBkZXZpY2UtXHUwMDNlZnVuYy1cdTAwM2VyZXNvdXJjZV9zaXplKGRldmljZSwgTlZLTV9CQVIxX0ZCKSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmM9Mzg2PWludCByYWRlb25fYm9faW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYy0zODgtXHQvKiByZXNlcnZlIFBBVCBtZW1vcnkgc3BhY2UgdG8gV0MgZm9yIFZSQU0gKi9cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jOjM4OTpcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKHJkZXYtXHUwMDNlbWMuYXBlcl9iYXNlLFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzkwLVx0XHRcdFx0ICAgcmRldi1cdTAwM2VtYy5hcGVyX3NpemUpO1xuLS1cbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmM9MTE4PXN0YXRpYyBpbnQgZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKHVuc2lnbmVkIGxvbmcgbm9kZSxcbi0tXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTEyMC1cbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmM6MTIxOnN0YXRpYyBpbnQgX19pbml0IGVhcmx5X2luaXRfZHRfcmVzZXJ2ZV9tZW1vcnkocGh5c19hZGRyX3QgYmFzZSxcbmRyaXZlcnMvb2Yvb2ZfcmVzZXJ2ZWRfbWVtLmMtMTIyLVx0XHRcdFx0XHQgICAgICAgcGh5c19hZGRyX3Qgc2l6ZSwgYm9vbCBub21hcClcbi0tXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTE0Mz1zdGF0aWMgaW50IF9faW5pdCBfX3Jlc2VydmVkX21lbV9yZXNlcnZlX3JlZyh1bnNpZ25lZCBsb25nIG5vZGUsXG4tLVxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xNjktXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjE3MDpcdGlmIChzaXplIFx1MDAyNlx1MDAyNiBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KGJhc2UsIHNpemUsIG5vbWFwKSA9PSAwKSB7XG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTE3MS1cdFx0ZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKG5vZGUsIGJhc2UsIHNpemUpO1xuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9Mjk9c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9pb1sxNl0gPSB7WzAgLi4uIDE1XSA9IC0xIH07XHQvKiByZXNlcnZlIChkb24mIzM5O3QgdXNlKSBzb21lIEkvTyByZWdpb24gKi9cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MzA6c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9tZW1bMTZdID0ge1swIC4uLiAxNV0gPSAtMSB9O1x0LyogcmVzZXJ2ZSAoZG9uJiMzOTt0IHVzZSkgc29tZSBtZW1vcnkgcmVnaW9uICovXG5kcml2ZXJzL3BucC9yZXNvdXJjZS5jLTMxLVxuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9MjMwPWludCBwbnBfY2hlY2tfbWVtKHN0cnVjdCBwbnBfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxuLS1cbmRyaXZlcnMvcG5wL3Jlc291cmNlLmMtMjUzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MjU0Olx0XHRpbnQgcmFkZHIgPSBwbnBfcmVzZXJ2ZV9tZW1baSBcdTAwM2NcdTAwM2MgMV07XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE5OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgcmVzZXJ2ZWQsIHNvIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgYG1tL21lbWJsb2NrLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4gS25vd2luZyB0aGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbiwgSSBleHBlY3QgaXQgdG8gY29udGFpbiB0aGUgZGV0YWlscyBvZiBob3cgcGh5c2ljYWwgbWVtb3J5IGlzIGFsbG9jYXRlZCBiZWZvcmUgdGhlIG1vcmUgYWR2YW5jZWQgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtcyBjb21lIGludG8gcGxheS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbiYjMzk7cyBjcml0aWNhbCBhc3BlY3RzLCBJIG5lZWQgdG8gZm9jdXMgb24gbGluZXMgMjc1MCB0aHJvdWdoIDI4NzAgaW4gdGhlIGZpbGUuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgc2VjdGlvbiB3aWxsIGNvbnRhaW4gdGhlIGNydWNpYWwgbG9naWMgZm9yIHByZS1ib290IG1lbW9yeSByZXNlcnZhdGlvbi4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBzZWUgaG93IHRoZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIEJJT1Mgb3IgZmlybXdhcmUgZHVyaW5nIGVhcmx5IGJvb3Qgc3RhZ2VzIGhlcmUuIFVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9uIGhlcmUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBtZW1vcnkgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiBnZW5lcmFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWJsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3NTA6XHRcdGlmIChlcnIpIHtcbjI3NTE6XHRcdFx0cHJfd2FybihcJiMzNDtOb2RlICYjMzk7JXMmIzM5OyBpcyBpbmNvbXBhdGlibGUgd2l0aCAmIzM5OyVzJiMzOTs6ICVkXFxuXCYjMzQ7LFxuMjc1MjpcdFx0XHRcdG5hbWUsIFJFU0VSVkVfTUVNX0tIT19OT0RFX0NPTVBBVElCTEUsIGVycik7XG4yNzUzOlx0XHRcdHJldHVybiBmYWxzZTtcbjI3NTQ6XHRcdH1cbjI3NTU6XHRcbjI3NTY6XHRcdHBfc3RhcnQgPSBmZHRfZ2V0cHJvcChmZHQsIG9mZnNldCwgXCYjMzQ7c3RhcnRcJiMzNDssIFx1MDAyNmxlbl9zdGFydCk7XG4yNzU3Olx0XHRwX3NpemUgPSBmZHRfZ2V0cHJvcChmZHQsIG9mZnNldCwgXCYjMzQ7c2l6ZVwmIzM0OywgXHUwMDI2bGVuX3NpemUpO1xuMjc1ODpcdFx0aWYgKCFwX3N0YXJ0IHx8IGxlbl9zdGFydCAhPSBzaXplb2YoKnBfc3RhcnQpIHx8ICFwX3NpemUgfHxcbjI3NTk6XHRcdCAgICBsZW5fc2l6ZSAhPSBzaXplb2YoKnBfc2l6ZSkpIHtcbjI3NjA6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjc2MTpcdFx0fVxuMjc2MjpcdFxuMjc2MzpcdFx0aWYgKCpwX3N0YXJ0IFx1MDAyNiAoYWxpZ24gLSAxKSkge1xuMjc2NDpcdFx0XHRwcl93YXJuKFwmIzM0O0tITyByZXNlcnZlLW1lbSAmIzM5OyVzJiMzOTsgaGFzIHdyb25nIGFsaWdubWVudCAoMHglbHgsIDB4JWx4KVxcblwmIzM0OyxcbjI3NjU6XHRcdFx0XHRuYW1lLCAobG9uZylhbGlnbiwgKGxvbmcpKnBfc3RhcnQpO1xuMjc2NjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzY3Olx0XHR9XG4yNzY4Olx0XG4yNzY5Olx0XHRpZiAoKnBfc2l6ZSAhPSBzaXplKSB7XG4yNzcwOlx0XHRcdHByX3dhcm4oXCYjMzQ7S0hPIHJlc2VydmUtbWVtICYjMzk7JXMmIzM5OyBoYXMgd3Jvbmcgc2l6ZSAoMHglbHggIT0gMHglbHgpXFxuXCYjMzQ7LFxuMjc3MTpcdFx0XHRcdG5hbWUsIChsb25nKSpwX3NpemUsIChsb25nKXNpemUpO1xuMjc3MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzczOlx0XHR9XG4yNzc0Olx0XG4yNzc1Olx0XHRyZXNlcnZlZF9tZW1fYWRkKCpwX3N0YXJ0LCBzaXplLCBuYW1lKTtcbjI3NzY6XHRcdHByX2luZm8oXCYjMzQ7UmV2aXZlZCBtZW1vcnkgcmVzZXJ2YXRpb24gJiMzOTslcyYjMzk7IGZyb20gS0hPXFxuXCYjMzQ7LCBuYW1lKTtcbjI3Nzc6XHRcbjI3Nzg6XHRcdHJldHVybiB0cnVlO1xuMjc3OTpcdH1cbjI3ODA6XHQjZWxzZVxuMjc4MTpcdHN0YXRpYyBib29sIF9faW5pdCByZXNlcnZlX21lbV9raG9fcmV2aXZlKGNvbnN0IGNoYXIgKm5hbWUsIHBoeXNfYWRkcl90IHNpemUsXG4yNzgyOlx0XHRcdFx0XHRcdCAgcGh5c19hZGRyX3QgYWxpZ24pXG4yNzgzOlx0e1xuMjc4NDpcdFx0cmV0dXJuIGZhbHNlO1xuMjc4NTpcdH1cbjI3ODY6XHQjZW5kaWYgLyogQ09ORklHX0tFWEVDX0hBTkRPVkVSICovXG4yNzg3Olx0XG4yNzg4Olx0LypcbjI3ODk6XHQgKiBQYXJzZSByZXNlcnZlX21lbT1ubjphbGlnbjpuYW1lXG4yNzkwOlx0ICovXG4yNzkxOlx0c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcbjI3OTI6XHR7XG4yNzkzOlx0XHRwaHlzX2FkZHJfdCBzdGFydCwgc2l6ZSwgYWxpZ24sIHRtcDtcbjI3OTQ6XHRcdGNoYXIgKm5hbWU7XG4yNzk1Olx0XHRjaGFyICpvbGRwO1xuMjc5NjpcdFx0aW50IGxlbjtcbjI3OTc6XHRcbjI3OTg6XHRcdGlmICghcClcbjI3OTk6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODAwOlx0XG4yODAxOlx0XHQvKiBDaGVjayBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xuMjgwMjpcdFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcdTAwM2U9IFJFU0VSVkVfTUVNX01BWF9FTlRSSUVTKSB7XG4yODAzOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXG5cJiMzNDspO1xuMjgwNDpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMjgwNTpcdFx0fVxuMjgwNjpcdFxuMjgwNzpcdFx0b2xkcCA9IHA7XG4yODA4Olx0XHRzaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG4yODA5Olx0XHRpZiAoIXNpemUgfHwgcCA9PSBvbGRwKVxuMjgxMDpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTE6XHRcbjI4MTI6XHRcdGlmICgqcCAhPSAmIzM5OzomIzM5OylcbjI4MTM6XHRcdFx0Z290byBlcnJfcGFyYW07XG4yODE0Olx0XG4yODE1Olx0XHRhbGlnbiA9IG1lbXBhcnNlKHAmIzQzOzEsIFx1MDAyNnApO1xuMjgxNjpcdFx0aWYgKCpwICE9ICYjMzk7OiYjMzk7KVxuMjgxNzpcdFx0XHRnb3RvIGVycl9wYXJhbTtcbjI4MTg6XHRcbjI4MTk6XHRcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4yODIwOlx0XHRcdHByX2VycihcJiMzNDtyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcblwmIzM0Oyk7XG4yODIxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjgyMjpcdFx0fVxuMjgyMzpcdFxuMjgyNDpcdFx0LypcbjI4MjU6XHRcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2VzbiYjMzk7dCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuMjgyNjpcdFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbjI4Mjc6XHRcdCAqL1xuMjgyODpcdFx0aWYgKCFhbGlnbilcbjI4Mjk6XHRcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjMzCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogOTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpczogcmVzZXJ2ZV9tZW0oKSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIHNlZSBhIHBhdGNoIHRoYXQgbW9kaWZpZXMgdGhlIGByZXNlcnZlX21lbWAgZnVuY3Rpb24sIGFuZCBteSBqb2IgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGZ1enphYmxlIHdpdGggU3l6a2FsbGVyLgoKRmlyc3QsIEkgb2JzZXJ2ZSB0aGF0IGBfX3NldHVwKCYjMzQ7cmVzZXJ2ZV9tZW09JiMzNDssIHJlc2VydmVfbWVtKWAgaXMgaW52b2x2ZWQuIFRoaXMgaXMga2V5LiBgX19zZXR1cGAgaW5kaWNhdGVzIHRoYXQgYHJlc2VydmVfbWVtYCBpcyB0aWVkIHRvIGtlcm5lbCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIHBhcnNpbmcsIHdoaWNoIGhhcHBlbnMgdmVyeSBlYXJseSBkdXJpbmcgYm9vdCwgYmVmb3JlIHVzZXJzcGFjZSBldmVuIHN0YXJ0cy4gSXQmIzM5O3MgZXhlY3V0ZWQgd2l0aGluIHRoZSBgZG9faW5pdGNhbGxgIC8gYHBhcnNlX2Vhcmx5X3BhcmFtYCAvIGBwYXJzZV9hcmdzYCBwaGFzZS4KCkkgY29uZmlybSB0aGF0IGByZXNlcnZlX21lbWAgaXMgYHN0YXRpY2AgYW5kIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBUaGlzIG1lYW5zIGl0JiMzOTtzIG9ubHkgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGJlIGRpc2NhcmRlZCBvbmNlIGJvb3QgaXMgY29tcGxldGUuIE15IGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgYSBkZWFkIGVuZCBmb3IgZnV6emluZywgYnV0IGxldCYjMzk7cyBiZSB0aG9yb3VnaC4KCk15IHVuZGVyc3RhbmRpbmcgb2YgU3l6a2FsbGVyIGlzIHRoYXQgaXQgb3BlcmF0ZXMgaW4gYSBydW5uaW5nIGtlcm5lbCBlbnZpcm9ubWVudCwgdGFyZ2V0aW5nIHN5c2NhbGxzIGFuZCBnZW5lcmF0ZWQgcHJvZ3JhbXMuIFN5emthbGxlciBjYW5ub3QgZHluYW1pY2FsbHkgcmUtaW52b2tlIGJvb3QtdGltZSBwYXJhbWV0ZXJzIG9yIGBfX2luaXRgIGZ1bmN0aW9ucy4gSXQgc2ltcGx5ICpjYW4mIzM5O3QqIGRpcmVjdGx5IHBhc3MgYSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIHRvIGByZXNlcnZlX21lbWAgYWZ0ZXIgdGhlIGtlcm5lbCBpcyBib290ZWQuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdW5hYmxlIHRvIHJlYWNoIHRoaXMgcGFydCBvZiB0aGUgY29kZS4KCkNoZWNraW5nIHRoZSBwcm9qZWN0IGRvY3VtZW50YXRpb24sIEkgaGF2ZSB0byBlbnN1cmUgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBNeSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCBpcyBub3QsIGJ1dCBJIHdpbGwgY2hlY2sgdGhlIG90aGVyIGFyZWFzLgoKU2VjdGlvbiAyIGNsZWFybHkgb3V0bGluZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgYXJlIG91dC4gQnV0IHRoZSBvbmUgdGhhdCByZWFsbHkganVtcHMgb3V0IGlzIHRoZSAmIzM0O0NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSYjMzQ7LCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBteSBhc3N1bXB0aW9ucy4gVGhlIHBhdGNoIGNoYW5nZXMgaW5jbHVkZToKMS4gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLiBJcnJlbGV2YW50IHRvIGZ1enppbmcuCjIuIENoYW5nZXMgd2l0aGluIGBtbS9tZW1ibG9jay5jYCB0byBgcmVzZXJ2ZV9tZW1gOiBhbiBhZGRlZCBjaGVjayBgaWYgKCFJU19BTElHTkVEKHNpemUsIFBBR0VfU0laRSkgfHwgIUlTX0FMSUdORUQoYWxpZ24sIFBBR0VfU0laRSkpYCBhbmQgYSBjaGFuZ2UgdG8gdGhlIGZhbGxiYWNrIGFsaWdubWVudCBgaWYgKCFhbGlnbikgYWxpZ24gPSBQQUdFX1NJWkU7YAoKQ3J1Y2lhbGx5LCBib3RoIGNoYW5nZXMgYXJlIHN0cmljdGx5ICppbnNpZGUqIHRoZSBgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApYCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVnaXN0ZXJlZCBvbmx5IHRocm91Z2ggYF9fc2V0dXAoJiMzNDtyZXNlcnZlX21lbT0mIzM0OywgcmVzZXJ2ZV9tZW0pYC4KCkkmIzM5O3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCBgcmVzZXJ2ZV9tZW1gIGlzIGBfX2luaXRgLCBtZWFuaW5nIGl0IHJlc2lkZXMgaW4gdGhlIGAuaW5pdC50ZXh0YCBzZWN0aW9uLiBBZnRlciBpbml0aWFsaXphdGlvbiwgdGhlIGtlcm5lbCBjYWxscyBgZnJlZV9pbml0bWVtKClgLCBmcmVlaW5nIHRoZSBgLmluaXQudGV4dGAgYW5kIGAuaW5pdC5kYXRhYCBwYWdlcy4gVGh1cywgaXQmIzM5O3MgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIFN5emthbGxlciBjYW4gZXZlbiB0aGluayBhYm91dCByZWFjaGluZyB0aGlzIHBhcnQgb2YgdGhlIGNvZGViYXNlLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgYXMgbW9kaWZpZWQsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBieSBTeXprYWxsZXIgZHVyaW5nIHJ1bnRpbWUgZnV6emluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb2RlIGlzIHNwZWNpZmljYWxseSBwYXJ0IG9mIHRoZSBlYXJseSBib290IHByb2Nlc3MgYW5kIGlzIGRpc2NhcmRlZCBiZWZvcmUgdGhlIGZ1enplciBldmVuIGJlZ2lucy4KClNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzOgotICAgYFdvcnRoRnV6emluZzogZmFsc2VgCi0gICBgRW5hYmxlQ29uZmlnczogW11gCi0gICBgRm9jdXNTeW1ib2xzOiBbXWAKLSAgIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkb2N1bWVudGF0aW9uIGFuZCB0aGUgYF9faW5pdGAgYm9vdC10aW1lIHBhcmFtZXRlciBwYXJzaW5nIGZ1bmN0aW9uIGByZXNlcnZlX21lbSgpYCwgd2hpY2ggaXMgZXhlY3V0ZWQgZHVyaW5nIGVhcmx5IGtlcm5lbCBib290ICh2aWEgYF9fc2V0dXBgKSBhbmQgZGlzY2FyZGVkIGJlZm9yZSB1c2Vyc3BhY2UvZnV6emVyIGV4ZWN1dGlvbi4gSXQgaXMgdGhlcmVmb3JlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGRvY3VtZW50YXRpb24gYW5kIG1vZGlmaWVzIHRoZSBgX19pbml0YCBlYXJseSBib290IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgaGFuZGxlciBgcmVzZXJ2ZV9tZW0oKWAgaW4gbW0vbWVtYmxvY2suYy4gVGhpcyBjb2RlIGV4ZWN1dGVzIGV4Y2x1c2l2ZWx5IGR1cmluZyBlYXJseSBib290IHBhcmFtZXRlciBzZXR1cCBhbmQgaXMgZnJlZWQgcHJpb3IgdG8gdXNlcnNwYWNlIGV4ZWN1dGlvbiwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTQ6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjM3LjM4NzI3NDY2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDgxNzcwNDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjM3LjM4NzI4MDI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxMjI0OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDA0NjVkYTMwODk4ZjA2NDg1YzZhNWE2OTFmYWMyOTY1MWQ2YmVlYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDE0OjU1OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5pbmRleCA2ODY0N2ZmNGJkZDI0Li5mOTY5MDg1ZmZmYjdkIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcXG5AQCAtNjY0OCw2ICs2NjQ4LDkgQEAgS2VybmVsIHBhcmFtZXRlcnNcXG4gXFxuIFxcdFxcdFxcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXFxuIFxcbitcXHRcXHRcXHRCb3RoIHRoZSBzaXplIGFuZCB0aGUgYWxpZ25tZW50IG11c3QgYmUgbXVsdGlwbGVzIG9mXFxuK1xcdFxcdFxcdHRoZSBwYWdlIHNpemUuXFxuK1xcbiBcXHRyZXNlcnZldG9wPVxcdFtYODYtMzIsRUFSTFldXFxuIFxcdFxcdFxcdEZvcm1hdDogbm5bS01HXVxcbiBcXHRcXHRcXHRSZXNlcnZlcyBhIGhvbGUgYXQgdGhlIHRvcCBvZiB0aGUga2VybmVsIHZpcnR1YWxcXG5kaWZmIC0tZ2l0IGEvbW0vbWVtYmxvY2suYyBiL21tL21lbWJsb2NrLmNcXG5pbmRleCA0MzAyZmI0YWI4NWM3Li41ZTkzYjZkYTUzZTMwIDEwMDY0NFxcbi0tLSBhL21tL21lbWJsb2NrLmNcXG4rKysgYi9tbS9tZW1ibG9jay5jXFxuQEAgLTI4MTYsMTIgKzI4MTYsMTcgQEAgc3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG4gXFx0aWYgKCpwICE9ICc6JylcXG4gXFx0XFx0Z290byBlcnJfcGFyYW07XFxuIFxcbitcXHRpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSkge1xcbitcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdC8qXFxuIFxcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2Vzbid0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sXFxuIFxcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoYWxpZ24gXFx1MDAzYyBTTVBfQ0FDSEVfQllURVMpXFxuLVxcdFxcdGFsaWduID0gU01QX0NBQ0hFX0JZVEVTO1xcbitcXHRpZiAoIWFsaWduKVxcbitcXHRcXHRhbGlnbiA9IFBBR0VfU0laRTtcXG4gXFxuIFxcdG5hbWUgPSBwICsgMTtcXG4gXFx0bGVuID0gc3RybGVuKG5hbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTozNy44MTkxMTM2NzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2NjQ5OTE4NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIGRvY3VtZW50YXRpb24gYW5kIG1vZGlmaWVzIHRoZSBgX19pbml0YCBlYXJseSBib290IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgaGFuZGxlciBgcmVzZXJ2ZV9tZW0oKWAgaW4gbW0vbWVtYmxvY2suYy4gVGhpcyBjb2RlIGV4ZWN1dGVzIGV4Y2x1c2l2ZWx5IGR1cmluZyBlYXJseSBib290IHBhcmFtZXRlciBzZXR1cCBhbmQgaXMgZnJlZWQgcHJpb3IgdG8gdXNlcnNwYWNlIGV4ZWN1dGlvbiwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgcnVudGltZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMDQ2NWRhMzA4OThmMDY0ODVjNmE1YTY5MWZhYzI5NjUxZDZiZWViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNDo1NTozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDY4NjQ3ZmY0YmRkMjQuLmY5NjkwODVmZmZiN2QgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbkBAIC02NjQ4LDYgKzY2NDgsOSBAQCBLZXJuZWwgcGFyYW1ldGVyc1xuIFxuIFx0XHRcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXG4gXG4rXHRcdFx0Qm90aCB0aGUgc2l6ZSBhbmQgdGhlIGFsaWdubWVudCBtdXN0IGJlIG11bHRpcGxlcyBvZlxuK1x0XHRcdHRoZSBwYWdlIHNpemUuXG4rXG4gXHRyZXNlcnZldG9wPVx0W1g4Ni0zMixFQVJMWV1cbiBcdFx0XHRGb3JtYXQ6IG5uW0tNR11cbiBcdFx0XHRSZXNlcnZlcyBhIGhvbGUgYXQgdGhlIHRvcCBvZiB0aGUga2VybmVsIHZpcnR1YWxcbmRpZmYgLS1naXQgYS9tbS9tZW1ibG9jay5jIGIvbW0vbWVtYmxvY2suY1xuaW5kZXggNDMwMmZiNGFiODVjNy4uNWU5M2I2ZGE1M2UzMCAxMDA2NDRcbi0tLSBhL21tL21lbWJsb2NrLmNcbisrKyBiL21tL21lbWJsb2NrLmNcbkBAIC0yODE2LDEyICsyODE2LDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtKGNoYXIgKnApXG4gXHRpZiAoKnAgIT0gJzonKVxuIFx0XHRnb3RvIGVycl9wYXJhbTtcbiBcbitcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XG4rXHRcdHByX2VycihcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBtZW1ibG9ja19waHlzX2FsbG9jKCkgZG9lc24ndCBsaWtlIGEgemVybyBzaXplIGFsaWduLFxuIFx0ICogYnV0IGl0IGlzIE9LIGZvciB0aGlzIGNvbW1hbmQgdG8gaGF2ZSBpdC5cbiBcdCAqL1xuLVx0aWYgKGFsaWduIFx1MDAzYyBTTVBfQ0FDSEVfQllURVMpXG4tXHRcdGFsaWduID0gU01QX0NBQ0hFX0JZVEVTO1xuK1x0aWYgKCFhbGlnbilcbitcdFx0YWxpZ24gPSBQQUdFX1NJWkU7XG4gXG4gXHRuYW1lID0gcCArIDE7XG4gXHRsZW4gPSBzdHJsZW4obmFtZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTozNy44MTkxMTUyOTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0Mzg3OTY2MTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVtb3J5IFJlc2VydmF0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2Ugd2UncmUgdXBkYXRpbmcgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgcmVzZXJ2ZV9tZW1gIGtlcm5lbCBwYXJhbWV0ZXIgaW4gYERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0YC4gTm90aGluZyB0b28gZXhjaXRpbmcgdGhlcmUsIGp1c3QgbWFraW5nIHN1cmUgdGhlIHVzZXItZmFjaW5nIGRvY3VtZW50YXRpb24gaXMgdXAtdG8tZGF0ZS4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYG1tL21lbWJsb2NrLmNgLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGByZXNlcnZlX21lbWAgZnVuY3Rpb24uXG5cbkl0IGxvb2tzIGxpa2UgdGhleSBhcmUgY2hhbmdpbmcgaG93IHRoZSBhbGlnbm1lbnQgaXMgaGFuZGxlZC4gVGhlIG9yaWdpbmFsIGNvZGUgZm9yY2VkIGFuIGFsaWdubWVudCBvZiBhdCBsZWFzdCBgU01QX0NBQ0hFX0JZVEVTYCBpZiBub25lIHdhcyBnaXZlbiwgYW5kIG5vdyBpdCBkZWZhdWx0cyB0byBgUEFHRV9TSVpFYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIFRoZSBjb21tZW50IGhpbnRzIGF0IGBtZW1ibG9ja19waHlzX2FsbG9jKClgIG5vdCBsaWtpbmcgemVybyBhbGlnbm1lbnQsIGJ1dCBhbHNvIHRoZSBjb21tYW5kIGJlaW5nIE9LIHdpdGggaXQuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIHdoeSBkZWZhdWx0IHRvIGBQQUdFX1NJWkVgIG5vdyBpbnN0ZWFkIG9mIGBTTVBfQ0FDSEVfQllURVNgPyBJcyBpdCB0byBhbGxvdyBzbWFsbGVyIGFsbG9jYXRpb25zLCBvciBpcyBpdCBhIGJyb2FkZXIgY29tcGF0aWJpbGl0eSBmaXg/IExldCBtZSBjaGVjayB0aGUgY29kZSB1c2luZyB0aGUgYHJlYWQtZmlsZWAgY29tbWFuZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGNvbnRleHQgb2YgYG1lbWJsb2NrX3BoeXNfYWxsb2MoKWAgYW5kIHNlZSBob3cgdGhlIGFsaWdubWVudCBhZmZlY3RzIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiBtZW1vcnkgcmVzZXJ2YXRpb24gc3RyYXRlZ2llcy4gSSBob3BlIHRoZXJlJ3MgYSBnb29kIGV4cGxhbmF0aW9uIGluIHRoZSBjb21taXQgbWVzc2FnZSBvciB0aGUgYXNzb2NpYXRlZCBidWcgcmVwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTU6NDIuMjA3MDg0NjMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL21lbWJsb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjgwMDpcXHRcXG4yODAxOlxcdFxcdC8qIENoZWNrIGlmIHRoZXJlJ3Mgcm9vbSBmb3IgbW9yZSByZXNlcnZlZCBtZW1vcnkgKi9cXG4yODAyOlxcdFxcdGlmIChyZXNlcnZlZF9tZW1fY291bnQgXFx1MDAzZT0gUkVTRVJWRV9NRU1fTUFYX0VOVFJJRVMpIHtcXG4yODAzOlxcdFxcdFxcdHByX2VycihcXFwicmVzZXJ2ZV9tZW06IG5vIG1vcmUgcm9vbSBmb3IgcmVzZXJ2ZWQgbWVtb3J5XFxcXG5cXFwiKTtcXG4yODA0OlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMjgwNTpcXHRcXHR9XFxuMjgwNjpcXHRcXG4yODA3OlxcdFxcdG9sZHAgPSBwO1xcbjI4MDg6XFx0XFx0c2l6ZSA9IG1lbXBhcnNlKHAsIFxcdTAwMjZwKTtcXG4yODA5OlxcdFxcdGlmICghc2l6ZSB8fCBwID09IG9sZHApXFxuMjgxMDpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODExOlxcdFxcbjI4MTI6XFx0XFx0aWYgKCpwICE9ICc6JylcXG4yODEzOlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTQ6XFx0XFxuMjgxNTpcXHRcXHRhbGlnbiA9IG1lbXBhcnNlKHArMSwgXFx1MDAyNnApO1xcbjI4MTY6XFx0XFx0aWYgKCpwICE9ICc6JylcXG4yODE3OlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTg6XFx0XFxuMjgxOTpcXHRcXHRpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSkge1xcbjI4MjA6XFx0XFx0XFx0cHJfZXJyKFxcXCJyZXNlcnZlX21lbTogc2l6ZSBhbmQgYWxpZ24gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZVxcXFxuXFxcIik7XFxuMjgyMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yODIyOlxcdFxcdH1cXG4yODIzOlxcdFxcbjI4MjQ6XFx0XFx0LypcXG4yODI1OlxcdFxcdCAqIG1lbWJsb2NrX3BoeXNfYWxsb2MoKSBkb2Vzbid0IGxpa2UgYSB6ZXJvIHNpemUgYWxpZ24sXFxuMjgyNjpcXHRcXHQgKiBidXQgaXQgaXMgT0sgZm9yIHRoaXMgY29tbWFuZCB0byBoYXZlIGl0LlxcbjI4Mjc6XFx0XFx0ICovXFxuMjgyODpcXHRcXHRpZiAoIWFsaWduKVxcbjI4Mjk6XFx0XFx0XFx0YWxpZ24gPSBQQUdFX1NJWkU7XFxuMjgzMDpcXHRcXG4yODMxOlxcdFxcdG5hbWUgPSBwICsgMTtcXG4yODMyOlxcdFxcdGxlbiA9IHN0cmxlbihuYW1lKTtcXG4yODMzOlxcdFxcbjI4MzQ6XFx0XFx0LyogbmFtZSBuZWVkcyB0byBoYXZlIGxlbmd0aCBidXQgbm90IHRvbyBiaWcgKi9cXG4yODM1OlxcdFxcdGlmICghbGVuIHx8IGxlbiBcXHUwMDNlPSBSRVNFUlZFX01FTV9OQU1FX1NJWkUpXFxuMjgzNjpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODM3OlxcdFxcbjI4Mzg6XFx0XFx0LyogTWFrZSBzdXJlIHRoYXQgbmFtZSBoYXMgdGV4dCAqL1xcbjI4Mzk6XFx0XFx0Zm9yIChwID0gbmFtZTsgKnA7IHArKykge1xcbjI4NDA6XFx0XFx0XFx0aWYgKCFpc3NwYWNlKCpwKSlcXG4yODQxOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjI4NDI6XFx0XFx0fVxcbjI4NDM6XFx0XFx0aWYgKCEqcClcXG4yODQ0OlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4NDU6XFx0XFxuMjg0NjpcXHRcXHQvKiBNYWtlIHN1cmUgdGhlIG5hbWUgaXMgbm90IGFscmVhZHkgdXNlZCAqL1xcbjI4NDc6XFx0XFx0aWYgKHJlc2VydmVfbWVtX2ZpbmRfYnlfbmFtZShuYW1lLCBcXHUwMDI2c3RhcnQsIFxcdTAwMjZ0bXApKSB7XFxuMjg0ODpcXHRcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBuYW1lIFxcXFxcXFwiJXNcXFxcXFxcIiB3YXMgYWxyZWFkeSB1c2VkXFxcXG5cXFwiLCBuYW1lKTtcXG4yODQ5OlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE0OjU1OjQyLjIwNzI1MDQ4M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NjA1NTQ1NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYHJlc2VydmVfbWVtYCBpbiB0aGUgTWVtb3J5IEJsb2NrIEFsbG9jYXRvcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHJlc2VydmVfbWVtYCBzaXR1YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzbyBJJ2xsIHN0YXJ0IHdpdGggaXRzIHVzYWdlIGFuZCBpbml0aWFsaXphdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgbW0vbWVtYmxvY2suY2AgZmlsZTsgdGhhdCdzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgbWVtb3J5IGJsb2NrIG1hbmFnZW1lbnQgcm91dGluZXMuIEknbGwgZm9jdXMgb24gbGluZXMgYXJvdW5kIDI4MDAgYW5kIHRoZW4gc2NhbiBmdXJ0aGVyLCBzcGVjaWZpY2FsbHkgcGFzdCAyODUwLCB0byBzZWUgaG93IGFuZCB3aGVyZSBgcmVzZXJ2ZV9tZW1gIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCwgb3IgbW9yZSBpbXBvcnRhbnRseSwgKnNldCB1cCogd2l0aGluIHRoYXQgbW9kdWxlLiBJdCdzIHVzdWFsbHkgdGhlIGluaXRpYWxpemF0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgY29udGV4dC4gVGhpcyBzaG91bGQgaGVscCBtZSBwaW5wb2ludCB0aGUgcHVycG9zZSBvZiB0aGlzIGNhbGwgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIG9mIHRoZSBrZXJuZWwuIExvb2tpbmcgZm9yIHRoZSBjYWxsIHNpdGVzIGlzIGtleSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0NC44Njc4MDcxMDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vbWVtYmxvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyODUwOlxcdFxcdH1cXG4yODUxOlxcdFxcbjI4NTI6XFx0XFx0LyogUGljayBwcmV2aW91cyBhbGxvY2F0aW9ucyB1cCBmcm9tIEtITyBpZiBhdmFpbGFibGUgKi9cXG4yODUzOlxcdFxcdGlmIChyZXNlcnZlX21lbV9raG9fcmV2aXZlKG5hbWUsIHNpemUsIGFsaWduKSlcXG4yODU0OlxcdFxcdFxcdHJldHVybiAxO1xcbjI4NTU6XFx0XFxuMjg1NjpcXHRcXHQvKiBUT0RPOiBBbGxvY2F0aW9uIG11c3QgYmUgb3V0c2lkZSBvZiBzY3JhdGNoIHJlZ2lvbiAqL1xcbjI4NTc6XFx0XFx0c3RhcnQgPSBtZW1ibG9ja19waHlzX2FsbG9jKHNpemUsIGFsaWduKTtcXG4yODU4OlxcdFxcdGlmICghc3RhcnQpIHtcXG4yODU5OlxcdFxcdFxcdHByX2VycihcXFwicmVzZXJ2ZV9tZW06IG1lbWJsb2NrIGFsbG9jYXRpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4yODYwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI4NjE6XFx0XFx0fVxcbjI4NjI6XFx0XFxuMjg2MzpcXHRcXHRyZXNlcnZlZF9tZW1fYWRkKHN0YXJ0LCBzaXplLCBuYW1lKTtcXG4yODY0OlxcdFxcbjI4NjU6XFx0XFx0cmV0dXJuIDE7XFxuMjg2NjpcXHRlcnJfcGFyYW06XFxuMjg2NzpcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBlbXB0eSBvciBtYWxmb3JtZWQgcGFyYW1ldGVyXFxcXG5cXFwiKTtcXG4yODY4OlxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI4Njk6XFx0fVxcbjI4NzA6XFx0X19zZXR1cChcXFwicmVzZXJ2ZV9tZW09XFxcIiwgcmVzZXJ2ZV9tZW0pO1xcbjI4NzE6XFx0XFxuMjg3MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMjg3MzpcXHQjaWZkZWYgQ09ORklHX0FSQ0hfS0VFUF9NRU1CTE9DS1xcbjI4NzQ6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmbGFnbmFtZVtdID0ge1xcbjI4NzU6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX0hPVFBMVUcpXSA9IFxcXCJIT1RQTFVHXFxcIixcXG4yODc2OlxcdFxcdFtpbG9nMihNRU1CTE9DS19NSVJST1IpXSA9IFxcXCJNSVJST1JcXFwiLFxcbjI4Nzc6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX05PTUFQKV0gPSBcXFwiTk9NQVBcXFwiLFxcbjI4Nzg6XFx0XFx0W2lsb2cyKE1FTUJMT0NLX0RSSVZFUl9NQU5BR0VEKV0gPSBcXFwiRFJWX01OR1xcXCIsXFxuMjg3OTpcXHRcXHRbaWxvZzIoTUVNQkxPQ0tfUlNSVl9OT0lOSVQpXSA9IFxcXCJSU1ZfTklUXFxcIixcXG4yODgwOlxcdFxcdFtpbG9nMihNRU1CTE9DS19SU1JWX0tFUk4pXSA9IFxcXCJSU1ZfS0VSTlxcXCIsXFxuMjg4MTpcXHRcXHRbaWxvZzIoTUVNQkxPQ0tfS0hPX1NDUkFUQ0gpXSA9IFxcXCJLSE9fU0NSQVRDSFxcXCIsXFxuMjg4MjpcXHR9O1xcbjI4ODM6XFx0XFxuMjg4NDpcXHRzdGF0aWMgaW50IG1lbWJsb2NrX2RlYnVnX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpwcml2YXRlKVxcbjI4ODU6XFx0e1xcbjI4ODY6XFx0XFx0c3RydWN0IG1lbWJsb2NrX3R5cGUgKnR5cGUgPSBtLVxcdTAwM2Vwcml2YXRlO1xcbjI4ODc6XFx0XFx0c3RydWN0IG1lbWJsb2NrX3JlZ2lvbiAqcmVnO1xcbjI4ODg6XFx0XFx0aW50IGksIGosIG5pZDtcXG4yODg5OlxcdFxcdHVuc2lnbmVkIGludCBjb3VudCA9IEFSUkFZX1NJWkUoZmxhZ25hbWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0NC44Njc5NDU1OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjQ2MDc5NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFYXJseSBCb290IFBhcmFtZXRlciBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9fc2V0dXAoXCJyZXNlcnZlX21lbT1cIiwgcmVzZXJ2ZV9tZW0pO2AgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYW4gZWFybHkgYm9vdCBwYXJhbWV0ZXIgaGFuZGxlciDigJMgdXNpbmcgYF9fc2V0dXBgLCB3aGljaCBpcyBhIGRlYWQgZ2l2ZWF3YXksIGxpa2UgYGVhcmx5X3BhcmFtYCBvciBgX19pbml0YC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHBpbmcgaW50byBteSBoZWFkIGlzOiBjYW4gU3l6a2FsbGVyIG9yIGFueSBvdGhlciBydW50aW1lIGZ1enppbmcgYXBwcm9hY2ggYWN0dWFsbHkgKnJlYWNoKiB0aGlzIGVhcmx5IGJvb3QgcGFyc2luZyBzdGFnZSBhbmQsIHNwZWNpZmljYWxseSwgdGFyZ2V0IHNvbWV0aGluZyBsaWtlIGBfX3NldHVwKFwicmVzZXJ2ZV9tZW09XCIsIC4uLilgP1xuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nLiBJIGhhdmUgdG8gc2VlIGlmIGByZXNlcnZlX21lbWAgb3IgYW55IHNpbWlsYXJseSBuYW1lZCBmdW5jdGlvbiBpcyBldmVuIGNhbGxlZCAqYWZ0ZXIqIGJvb3QtdXAuIElmIGl0J3MgKnNvbGVseSogZm9yIGVhcmx5IGJvb3QsIGl0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCAoYW5kIGxpa2VseSBtb3JlIGRpZmZpY3VsdCkgdGFyZ2V0LiBUaW1lIHRvIGZpcmUgdXAgdGhlIGdyZXAgYW5kIGNoZWNrIHRoZSBjb2RlYmFzZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTUsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo0OC4xMTQwMjczNzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxNDUxNzA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNlcnZlX21lbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg2MyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ9OTg9S2VybmVsIHBhcmFtZXRlcnNcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTU0NDktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NTQ1MDpcXHRwbnBfcmVzZXJ2ZV9tZW09XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNTQ1MS1cXHRcXHRcXHRbSVNBUE5QXSBFeGNsdWRlIG1lbW9yeSByZWdpb25zIGZvciB0aGVcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MjgtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NjYyOTpcXHRyZXNlcnZlX21lbT1cXHRbUkFNXVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTY2MzAtXFx0XFx0XFx0Rm9ybWF0OiBubltLTUddOlxcdTAwM2NhbGlnblxcdTAwM2U6XFx1MDAzY2xhYmVsXFx1MDAzZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY0OC1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDo2NjQ5OlxcdFxcdFxcdHJlc2VydmVfbWVtPTEyTTo0MDk2Om9vcHMgcmFtb29wcy5tZW1fbmFtZT1vb3BzXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNjY1MC1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MTktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NzgyMDpcXHRcXHRcXHRBbHRlcm5hdGl2ZWx5LCB0aGUgbWVtb3J5IGNhbiBiZSByZXNlcnZlZCBieSB0aGUgcmVzZXJ2ZV9tZW0gb3B0aW9uOlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6NzgyMjpcXHRcXHRcXHRcXHRyZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTc4MjMtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC03ODM3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0Ojc4Mzg6XFx0XFx0XFx0XFx0cmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBedHJhY2VvZmZedHJhY2VwcmludGtAdHJhY2Usc2NoZWQsaXJxXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtNzgzOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0va2hvLnJzdD0zOT1UaGUgbmV3IGtlcm5lbCB3aWxsIGJvb3QgdXAgYW5kIGNvbnRhaW4gc29tZSBvZiB0aGUgcHJldmlvdXMga2VybmVsJ3Mgc3RhdGUuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0va2hvLnJzdDo0MTpGb3IgZXhhbXBsZSwgaWYgeW91IHVzZWQgYGByZXNlcnZlX21lbWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgdG8gY3JlYXRlXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9raG8ucnN0LTQyLWFuIGVhcmx5IG1lbW9yeSByZXNlcnZhdGlvbiwgdGhlIG5ldyBrZXJuZWwgd2lsbCBoYXZlIHRoYXQgbWVtb3J5IGF0IHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0PTEwMz1hbHNvIHRoZXJlIGFyZSBhIHNlcmllcyBvZiBrZXJuZWwgcGFyYW1ldGVyczo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3BucC5yc3QtMTA3LVxcdHBucF9yZXNlcnZlX2lvPWlvMSxzaXplMVssaW8yLHNpemUyXSAuLi4uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wbnAucnN0OjEwODpcXHRwbnBfcmVzZXJ2ZV9tZW09bWVtMSxzaXplMVssbWVtMixzaXplMl0gLi4uLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG5wLnJzdC0xMDktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0PTIwPWFuZCB0eXBlIG9mIHRoZSBtZW1vcnkgYXJlYSBhcmUgc2V0IHVzaW5nIHRocmVlIHZhcmlhYmxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjUtICAqIGBgbWVtX3R5cGVgYCB0byBzcGVjaWZ5IGlmIHRoZSBtZW1vcnkgdHlwZSAoZGVmYXVsdCBpcyBwZ3Byb3Rfd3JpdGVjb21iaW5lKS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjI2OiAgKiBgYG1lbV9uYW1lYGAgdG8gc3BlY2lmeSBhIG1lbW9yeSByZWdpb24gZGVmaW5lZCBieSBgYHJlc2VydmVfbWVtYGAgY29tbWFuZFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMjctICAgIGxpbmUgcGFyYW1ldGVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdD02Mj1TZXR0aW5nIHRoZSByYW1vb3BzIHBhcmFtZXRlcnMgY2FuIGJlIGRvbmUgaW4gc2V2ZXJhbCBkaWZmZXJlbnQgbWFubmVyczpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTIyLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTIzOiBELiBVc2luZyBhIHJlZ2lvbiBvZiBtZW1vcnkgcmVzZXJ2ZWQgdmlhIGBgcmVzZXJ2ZV9tZW1gYCBjb21tYW5kIGxpbmVcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEyNDogICAgcGFyYW1ldGVyLiBUaGUgYWRkcmVzcyBhbmQgc2l6ZSB3aWxsIGJlIGRlZmluZWQgYnkgdGhlIGBgcmVzZXJ2ZV9tZW1gYFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI1OiAgICBwYXJhbWV0ZXIuIE5vdGUsIHRoYXQgYGByZXNlcnZlX21lbWBgIG1heSBub3QgYWx3YXlzIGFsbG9jYXRlIG1lbW9yeVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTI2LSAgICBpbiB0aGUgc2FtZSBsb2NhdGlvbiwgYW5kIGNhbm5vdCBiZSByZWxpZWQgdXBvbi4gVGVzdGluZyB3aWxsIG5lZWRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyNy0gICAgdG8gYmUgZG9uZSwgYW5kIGl0IG1heSBub3Qgd29yayBvbiBldmVyeSBtYWNoaW5lLCBub3IgZXZlcnkga2VybmVsLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3Q6MTI4OiAgICBDb25zaWRlciB0aGlzIGEgXFxcImJlc3QgZWZmb3J0XFxcIiBhcHByb2FjaC4gVGhlIGBgcmVzZXJ2ZV9tZW1gYCBvcHRpb25cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEyOS0gICAgdGFrZXMgYSBzaXplLCBhbGlnbm1lbnQgYW5kIG5hbWUgYXMgYXJndW1lbnRzLiBUaGUgbmFtZSBpcyB1c2VkXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0LTEzMS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3JhbW9vcHMucnN0OjEzMjpcXHRyZXNlcnZlX21lbT0yTTo0MDk2Om9vcHMgIHJhbW9vcHMubWVtX25hbWU9b29wc1xcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmFtb29wcy5yc3QtMTMzLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3Q9MjY0PU5PVEU6XFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3Q6MjY1OiAgICAgMS4gJ2ZhZHVtcF9yZXNlcnZlX21lbT0nIHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGVkLiBJbnN0ZWFkXFxuRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC5yc3QtMjY2LSAgICAgICAgdXNlICdjcmFzaGtlcm5lbD0nIHRvIHNwZWNpZnkgc2l6ZSBvZiB0aGUgbWVtb3J5IHRvIHJlc2VydmVcXG4tLVxcbkRvY3VtZW50YXRpb24vYXJjaC94ODYvcGF0LnJzdD0zND10aGVpciBpbnRlbmRlZCB1c2FnZSBhbmQgdGhlaXIgbWVtb3J5IGF0dHJpYnV0ZSByZWxhdGlvbnNoaXBzLiBJbnRlcm5hbGx5LFxcbkRvY3VtZW50YXRpb24vYXJjaC94ODYvcGF0LnJzdDozNTp0aGVzZSBBUElzIHVzZSBhIHJlc2VydmVfbWVtdHlwZSgpL2ZyZWVfbWVtdHlwZSgpIGludGVyZmFjZSBvbiB0aGUgcGh5c2ljYWxcXG5Eb2N1bWVudGF0aW9uL2FyY2gveDg2L3BhdC5yc3QtMzYtYWRkcmVzcyByYW5nZSB0byBhdm9pZCBhbnkgYWxpYXNpbmcuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTA2PUFub3RoZXIgbW9yZSBnZW5lcmljIGJ1dCBsZXNzIHJvYnVzdCB3YXkgdG8gYWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBtYXBwaW5nXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjEwNzphdCBib290IGlzIHdpdGggdGhlIFxcXCJyZXNlcnZlX21lbVxcXCIgb3B0aW9uOjpcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTA4LVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMDk6ICByZXNlcnZlX21lbT0xMk06NDA5Njp0cmFjZSB0cmFjZV9pbnN0YW5jZT1ib290X21hcEB0cmFjZVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xMTAtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExMTpUaGUgcmVzZXJ2ZV9tZW0gb3B0aW9uIGFib3ZlIHdpbGwgZmluZCAxMiBtZWdhYnl0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGF0XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTExMi1ib290IHVwLCBhbmQgYWxpZ24gaXQgYnkgNDA5NiBieXRlcy4gSXQgd2lsbCBsYWJlbCB0aGlzIG1lbW9yeSBhcyBcXFwidHJhY2VcXFwiXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTE1PVRoZSB0cmFjZV9pbnN0YW5jZSBvcHRpb24gY3JlYXRlcyBhIFxcXCJib290X21hcFxcXCIgaW5zdGFuY2UgYW5kIHdpbGwgdXNlIHRoZVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMTY6bWVtb3J5IHJlc2VydmVkIGJ5IHJlc2VydmVfbWVtIHRoYXQgd2FzIGxhYmVsZWQgYXMgXFxcInRyYWNlXFxcIi4gVGhpcyBtZXRob2QgaXNcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTE3LW1vcmUgZ2VuZXJpYyBidXQgbWF5IG5vdCBiZSBhcyByZWxpYWJsZS4gRHVlIHRvIEtBU0xSLCB0aGUgbWVtb3J5IHJlc2VydmVkXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjExODpieSByZXNlcnZlX21lbSBtYXkgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHNhbWUgbG9jYXRpb24uIElmIHRoaXMgaGFwcGVucyxcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTE5LXRoZW4gdGhlIHJpbmcgYnVmZmVyIHdpbGwgbm90IGJlIGZyb20gdGhlIHByZXZpb3VzIGJvb3QgYW5kIHdpbGwgYmUgcmVzZXQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTIxPVNvbWV0aW1lcywgYnkgdXNpbmcgYSBsYXJnZXIgYWxpZ25tZW50LCBpdCBjYW4ga2VlcCBLQVNMUiBmcm9tIG1vdmluZyB0aGluZ3NcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTIyOmFyb3VuZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgd2lsbCBtb3ZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgcmVzZXJ2ZV9tZW0uIEJ5XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyMy11c2luZyBhIGxhcmdlciBhbGlnbm1lbnQsIHlvdSBtYXkgZmluZCBiZXR0ZXIgdGhhdCB0aGUgYnVmZmVyIGlzIG1vcmVcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q9MTI0PWNvbnNpc3RlbnQgdG8gd2hlcmUgaXQgaXMgcGxhY2VkOjpcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdDoxMjY6ICByZXNlcnZlX21lbT0xMk06MHgyMDAwMDAwOnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTEyNy1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdD0xNTQ9RnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZTo6XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0LTE1NS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3Q6MTU2OiAgcmVzZXJ2ZV9tZW09MTJNOjQwOTY6dHJhY2UgdHJhY2VfaW5zdGFuY2U9Ym9vdF9tYXBedHJhY2VwcmludGtedHJhY2VvZmZAdHJhY2VcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTU3LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0PTE2OT1iYWNrdXAgaW5zdGFuY2UuIEZyb20gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6OlxcbkRvY3VtZW50YXRpb24vdHJhY2UvZGVidWdnaW5nLnJzdC0xNzAtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9kZWJ1Z2dpbmcucnN0OjE3MTogIHJlc2VydmVfbWVtPTEyTTo0MDk2OnRyYWNlIHRyYWNlX2luc3RhbmNlPWJvb3RfbWFwQHRyYWNlLHNjaGVkLGlycSB0cmFjZV9pbnN0YW5jZT1iYWNrdXA9Ym9vdF9tYXBcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2RlYnVnZ2luZy5yc3QtMTcyLVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yMS0gKi9cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jOjIyOmludCBfX3dlYWsgb21hcF9zZWN1cmVfcmFtX3Jlc2VydmVfbWVtYmxvY2sodm9pZClcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jLTIzLXtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM9Mjc9dm9pZCBfX2luaXQgb21hcF9yZXNlcnZlKHZvaWQpXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYy0yOC17XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uYzoyOTpcXHRvbWFwX3NlY3VyZV9yYW1fcmVzZXJ2ZV9tZW1ibG9jaygpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmM6MzA6XFx0b21hcF9iYXJyaWVyX3Jlc2VydmVfbWVtYmxvY2soKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5jLTMxLX1cXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg9MTY5PXN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwNDR4eF9yZXN0YXJ0KGVudW0gcmVib290X21vZGUgbW9kZSwgY29uc3QgY2hhciAqY21kKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaC0xNzQtI2lmZGVmIENPTkZJR19PTUFQX0lOVEVSQ09OTkVDVF9CQVJSSUVSXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jb21tb24uaDoxNzU6dm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5oLTE3Ni12b2lkIG9tYXBfYmFycmllcnNfaW5pdCh2b2lkKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL2NvbW1vbi5oLTE3Ny0jZWxzZVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmg6MTc4OnN0YXRpYyBpbmxpbmUgdm9pZCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY29tbW9uLmgtMTc5LXtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcC1zZWN1cmUuYz05OD12b2lkIG9tYXBfc21jMSh1MzIgZm4sIHUzMiBhcmcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmMtMTEwLS8qIEFsbG9jYXRlIHRoZSBtZW1vcnkgdG8gc2F2ZSBzZWN1cmUgcmFtICovXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jOjExMTppbnQgX19pbml0IG9tYXBfc2VjdXJlX3JhbV9yZXNlcnZlX21lbWJsb2NrKHZvaWQpXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5jLTExMi17XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXAtc2VjdXJlLmg9NzI9ZXh0ZXJuIHUzMiBvbWFwX3NtYzModTMyIGlkLCB1MzIgcHJvY2VzcywgdTMyIGZsYWcsIHUzMiBwYXJncyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5oOjczOmV4dGVybiBpbnQgb21hcF9zZWN1cmVfcmFtX3Jlc2VydmVfbWVtYmxvY2sodm9pZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwLXNlY3VyZS5oLTc0LWV4dGVybiB1MzIgc2F2ZV9zZWN1cmVfcmFtX2NvbnRleHQodTMyIGFyZ3NfcGEpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwNC1jb21tb24uYz0xNDY9b21hcF9hcmNoX2luaXRjYWxsKG9tYXA0X3NyYW1faW5pdCk7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jLTE0OC0vKiBTdGVhbCBvbmUgcGFnZSBwaHlzaWNhbCBtZW1vcnkgZm9yIGJhcnJpZXIgaW1wbGVtZW50YXRpb24gKi9cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXA0LWNvbW1vbi5jOjE0OTp2b2lkIF9faW5pdCBvbWFwX2JhcnJpZXJfcmVzZXJ2ZV9tZW1ibG9jayh2b2lkKVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcDQtY29tbW9uLmMtMTUwLXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYz0yOTU9dm9pZCBfX2lvbWVtICphY3BpX29zX2lvcmVtYXAoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0MS1cXHRcXHRcXHQgKiB0YWJsZSBvdmVycmlkZXMgcGFzc2VkIHZpYSBpbml0cmFtZnMsIHdoaWNoIGFyZVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYzozNDI6XFx0XFx0XFx0ICogcmVzZXJ2ZWQgaW4gbWVtb3J5IHVzaW5nIGFyY2hfcmVzZXJ2ZV9tZW1fYXJlYSgpXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTM0My1cXHRcXHRcXHQgKiBiZWxvdy4gQXMgdGhpcyBwYXJ0aWN1bGFyIHVzZSBjYXNlIG9ubHkgcmVxdWlyZXNcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2FjcGkuYz0zODk9aW50IGFwZWlfY2xhaW1fc2VhKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvYWNwaS5jLTQzNS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hY3BpLmM6NDM2OnZvaWQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL2FybTY0L2tlcm5lbC9hY3BpLmMtNDM3LXtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmM9MjEwPXN0YXRpYyB2b2lkIF9faW5pdCByZXF1ZXN0X3N0YW5kYXJkX3Jlc291cmNlcyh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDUtXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYzoyNDY6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNDcte1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYy0yNzEtfVxcbmFyY2gvYXJtNjQva2VybmVsL3NldHVwLmM6MjcyOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jLTI3My1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9hY3BpLmM9MzQzPWFjcGlfbnVtYV94MmFwaWNfYWZmaW5pdHlfaW5pdChzdHJ1Y3QgYWNwaV9zcmF0X3gyYXBpY19jcHVfYWZmaW5pdHkgKnBhKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL2FjcGkuYy0zNzctXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL2FjcGkuYzozNzg6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvYWNwaS5jLTM3OS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYz01NDE9YXJjaF9pbml0Y2FsbChhcmNoX3Jlc2VydmVfcGlvX3JhbmdlKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NDItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NTQzOnN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jLTU0NC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy01NjgtfVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9zZXR1cC5jOjU2OTphcmNoX2luaXRjYWxsKHJlc2VydmVfbWVtYmxvY2tfcmVzZXJ2ZWRfcmVnaW9ucyk7XFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNTcwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oPTM1PWV4dGVybiBpbnQgZWFybHlfaW5pdF9kdF9zY2FuX2Z3X2R1bXAodW5zaWduZWQgbG9uZyBub2RlLCBjb25zdCBjaGFyICp1bmFtZSxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmgtMzYtXFx0XFx0XFx0XFx0ICAgICAgaW50IGRlcHRoLCB2b2lkICpkYXRhKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZmFkdW1wLmg6Mzc6ZXh0ZXJuIGludCBmYWR1bXBfcmVzZXJ2ZV9tZW0odm9pZCk7XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZhZHVtcC5oLTM4LSNlbmRpZlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz04Mj12b2lkIF9faW5pdCBmYWR1bXBfY21hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtOTctXFx0ICogW2Jhc2UsIGVuZCkgc2hvdWxkIGJlIHJlc2VydmVkIGR1cmluZyBlYXJseSBpbml0IGluXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo5ODpcXHQgKiBmYWR1bXBfcmVzZXJ2ZV9tZW0oKS4gTm8gbmVlZCB0byBjaGVjayB0aGlzIGhlcmUgYXNcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTk5LVxcdCAqIGNtYV9pbml0X3Jlc2VydmVkX21lbSgpIGFscmVhZHkgY2hlY2tzIGZvciBvdmVybGFwLlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz0zMjI9c3RhdGljIF9faW5pdCB1NjQgZmFkdW1wX2NhbGN1bGF0ZV9yZXNlcnZlX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMzI3LVxcdGlmIChmd19kdW1wLnJlc2VydmVfYm9vdHZhcilcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjMyODpcXHRcXHRwcl93YXJuKFxcXCInZmFkdW1wX3Jlc2VydmVfbWVtPScgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ2NyYXNoa2VybmVsPScgcGFyYW1ldGVyLlxcXFxuXFxcIik7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zMjktXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTM1OC1cXHRcXHQvKlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MzU5OlxcdFxcdCAqICdmYWR1bXBfcmVzZXJ2ZV9tZW09JyBpcyBiZWluZyB1c2VkIHRvIHJlc2VydmUgbWVtb3J5XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0zNjAtXFx0XFx0ICogZm9yIGZpcm13YXJlLWFzc2lzdGVkIGR1bXAuXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTQ5Mj1zdGF0aWMgYm9vbCBfX2luaXQgb3ZlcmxhcHNfcmVzZXJ2ZWRfcmFuZ2VzKHU2NCBiYXNlLCB1NjQgZW5kLCBpbnQgKmlkeClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE3LSAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTE4OnN0YXRpYyB1NjQgX19pbml0IGZhZHVtcF9sb2NhdGVfcmVzZXJ2ZV9tZW0odTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTE5LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNTQ4LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTQ5OmludCBfX2luaXQgZmFkdW1wX3Jlc2VydmVfbWVtKHZvaWQpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01NTAte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02MTgtXFx0XFx0ICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2MTk6XFx0XFx0YmFzZSA9IGZhZHVtcF9sb2NhdGVfcmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTY2OD1lYXJseV9wYXJhbShcXFwiZmFkdW1wXFxcIiwgZWFybHlfZmFkdW1wX3BhcmFtKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtNjcwLS8qXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2NzE6ICogTG9vayBmb3IgZmFkdW1wX3Jlc2VydmVfbWVtPSBjbWRsaW5lIG9wdGlvblxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NjcyOiAqIFRPRE86IFJlbW92ZSByZWZlcmVuY2VzIHRvICdmYWR1bXBfcmVzZXJ2ZV9tZW09JyBwYXJhbWV0ZXIsXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02NzMtICogICAgICAgdGhlIHNvb25lciAnY3Jhc2hrZXJuZWw9JyBwYXJhbWV0ZXIgaXMgYWNjdXN0b21lZCB0by5cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3NC0gKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jOjY3NTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9mYWR1bXBfcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY3Ni17XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTY4MC19XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo2ODE6ZWFybHlfcGFyYW0oXFxcImZhZHVtcF9yZXNlcnZlX21lbVxcXCIsIGVhcmx5X2ZhZHVtcF9yZXNlcnZlX21lbSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy02ODItXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTE4Mjc9aW50IF9faW5pdCBlYXJseV9pbml0X2R0X3NjYW5fZndfZHVtcCh1bnNpZ25lZCBsb25nIG5vZGUsIGNvbnN0IGNoYXIgKnVuYW1lLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy0xODQxLSAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6MTg0MjppbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmMtMTg0My17XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTg9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjQzLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY0NDpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW1fZHQodm9pZClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02NDUte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjc2LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY3NzpzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcmVzZXJ2ZV9tZW0odm9pZClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy02Nzgte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjg0LVxcdC8qIExvb2sgZm9yIHRoZSBuZXcgXFxcInJlc2VydmVkLXJlZ2lvbnNcXFwiIHByb3BlcnR5IGluIHRoZSBEVCAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjY4NTpcXHRlYXJseV9yZXNlcnZlX21lbV9kdCgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTY4Ni1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jPTc4Nz12b2lkIF9faW5pdCBlYXJseV9pbml0X2RldnRyZWUodm9pZCAqcGFyYW1zKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtODYwLVxcdCAqL1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjg2MTpcXHRpZiAoZmFkdW1wX3Jlc2VydmVfbWVtKCkgPT0gMClcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYy04NjItI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtODYzLVxcdFxcdGFyY2hfcmVzZXJ2ZV9jcmFzaGtlcm5lbCgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jOjg2NDpcXHRlYXJseV9yZXNlcnZlX21lbSgpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTg2NS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTQxNT1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9zZW5kX2NhcGFiaWxpdGllcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xNTExLSAqXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxNTEyOiAqICBOb3RlIHRoYXQgY2FsbHMgdG8gcmVzZXJ2ZV9tZW0gaGF2ZSB0byBiZSBkb25lIGV4cGxpY2l0bHksIG1lbW9yeVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTUxMy0gKiAgYWxsb2NhdGVkIHdpdGggZWl0aGVyIGFsbG9jX3VwIG9yIGFsbG9jX2Rvd24gaXNuJ3QgYXV0b21hdGljYWxseVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0xNjI3PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBwcm9tX25leHRfY2VsbChpbnQgcywgY2VsbF90ICoqY2VsbHApXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE2NTUtICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxNjU2OnN0YXRpYyB2b2lkIF9faW5pdCByZXNlcnZlX21lbSh1NjQgYmFzZSwgdTY0IHNpemUpXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xNjU3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTg2Nz1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9pbnN0YW50aWF0ZV9ydGFzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTE5MDgtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoxOTA5OlxcdHJlc2VydmVfbWVtKGJhc2UsIHNpemUpO1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTkxMC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmM9MTkzND1zdGF0aWMgdm9pZCBfX2luaXQgcHJvbV9pbnN0YW50aWF0ZV9zbWwodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMTk5NC1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jOjE5OTU6XFx0cmVzZXJ2ZV9tZW0oYmFzZSwgc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYy0xOTk2LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYz0yMDEyPXN0YXRpYyB2b2lkIF9faW5pdCBwcm9tX2luaXRpYWxpemVfdGNlX3RhYmxlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTIxMjEtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzoyMTIyOlxcdHJlc2VydmVfbWVtKGxvY2FsX2FsbG9jX2JvdHRvbSwgbG9jYWxfYWxsb2NfdG9wIC0gbG9jYWxfYWxsb2NfYm90dG9tKTtcXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTIxMjMtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jPTMxODU9c3RhdGljIHZvaWQgX19pbml0IHByb21fY2hlY2tfaW5pdHJkKHVuc2lnbmVkIGxvbmcgcjMsIHVuc2lnbmVkIGxvbmcgcjQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jLTMyMDAtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYzozMjAxOlxcdFxcdHJlc2VydmVfbWVtKHByb21faW5pdHJkX3N0YXJ0LFxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMtMzIwMi1cXHRcXHRcXHQgICAgcHJvbV9pbml0cmRfZW5kIC0gcHJvbV9pbml0cmRfc3RhcnQpO1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTM1NT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX2dldF9jcHVfdWlkKTtcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU2LVxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozNTc6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzU4LXtcXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM9MTM1PXN0YXRpYyB2b2lkIF9faW5pdCBpbml0X3Jlc291cmNlcyh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjYtXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYzoyMjc6c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKHZvaWQpXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yMjgte1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYy0yNTItfVxcbmFyY2gvcmlzY3Yva2VybmVsL3NldHVwLmM6MjUzOmFyY2hfaW5pdGNhbGwocmVzZXJ2ZV9tZW1ibG9ja19yZXNlcnZlZF9yZWdpb25zKTtcXG5hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jLTI1NC1cXG4tLVxcbmFyY2gvc2gvbW0vaW5pdC5jPTIxNj1zdGF0aWMgdm9pZCBfX2luaXQgZG9faW5pdF9ib290bWVtKHZvaWQpXFxuLS1cXG5hcmNoL3NoL21tL2luaXQuYy0yMzEtXFxuYXJjaC9zaC9tbS9pbml0LmM6MjMyOnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbSh2b2lkKVxcbmFyY2gvc2gvbW0vaW5pdC5jLTIzMy17XFxuLS1cXG5hcmNoL3NoL21tL2luaXQuYz0yNzA9dm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZClcXG4tLVxcbmFyY2gvc2gvbW0vaW5pdC5jLTI3NS1cXG5hcmNoL3NoL21tL2luaXQuYzoyNzY6XFx0ZWFybHlfcmVzZXJ2ZV9tZW0oKTtcXG5hcmNoL3NoL21tL2luaXQuYy0yNzctXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oPTM0OT1leHRlcm4gdm9pZCBhcmNoX3BoeXNfd2NfZGVsKGludCBoYW5kbGUpO1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTMtI2lmZGVmIENPTkZJR19YODZfUEFUXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaDozNTQ6ZXh0ZXJuIGludCBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oLTM1NS1leHRlcm4gdm9pZCBhcmNoX2lvX2ZyZWVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pby5oOjM1NjojZGVmaW5lIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djIGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaC0zNTctI2VuZGlmXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmM9MTgxND1pbnQgX19hY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2sodW5zaWduZWQgaW50ICpsb2NrKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jLTE4MjQtXFxuYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jOjE4MjU6dm9pZCBfX2luaXQgYXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyLCBzaXplX3Qgc2l6ZSlcXG5hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmMtMTgyNi17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jPTU0Nz12b2lkIF9faW5pdCBtcHBhcnNlX3BhcnNlX3NtcF9jb25maWcodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTUxLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM6NTUyOnN0YXRpYyB2b2lkIF9faW5pdCBzbXBfcmVzZXJ2ZV9tZW1vcnkoc3RydWN0IG1wZl9pbnRlbCAqbXBmKVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmMtNTUzLXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9tcHBhcnNlLmM9NTU3PXN0YXRpYyBpbnQgX19pbml0IHNtcF9zY2FuX2NvbmZpZyh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL21wcGFyc2UuYy01ODQtXFx0XFx0XFx0aWYgKG1wZi1cXHUwMDNlcGh5c3B0cilcXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jOjU4NTpcXHRcXHRcXHRcXHRzbXBfcmVzZXJ2ZV9tZW1vcnkobXBmKTtcXG5hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZS5jLTU4Ni1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jPTc3Nz1zdGF0aWMgdm9pZCBfX2luaXQgZTgyMF9hZGRfa2VybmVsX3JhbmdlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYy03OTYtXFxuYXJjaC94ODYva2VybmVsL3NldHVwLmM6Nzk3OnN0YXRpYyB2b2lkIF9faW5pdCBlYXJseV9yZXNlcnZlX21lbW9yeSh2b2lkKVxcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTc5OC17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYz04ODQ9dm9pZCBfX2luaXQgc2V0dXBfYXJjaChjaGFyICoqY21kbGluZV9wKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL3NldHVwLmMtOTcxLVxcdCAqL1xcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jOjk3MjpcXHRlYXJseV9yZXNlcnZlX21lbW9yeSgpO1xcbmFyY2gveDg2L2tlcm5lbC9zZXR1cC5jLTk3My1cXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmM9NzQ4PXZvaWQgbWVtdHlwZV9mcmVlX2lvKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IGVuZClcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzUzLSNpZmRlZiBDT05GSUdfWDg2X1BBVFxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmM6NzU0OmludCBhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzU1LXtcXG4tLVxcbmFyY2gveDg2L21tL3BhdC9tZW10eXBlLmMtNzU5LX1cXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jOjc2MDpFWFBPUlRfU1lNQk9MKGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKTtcXG5hcmNoL3g4Ni9tbS9wYXQvbWVtdHlwZS5jLTc2MS1cXG4tLVxcbmRyaXZlcnMvYWNwaS90YWJsZXMuYz00MjI9dm9pZCBfX2luaXQgYWNwaV90YWJsZV91cGdyYWRlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTA4LVxcdCAqIHRoYXQgc2hvdWxkIGdldCBtYXBwZWQgYXJlIG5vdCBtYXJrZWQgXFxcInJlc2VydmVkXFxcIi5cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmM6NTA5OlxcdCAqIEJvdGggbWVtYmxvY2tfcmVzZXJ2ZSBhbmQgZTgyMF9fcmFuZ2VfYWRkICh2aWEgYXJjaF9yZXNlcnZlX21lbV9hcmVhKVxcbmRyaXZlcnMvYWNwaS90YWJsZXMuYy01MTAtXFx0ICogd29ya3MgZmluZS5cXG5kcml2ZXJzL2FjcGkvdGFibGVzLmMtNTExLVxcdCAqL1xcbmRyaXZlcnMvYWNwaS90YWJsZXMuYzo1MTI6XFx0YXJjaF9yZXNlcnZlX21lbV9hcmVhKGFjcGlfdGFibGVzX2FkZHIsIGFsbF90YWJsZXNfc2l6ZSk7XFxuZHJpdmVycy9hY3BpL3RhYmxlcy5jLTUxMy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaD0zNjY9aW50IGFtZGdwdV9hbWRrZmRfY3JpdV9yZXN1bWUodm9pZCAqcCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oOjM2NzppbnQgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmgtMzY4LVxcdFxcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmg6MzY5OnZvaWQgYW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaC0zNzAtXFx0XFx0dWludDY0X3Qgc2l6ZSwgdTMyIGFsbG9jX2ZsYWcsIGludDhfdCB4Y3BfaWQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jPTEzNz12b2lkIGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9zeXN0ZW1fbWVtKHVpbnQ2NF90IHNpemUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTU1LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoxNTY6ICogYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdCgpIC0gRGVjcmVhc2UgYXZhaWxhYmxlIG1lbW9yeSBieSBzaXplXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE1Ny0gKiBvZiBidWZmZXIuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTY4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzoxNjk6aW50IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE3MC1cXHRcXHR1aW50NjRfdCBzaXplLCB1MzIgYWxsb2NfZmxhZywgaW50OF90IHhjcF9pZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0yNjQtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjI2NTp2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMjY2LVxcdFxcdHVpbnQ2NF90IHNpemUsIHUzMiBhbGxvY19mbGFnLCBpbnQ4X3QgeGNwX2lkKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jPTMwOT12b2lkIGFtZGdwdV9hbWRrZmRfcmVsZWFzZV9ub3RpZnkoc3RydWN0IGFtZGdwdV9ibyAqYm8pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMzE0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYzozMTU6XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KGFkZXYsIHNpemUsIGFsbG9jX2ZsYWdzLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0zMTYtXFx0XFx0XFx0XFx0XFx0ICBiby1cXHUwMDNleGNwX2lkKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYz0xNzA5PWludCBhbWRncHVfYW1ka2ZkX2dwdXZtX2FsbG9jX21lbW9yeV9vZl9ncHUoXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMtMTgwNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmM6MTgwODpcXHRyZXQgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE4MDktXFx0XFx0XFx0XFx0XFx0ICAgICAgeGNwX2lkKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYy0xODkxLWVycl9ib19jcmVhdGU6XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jOjE4OTI6XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KGFkZXYsIGFsaWduZWRfc2l6ZSwgZmxhZ3MsIHhjcF9pZCk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jLTE4OTMtZXJyX3Jlc2VydmVfbGltaXQ6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM9MTA2Nz1pbnQgYW1kZ3B1X2JvX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMtMTA3MS1cXHRcXHQvKiByZXNlcnZlIFBBVCBtZW1vcnkgc3BhY2UgdG8gV0MgZm9yIFZSQU0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmM6MTA3MjpcXHRcXHRpbnQgciA9IGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGFkZXYtXFx1MDAzZWdtYy5hcGVyX2Jhc2UsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jLTEwNzMtXFx0XFx0XFx0XFx0YWRldi1cXHUwMDNlZ21jLmFwZXJfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jPTE3MDk9c3RhdGljIGludCBrZmRfaW9jdGxfc2V0X3huYWNrX21vZGUoc3RydWN0IGZpbGUgKmZpbGVwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYy0xNzMwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmM6MTczMTpcXHRcXHRyID0gc3ZtX3JhbmdlX3N3aXRjaF94bmFja19yZXNlcnZlX21lbShwLCBhcmdzLVxcdTAwM2V4bmFja19lbmFibGVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jLTE3MzItXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NDg4PXN2bV9taWdyYXRlX3JhbV90b192cmFtKHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSwgdWludDMyX3QgYmVzdF9sb2MsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTUxNy1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjUxODpcXHRyID0gYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChub2RlLVxcdTAwM2VhZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTE5LVxcdFxcdFxcdFxcdFxcdHByYW5nZS1cXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy01NjMtb3V0OlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NTY0OlxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChub2RlLVxcdTAwM2VhZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNTY1LVxcdFxcdFxcdFxcdFxcdHByYW5nZS1cXHUwMDNlbnBhZ2VzICogUEFHRV9TSVpFLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jPTI3OT1zdGF0aWMgdm9pZCBzdm1fcmFuZ2VfZnJlZShzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsIGJvb2wgZG9fdW5tYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzA0LVxcdFxcdHByX2RlYnVnKFxcXCJ1bnJlc2VydmUgcHJhbmdlIDB4JXAgc2l6ZTogMHglbGx4XFxcXG5cXFwiLCBwcmFuZ2UsIHNpemUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMDU6XFx0XFx0YW1kZ3B1X2FtZGtmZF91bnJlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMwNi1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMzU9c3ZtX3JhbmdlICpzdm1fcmFuZ2VfbmV3KHN0cnVjdCBzdm1fcmFuZ2VfbGlzdCAqc3ZtcywgdWludDY0X3Qgc3RhcnQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzQ3LVxcdGlmICghcC1cXHUwMDNleG5hY2tfZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiB1cGRhdGVfbWVtX3VzYWdlIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjM0ODpcXHQgICAgYW1kZ3B1X2FtZGtmZF9yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTM0OS1cXHRcXHRcXHRcXHQgICAgS0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCkpIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYz0zMjgyPWludFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMjgzOnN2bV9yYW5nZV9zd2l0Y2hfeG5hY2tfcmVzZXJ2ZV9tZW0oc3RydWN0IGtmZF9wcm9jZXNzICpwLCBib29sIHhuYWNrX2VuYWJsZWQpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyODQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMyOTgtXFx0XFx0XFx0aWYgKHhuYWNrX2VuYWJsZWQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmM6MzI5OTpcXHRcXHRcXHRcXHRhbWRncHVfYW1ka2ZkX3VucmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMwMC1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMwMS1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzAyOlxcdFxcdFxcdFxcdHIgPSBhbWRncHVfYW1ka2ZkX3Jlc2VydmVfbWVtX2xpbWl0KE5VTEwsIHNpemUsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jLTMzMDMtXFx0XFx0XFx0XFx0XFx0S0ZEX0lPQ19BTExPQ19NRU1fRkxBR1NfVVNFUlBUUiwgMCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxMS1cXHRcXHRpZiAoeG5hY2tfZW5hYmxlZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzEyOlxcdFxcdFxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCBzaXplLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzEzLVxcdFxcdFxcdFxcdFxcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzE0LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5jOjMzMTU6XFx0XFx0XFx0ciA9IGFtZGdwdV9hbWRrZmRfcmVzZXJ2ZV9tZW1fbGltaXQoTlVMTCwgc2l6ZSxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmMtMzMxNi1cXHRcXHRcXHRcXHRcXHRLRkRfSU9DX0FMTE9DX01FTV9GTEFHU19VU0VSUFRSLCAwKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI3LVxcdGlmIChyKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYzozMzI4OlxcdFxcdGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbV9saW1pdChOVUxMLCByZXNlcnZlZF9zaXplLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9zdm0uYy0zMzI5LVxcdFxcdFxcdFxcdFxcdEtGRF9JT0NfQUxMT0NfTUVNX0ZMQUdTX1VTRVJQVFIsIDApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3N2bS5oPTIxND12b2lkIHN2bV9yYW5nZV9zZXRfbWF4X3BhZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmg6MjE1OmludCBzdm1fcmFuZ2Vfc3dpdGNoX3huYWNrX3Jlc2VydmVfbWVtKHN0cnVjdCBrZmRfcHJvY2VzcyAqcCwgYm9vbCB4bmFja19lbmFibGVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfc3ZtLmgtMjE2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYz03Mz1pbnQgYXN0X21tX2luaXQoc3RydWN0IGFzdF9kZXZpY2UgKmFzdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmMtODMtXFx0LyogRG9uJ3QgZmFpbCBvbiBlcnJvcnMsIGJ1dCBwZXJmb3JtYW5jZSBtaWdodCBiZSByZWR1Y2VkLiAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21tLmM6ODQ6XFx0ZGV2bV9hcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhkZXYtXFx1MDAzZWRldiwgYmFzZSwgc2l6ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW0uYy04NS1cXHRkZXZtX2FyY2hfcGh5c193Y19hZGQoZGV2LVxcdTAwM2VkZXYsIGJhc2UsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYz0yNzA9bm91dmVhdV90dG1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmMtMzI0LVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdHRtLmM6MzI1OlxcdGFyY2hfaW9fcmVzZXJ2ZV9tZW10eXBlX3djKGRldmljZS1cXHUwMDNlZnVuYy1cXHUwMDNlcmVzb3VyY2VfYWRkcihkZXZpY2UsIE5WS01fQkFSMV9GQiksXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV90dG0uYy0zMjYtXFx0XFx0XFx0XFx0ICAgZGV2aWNlLVxcdTAwM2VmdW5jLVxcdTAwM2VyZXNvdXJjZV9zaXplKGRldmljZSwgTlZLTV9CQVIxX0ZCKSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYz0zODY9aW50IHJhZGVvbl9ib19pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzg4LVxcdC8qIHJlc2VydmUgUEFUIG1lbW9yeSBzcGFjZSB0byBXQyBmb3IgVlJBTSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jOjM4OTpcXHRhcmNoX2lvX3Jlc2VydmVfbWVtdHlwZV93YyhyZGV2LVxcdTAwM2VtYy5hcGVyX2Jhc2UsXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMtMzkwLVxcdFxcdFxcdFxcdCAgIHJkZXYtXFx1MDAzZW1jLmFwZXJfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTExOD1zdGF0aWMgaW50IGZkdF9maXh1cF9yZXNlcnZlZF9tZW1fbm9kZSh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTEyMC1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjEyMTpzdGF0aWMgaW50IF9faW5pdCBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KHBoeXNfYWRkcl90IGJhc2UsXFxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xMjItXFx0XFx0XFx0XFx0XFx0ICAgICAgIHBoeXNfYWRkcl90IHNpemUsIGJvb2wgbm9tYXApXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jPTE0Mz1zdGF0aWMgaW50IF9faW5pdCBfX3Jlc2VydmVkX21lbV9yZXNlcnZlX3JlZyh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jLTE2OS1cXG5kcml2ZXJzL29mL29mX3Jlc2VydmVkX21lbS5jOjE3MDpcXHRpZiAoc2l6ZSBcXHUwMDI2XFx1MDAyNiBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5KGJhc2UsIHNpemUsIG5vbWFwKSA9PSAwKSB7XFxuZHJpdmVycy9vZi9vZl9yZXNlcnZlZF9tZW0uYy0xNzEtXFx0XFx0ZmR0X2ZpeHVwX3Jlc2VydmVkX21lbV9ub2RlKG5vZGUsIGJhc2UsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYz0yOT1zdGF0aWMgaW50IHBucF9yZXNlcnZlX2lvWzE2XSA9IHtbMCAuLi4gMTVdID0gLTEgfTtcXHQvKiByZXNlcnZlIChkb24ndCB1c2UpIHNvbWUgSS9PIHJlZ2lvbiAqL1xcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MzA6c3RhdGljIGludCBwbnBfcmVzZXJ2ZV9tZW1bMTZdID0ge1swIC4uLiAxNV0gPSAtMSB9O1xcdC8qIHJlc2VydmUgKGRvbid0IHVzZSkgc29tZSBtZW1vcnkgcmVnaW9uICovXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYy0zMS1cXG4tLVxcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM9MjMwPWludCBwbnBfY2hlY2tfbWVtKHN0cnVjdCBwbnBfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxcbi0tXFxuZHJpdmVycy9wbnAvcmVzb3VyY2UuYy0yNTMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvcG5wL3Jlc291cmNlLmM6MjU0OlxcdFxcdGludCByYWRkciA9IHBucF9yZXNlcnZlX21lbVtpIFxcdTAwM2NcXHUwMDNjIDFdO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo1MC4zMjg1NDkwMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTY3ODM3MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IG1lbW9yeSBpcyBiZWluZyByZXNlcnZlZCwgc28gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGBtbS9tZW1ibG9jay5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJlc2VydmVfbWVtYCBmdW5jdGlvbi4gS25vd2luZyB0aGlzIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbiwgSSBleHBlY3QgaXQgdG8gY29udGFpbiB0aGUgZGV0YWlscyBvZiBob3cgcGh5c2ljYWwgbWVtb3J5IGlzIGFsbG9jYXRlZCBiZWZvcmUgdGhlIG1vcmUgYWR2YW5jZWQgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtcyBjb21lIGludG8gcGxheS4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmdW5jdGlvbidzIGNyaXRpY2FsIGFzcGVjdHMsIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyAyNzUwIHRocm91Z2ggMjg3MCBpbiB0aGUgZmlsZS4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyBzZWN0aW9uIHdpbGwgY29udGFpbiB0aGUgY3J1Y2lhbCBsb2dpYyBmb3IgcHJlLWJvb3QgbWVtb3J5IHJlc2VydmF0aW9uLiBIb3BlZnVsbHksIEknbGwgc2VlIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBCSU9TIG9yIGZpcm13YXJlIGR1cmluZyBlYXJseSBib290IHN0YWdlcyBoZXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBoZXJlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgbWVtb3J5IHJlc291cmNlIG1hbmFnZW1lbnQgaW4gZ2VuZXJhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NTo1My4yOTYzODkwODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL21lbWJsb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc1MDpcXHRcXHRpZiAoZXJyKSB7XFxuMjc1MTpcXHRcXHRcXHRwcl93YXJuKFxcXCJOb2RlICclcycgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVzJzogJWRcXFxcblxcXCIsXFxuMjc1MjpcXHRcXHRcXHRcXHRuYW1lLCBSRVNFUlZFX01FTV9LSE9fTk9ERV9DT01QQVRJQkxFLCBlcnIpO1xcbjI3NTM6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI3NTQ6XFx0XFx0fVxcbjI3NTU6XFx0XFxuMjc1NjpcXHRcXHRwX3N0YXJ0ID0gZmR0X2dldHByb3AoZmR0LCBvZmZzZXQsIFxcXCJzdGFydFxcXCIsIFxcdTAwMjZsZW5fc3RhcnQpO1xcbjI3NTc6XFx0XFx0cF9zaXplID0gZmR0X2dldHByb3AoZmR0LCBvZmZzZXQsIFxcXCJzaXplXFxcIiwgXFx1MDAyNmxlbl9zaXplKTtcXG4yNzU4OlxcdFxcdGlmICghcF9zdGFydCB8fCBsZW5fc3RhcnQgIT0gc2l6ZW9mKCpwX3N0YXJ0KSB8fCAhcF9zaXplIHx8XFxuMjc1OTpcXHRcXHQgICAgbGVuX3NpemUgIT0gc2l6ZW9mKCpwX3NpemUpKSB7XFxuMjc2MDpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjc2MTpcXHRcXHR9XFxuMjc2MjpcXHRcXG4yNzYzOlxcdFxcdGlmICgqcF9zdGFydCBcXHUwMDI2IChhbGlnbiAtIDEpKSB7XFxuMjc2NDpcXHRcXHRcXHRwcl93YXJuKFxcXCJLSE8gcmVzZXJ2ZS1tZW0gJyVzJyBoYXMgd3JvbmcgYWxpZ25tZW50ICgweCVseCwgMHglbHgpXFxcXG5cXFwiLFxcbjI3NjU6XFx0XFx0XFx0XFx0bmFtZSwgKGxvbmcpYWxpZ24sIChsb25nKSpwX3N0YXJ0KTtcXG4yNzY2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNzY3OlxcdFxcdH1cXG4yNzY4OlxcdFxcbjI3Njk6XFx0XFx0aWYgKCpwX3NpemUgIT0gc2l6ZSkge1xcbjI3NzA6XFx0XFx0XFx0cHJfd2FybihcXFwiS0hPIHJlc2VydmUtbWVtICclcycgaGFzIHdyb25nIHNpemUgKDB4JWx4ICE9IDB4JWx4KVxcXFxuXFxcIixcXG4yNzcxOlxcdFxcdFxcdFxcdG5hbWUsIChsb25nKSpwX3NpemUsIChsb25nKXNpemUpO1xcbjI3NzI6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI3NzM6XFx0XFx0fVxcbjI3NzQ6XFx0XFxuMjc3NTpcXHRcXHRyZXNlcnZlZF9tZW1fYWRkKCpwX3N0YXJ0LCBzaXplLCBuYW1lKTtcXG4yNzc2OlxcdFxcdHByX2luZm8oXFxcIlJldml2ZWQgbWVtb3J5IHJlc2VydmF0aW9uICclcycgZnJvbSBLSE9cXFxcblxcXCIsIG5hbWUpO1xcbjI3Nzc6XFx0XFxuMjc3ODpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4yNzc5OlxcdH1cXG4yNzgwOlxcdCNlbHNlXFxuMjc4MTpcXHRzdGF0aWMgYm9vbCBfX2luaXQgcmVzZXJ2ZV9tZW1fa2hvX3Jldml2ZShjb25zdCBjaGFyICpuYW1lLCBwaHlzX2FkZHJfdCBzaXplLFxcbjI3ODI6XFx0XFx0XFx0XFx0XFx0XFx0ICBwaHlzX2FkZHJfdCBhbGlnbilcXG4yNzgzOlxcdHtcXG4yNzg0OlxcdFxcdHJldHVybiBmYWxzZTtcXG4yNzg1OlxcdH1cXG4yNzg2OlxcdCNlbmRpZiAvKiBDT05GSUdfS0VYRUNfSEFORE9WRVIgKi9cXG4yNzg3OlxcdFxcbjI3ODg6XFx0LypcXG4yNzg5OlxcdCAqIFBhcnNlIHJlc2VydmVfbWVtPW5uOmFsaWduOm5hbWVcXG4yNzkwOlxcdCAqL1xcbjI3OTE6XFx0c3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9tZW0oY2hhciAqcClcXG4yNzkyOlxcdHtcXG4yNzkzOlxcdFxcdHBoeXNfYWRkcl90IHN0YXJ0LCBzaXplLCBhbGlnbiwgdG1wO1xcbjI3OTQ6XFx0XFx0Y2hhciAqbmFtZTtcXG4yNzk1OlxcdFxcdGNoYXIgKm9sZHA7XFxuMjc5NjpcXHRcXHRpbnQgbGVuO1xcbjI3OTc6XFx0XFxuMjc5ODpcXHRcXHRpZiAoIXApXFxuMjc5OTpcXHRcXHRcXHRnb3RvIGVycl9wYXJhbTtcXG4yODAwOlxcdFxcbjI4MDE6XFx0XFx0LyogQ2hlY2sgaWYgdGhlcmUncyByb29tIGZvciBtb3JlIHJlc2VydmVkIG1lbW9yeSAqL1xcbjI4MDI6XFx0XFx0aWYgKHJlc2VydmVkX21lbV9jb3VudCBcXHUwMDNlPSBSRVNFUlZFX01FTV9NQVhfRU5UUklFUykge1xcbjI4MDM6XFx0XFx0XFx0cHJfZXJyKFxcXCJyZXNlcnZlX21lbTogbm8gbW9yZSByb29tIGZvciByZXNlcnZlZCBtZW1vcnlcXFxcblxcXCIpO1xcbjI4MDQ6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4yODA1OlxcdFxcdH1cXG4yODA2OlxcdFxcbjI4MDc6XFx0XFx0b2xkcCA9IHA7XFxuMjgwODpcXHRcXHRzaXplID0gbWVtcGFyc2UocCwgXFx1MDAyNnApO1xcbjI4MDk6XFx0XFx0aWYgKCFzaXplIHx8IHAgPT0gb2xkcClcXG4yODEwOlxcdFxcdFxcdGdvdG8gZXJyX3BhcmFtO1xcbjI4MTE6XFx0XFxuMjgxMjpcXHRcXHRpZiAoKnAgIT0gJzonKVxcbjI4MTM6XFx0XFx0XFx0Z290byBlcnJfcGFyYW07XFxuMjgxNDpcXHRcXG4yODE1OlxcdFxcdGFsaWduID0gbWVtcGFyc2UocCsxLCBcXHUwMDI2cCk7XFxuMjgxNjpcXHRcXHRpZiAoKnAgIT0gJzonKVxcbjI4MTc6XFx0XFx0XFx0Z290byBlcnJfcGFyYW07XFxuMjgxODpcXHRcXG4yODE5OlxcdFxcdGlmICghSVNfQUxJR05FRChzaXplLCBQQUdFX1NJWkUpIHx8ICFJU19BTElHTkVEKGFsaWduLCBQQUdFX1NJWkUpKSB7XFxuMjgyMDpcXHRcXHRcXHRwcl9lcnIoXFxcInJlc2VydmVfbWVtOiBzaXplIGFuZCBhbGlnbiBtdXN0IGJlIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplXFxcXG5cXFwiKTtcXG4yODIxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI4MjI6XFx0XFx0fVxcbjI4MjM6XFx0XFxuMjgyNDpcXHRcXHQvKlxcbjI4MjU6XFx0XFx0ICogbWVtYmxvY2tfcGh5c19hbGxvYygpIGRvZXNuJ3QgbGlrZSBhIHplcm8gc2l6ZSBhbGlnbixcXG4yODI2OlxcdFxcdCAqIGJ1dCBpdCBpcyBPSyBmb3IgdGhpcyBjb21tYW5kIHRvIGhhdmUgaXQuXFxuMjgyNzpcXHRcXHQgKi9cXG4yODI4OlxcdFxcdGlmICghYWxpZ24pXFxuMjgyOTpcXHRcXHRcXHRhbGlnbiA9IFBBR0VfU0laRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTU6NTMuMjk2NTQ0ODk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMTcyNDU5NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpczogcmVzZXJ2ZV9tZW0oKSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBzZWUgYSBwYXRjaCB0aGF0IG1vZGlmaWVzIHRoZSBgcmVzZXJ2ZV9tZW1gIGZ1bmN0aW9uLCBhbmQgbXkgam9iIGlzIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlIHdpdGggU3l6a2FsbGVyLlxuXG5GaXJzdCwgSSBvYnNlcnZlIHRoYXQgYF9fc2V0dXAoXCJyZXNlcnZlX21lbT1cIiwgcmVzZXJ2ZV9tZW0pYCBpcyBpbnZvbHZlZC4gVGhpcyBpcyBrZXkuIGBfX3NldHVwYCBpbmRpY2F0ZXMgdGhhdCBgcmVzZXJ2ZV9tZW1gIGlzIHRpZWQgdG8ga2VybmVsIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgcGFyc2luZywgd2hpY2ggaGFwcGVucyB2ZXJ5IGVhcmx5IGR1cmluZyBib290LCBiZWZvcmUgdXNlcnNwYWNlIGV2ZW4gc3RhcnRzLiBJdCdzIGV4ZWN1dGVkIHdpdGhpbiB0aGUgYGRvX2luaXRjYWxsYCAvIGBwYXJzZV9lYXJseV9wYXJhbWAgLyBgcGFyc2VfYXJnc2AgcGhhc2UuXG5cbkkgY29uZmlybSB0aGF0IGByZXNlcnZlX21lbWAgaXMgYHN0YXRpY2AgYW5kIG1hcmtlZCB3aXRoIGBfX2luaXRgLiBUaGlzIG1lYW5zIGl0J3Mgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gYmUgZGlzY2FyZGVkIG9uY2UgYm9vdCBpcyBjb21wbGV0ZS4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLCBidXQgbGV0J3MgYmUgdGhvcm91Z2guXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgU3l6a2FsbGVyIGlzIHRoYXQgaXQgb3BlcmF0ZXMgaW4gYSBydW5uaW5nIGtlcm5lbCBlbnZpcm9ubWVudCwgdGFyZ2V0aW5nIHN5c2NhbGxzIGFuZCBnZW5lcmF0ZWQgcHJvZ3JhbXMuIFN5emthbGxlciBjYW5ub3QgZHluYW1pY2FsbHkgcmUtaW52b2tlIGJvb3QtdGltZSBwYXJhbWV0ZXJzIG9yIGBfX2luaXRgIGZ1bmN0aW9ucy4gSXQgc2ltcGx5ICpjYW4ndCogZGlyZWN0bHkgcGFzcyBhIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgdG8gYHJlc2VydmVfbWVtYCBhZnRlciB0aGUga2VybmVsIGlzIGJvb3RlZC4gSXQncyBmdW5kYW1lbnRhbGx5IHVuYWJsZSB0byByZWFjaCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuXG5cbkNoZWNraW5nIHRoZSBwcm9qZWN0IGRvY3VtZW50YXRpb24sIEkgaGF2ZSB0byBlbnN1cmUgdGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBNeSBjdXJyZW50IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCBpcyBub3QsIGJ1dCBJIHdpbGwgY2hlY2sgdGhlIG90aGVyIGFyZWFzLlxuXG5TZWN0aW9uIDIgY2xlYXJseSBvdXRsaW5lcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBhcmUgb3V0LiBCdXQgdGhlIG9uZSB0aGF0IHJlYWxseSBqdW1wcyBvdXQgaXMgdGhlIFwiQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlXCIsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBteSBhc3N1bXB0aW9ucy4gVGhlIHBhdGNoIGNoYW5nZXMgaW5jbHVkZTpcbjEuIERvY3VtZW50YXRpb24gdXBkYXRlcy4gSXJyZWxldmFudCB0byBmdXp6aW5nLlxuMi4gQ2hhbmdlcyB3aXRoaW4gYG1tL21lbWJsb2NrLmNgIHRvIGByZXNlcnZlX21lbWA6IGFuIGFkZGVkIGNoZWNrIGBpZiAoIUlTX0FMSUdORUQoc2l6ZSwgUEFHRV9TSVpFKSB8fCAhSVNfQUxJR05FRChhbGlnbiwgUEFHRV9TSVpFKSlgIGFuZCBhIGNoYW5nZSB0byB0aGUgZmFsbGJhY2sgYWxpZ25tZW50IGBpZiAoIWFsaWduKSBhbGlnbiA9IFBBR0VfU0laRTtgXG5cbkNydWNpYWxseSwgYm90aCBjaGFuZ2VzIGFyZSBzdHJpY3RseSAqaW5zaWRlKiB0aGUgYF9faW5pdCByZXNlcnZlX21lbShjaGFyICpwKWAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgb25seSB0aHJvdWdoIGBfX3NldHVwKFwicmVzZXJ2ZV9tZW09XCIsIHJlc2VydmVfbWVtKWAuXG5cbkkndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGF0IGByZXNlcnZlX21lbWAgaXMgYF9faW5pdGAsIG1lYW5pbmcgaXQgcmVzaWRlcyBpbiB0aGUgYC5pbml0LnRleHRgIHNlY3Rpb24uIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUga2VybmVsIGNhbGxzIGBmcmVlX2luaXRtZW0oKWAsIGZyZWVpbmcgdGhlIGAuaW5pdC50ZXh0YCBhbmQgYC5pbml0LmRhdGFgIHBhZ2VzLiBUaHVzLCBpdCdzIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBTeXprYWxsZXIgY2FuIGV2ZW4gdGhpbmsgYWJvdXQgcmVhY2hpbmcgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlYmFzZS5cblxuVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCwgYXMgbW9kaWZpZWQsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBieSBTeXprYWxsZXIgZHVyaW5nIHJ1bnRpbWUgZnV6emluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb2RlIGlzIHNwZWNpZmljYWxseSBwYXJ0IG9mIHRoZSBlYXJseSBib290IHByb2Nlc3MgYW5kIGlzIGRpc2NhcmRlZCBiZWZvcmUgdGhlIGZ1enplciBldmVuIGJlZ2lucy5cblxuU28sIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czpcbi0gICBgV29ydGhGdXp6aW5nOiBmYWxzZWBcbi0gICBgRW5hYmxlQ29uZmlnczogW11gXG4tICAgYEZvY3VzU3ltYm9sczogW11gXG4tICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRvY3VtZW50YXRpb24gYW5kIHRoZSBgX19pbml0YCBib290LXRpbWUgcGFyYW1ldGVyIHBhcnNpbmcgZnVuY3Rpb24gYHJlc2VydmVfbWVtKClgLCB3aGljaCBpcyBleGVjdXRlZCBkdXJpbmcgZWFybHkga2VybmVsIGJvb3QgKHZpYSBgX19zZXR1cGApIGFuZCBkaXNjYXJkZWQgYmVmb3JlIHVzZXJzcGFjZS9mdXp6ZXIgZXhlY3V0aW9uLiBJdCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjMzLCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTQ6NTY6MDQuNDY5MDA4MDA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBkb2N1bWVudGF0aW9uIGFuZCBtb2RpZmllcyB0aGUgYF9faW5pdGAgZWFybHkgYm9vdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIGhhbmRsZXIgYHJlc2VydmVfbWVtKClgIGluIG1tL21lbWJsb2NrLmMuIFRoaXMgY29kZSBleGVjdXRlcyBleGNsdXNpdmVseSBkdXJpbmcgZWFybHkgYm9vdCBwYXJhbWV0ZXIgc2V0dXAgYW5kIGlzIGZyZWVkIHByaW9yIHRvIHVzZXJzcGFjZSBleGVjdXRpb24sIG1ha2luZyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHJ1bnRpbWUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgZG9jdW1lbnRhdGlvbiBhbmQgbW9kaWZpZXMgdGhlIGBfX2luaXRgIGVhcmx5IGJvb3QgY29tbWFuZC1saW5lIHBhcmFtZXRlciBoYW5kbGVyIGByZXNlcnZlX21lbSgpYCBpbiBtbS9tZW1ibG9jay5jLiBUaGlzIGNvZGUgZXhlY3V0ZXMgZXhjbHVzaXZlbHkgZHVyaW5nIGVhcmx5IGJvb3QgcGFyYW1ldGVyIHNldHVwIGFuZCBpcyBmcmVlZCBwcmlvciB0byB1c2Vyc3BhY2UgZXhlY3V0aW9uLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBydW50aW1lIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNDo1NjowNC40NjkwMzQ0OTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg5p4[1] Phase: Running StartedAt: 2026-09-06 14:56:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg5p4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 14:56:15 +0000 UTC FinishedAt: 2026-09-06 14:56:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}