Name: series-workflow4gqgq Phase: Running StartedAt: 2026-06-29 13:02:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4gqgq[0] Phase: Running StartedAt: 2026-06-29 13:02:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4gqgq[0].run-triage Phase: Running StartedAt: 2026-06-29 13:02:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4gqgq[0].run-triage(0) Phase: Running StartedAt: 2026-06-29 13:02:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "SAMPLES_RUST", "SAMPLE_RUST_DMA", "SAMPLE_RUST_DRIVER_I2C", "SAMPLE_RUST_I2C_CLIENT", "SAMPLE_RUST_DRIVER_PCI", "SAMPLE_RUST_DRIVER_PLATFORM", "SAMPLE_RUST_DRIVER_USB", "SAMPLE_RUST_DRIVER_AUXILIARY", "SAMPLE_RUST_SOC", "DRM_NOVA", "DRM_TYR", "NOVA_CORE", "PWM_TH1520", "CPUFREQ_DT_RUST", "AX88796B_RUST_PHY", "AMCC_QT2025_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "SAMPLES_RUST", "SAMPLE_RUST_DMA", "SAMPLE_RUST_DRIVER_I2C", "SAMPLE_RUST_I2C_CLIENT", "SAMPLE_RUST_DRIVER_PCI", "SAMPLE_RUST_DRIVER_PLATFORM", "SAMPLE_RUST_DRIVER_USB", "SAMPLE_RUST_DRIVER_AUXILIARY", "SAMPLE_RUST_SOC", "DRM_NOVA", "DRM_TYR", "NOVA_CORE", "PWM_TH1520", "CPUFREQ_DT_RUST", "AX88796B_RUST_PHY", "AMCC_QT2025_PHY" ], "series_id": "ac75a50e-f97a-47ca-b75c-690a25c5b7bd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JVU1QmIzM0OywKICAgICYjMzQ7U0FNUExFU19SVVNUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RNQSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfSTJDJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0kyQ19DTElFTlQmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX1BDSSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX1VTQiYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX1NPQyYjMzQ7LAogICAgJiMzNDtEUk1fTk9WQSYjMzQ7LAogICAgJiMzNDtEUk1fVFlSJiMzNDssCiAgICAmIzM0O05PVkFfQ09SRSYjMzQ7LAogICAgJiMzNDtQV01fVEgxNTIwJiMzNDssCiAgICAmIzM0O0NQVUZSRVFfRFRfUlVTVCYjMzQ7LAogICAgJiMzNDtBWDg4Nzk2Ql9SVVNUX1BIWSYjMzQ7LAogICAgJiMzNDtBTUNDX1FUMjAyNV9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSdXN0IGFic3RyYWN0aW9ucyBmb3IgZGV2aWNlIGRyaXZlcnMgKFBDSSwgVVNCLCBQbGF0Zm9ybSwgSTJDLCBBdXhpbGlhcnksIEFDUEksIE9GKSwgY2hhbmdpbmcgaG93IGRldmljZSBJRCB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhbmQgaG93IG1hdGNoIGRhdGEgaXMgcmV0cmlldmVkIGR1cmluZyBkcml2ZXIgcHJvYmUuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSBSdXN0IGRyaXZlcnMgY2FuIHN0aWxsIHByb2JlIHN1Y2Nlc3NmdWxseSBhbmQgcmVjZWl2ZSBjb3JyZWN0IG1hdGNoIGRhdGEuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZjNjYzlhNWE4NjQ3NTFlYTQzOTNiZWY2YzNlODQ4NmY0OGIxYTZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6MTM6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xuaW5kZXggMTUwMTFmNTc1MmE5OTQuLjA3MjQwZTBiNzQ1MTgwIDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtMjk3LDcgJiM0MzsyOTcsNiBAQCBGOlx0aW5jbHVkZS9saW51eC9hY3BpLmhcbiBGOlx0aW5jbHVkZS9saW51eC9md25vZGUuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L2Z3X3RhYmxlLmhcbiBGOlx0bGliL2Z3X3RhYmxlLmNcbi1GOlx0cnVzdC9oZWxwZXJzL2FjcGkuY1xuIEY6XHRydXN0L2tlcm5lbC9hY3BpLnJzXG4gRjpcdHRvb2xzL3Bvd2VyL2FjcGkvXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2J1cy5jIGIvZHJpdmVycy9hY3BpL2J1cy5jXG5pbmRleCBhMzBhOTA0ZjY1MzVmNC4uMWZiMGIxMGJmOTI0NzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2FjcGkvYnVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYWNwaS9idXMuY1xuQEAgLTg5OCw5ICYjNDM7ODk4LDkgQEAgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2NvbXBhbmlvbl9tYXRjaChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gICogaWRlbnRpZmllcnMgYW5kIGEgX0RTRCBvYmplY3Qgd2l0aCB0aGUgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OyBwcm9wZXJ0eSwgdXNlIHRoYXRcbiAgKiBwcm9wZXJ0eSB0byBtYXRjaCBhZ2FpbnN0IHRoZSBnaXZlbiBsaXN0IG9mIGlkZW50aWZpZXJzLlxuICAqL1xuLWJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxuLVx0XHRcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4tXHRcdFx0ICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICoqb2ZfaWQpXG4mIzQzO3N0YXRpYyBib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbiYjNDM7XHRcdFx0XHQgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4mIzQzO1x0XHRcdFx0IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKipvZl9pZClcbiB7XG4gXHRjb25zdCB1bmlvbiBhY3BpX29iamVjdCAqb2ZfY29tcGF0aWJsZSwgKm9iajtcbiBcdGludCBpLCBudmFsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycyBiL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yc1xuaW5kZXggMTAxMDZmYTEzMDk1ZTQuLjE0NWRhYTEyMDcyZjQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnNcbkBAIC0xOTQsNyAmIzQzOzE5NCw2IEBAIGZuIHJlZ2lzdGVyX2VtKHBvbGljeTogXHUwMDI2bXV0IGNwdWZyZXE6OlBvbGljeSkge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjQ1BVRnJlcURURHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7b3BlcmF0aW5nLXBvaW50cy12MlwmIzM0OyksICgpKV1cbiApO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3ZhL2RyaXZlci5ycyBiL2RyaXZlcnMvZ3B1L2RybS9ub3ZhL2RyaXZlci5yc1xuaW5kZXggNDg5MzNkODZkZGRhOWIuLjQzZjE1Y2RmZWIwOWIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdmEvZHJpdmVyLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnNcbkBAIC00Myw3ICYjNDM7NDMsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhRGF0YSB7XG4gXG4ga2VybmVsOjphdXhpbGlhcnlfZGV2aWNlX3RhYmxlIShcbiAgICAgQVVYX1RBQkxFLFxuLSAgICBNT0RVTEVfQVVYX1RBQkxFLFxuICAgICBcdTAwM2NOb3ZhRHJpdmVyIGFzIGF1eGlsaWFyeTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoXG4gICAgICAgICBhdXhpbGlhcnk6OkRldmljZUlkOjpuZXcoTk9WQV9DT1JFX01PRFVMRV9OQU1FLCBBVVhJTElBUllfTkFNRSksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5yc1xuaW5kZXggZDA2M2JjNjY0Y2MxMTcuLjIxOGU5YWY4OTljN2M3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzXG5AQCAtODcsNyAmIzQzOzg3LDYgQEAgZm4gaXNzdWVfc29mdF9yZXNldChkZXY6IFx1MDAyNkRldmljZSwgaW9tZW06IFx1MDAyNklvTWVtXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIFJlc3VsdCB7XG4gXG4ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKFxuICAgICBPRl9UQUJMRSxcbi0gICAgTU9EVUxFX09GX1RBQkxFLFxuICAgICBcdTAwM2NUeXJQbGF0Zm9ybURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFtcbiAgICAgICAgIChvZjo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7cm9ja2NoaXAscmszNTg4LW1hbGlcJiMzNDspLCAoKSksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNcbmluZGV4IDU3MzhkNGFjNTIxYjcyLi4wYzUzYjcyMzlhYzllOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNcbkBAIC00MCw3ICYjNDM7NDAsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhQ29yZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2Uge1xuIFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXG4gICAgIFBDSV9UQUJMRSxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcbiAgICAgXHUwMDNjTm92YUNvcmVEcml2ZXIgYXMgcGNpOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgW1xuICAgICAgICAgLy8gTW9kZXJuIE5WSURJQSBHUFVzIHdpbGwgc2hvdyB1cCBhcyBlaXRoZXIgVkdBIG9yIDNEIGNvbnRyb2xsZXJzLlxuQEAgLTcwLDcgJiM0Mzs2OSw3IEBAIGltcGwgcGNpOjpEcml2ZXIgZm9yIE5vdmFDb3JlRHJpdmVyIHtcbiBcbiAgICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuICAgICAgICAgcGRldjogXHUwMDI2JiMzOTtib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tICAgICAgICBfaW5mbzogXHUwMDI2JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sXG4mIzQzOyAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvXHUwMDNlLFxuICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZjo6RGF0YVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UsIEVycm9yXHUwMDNlICYjNDM7ICYjMzk7Ym91bmQge1xuICAgICAgICAgcGluX2luaXQ6OnBpbl9pbml0X3Njb3BlKG1vdmUgfHwge1xuICAgICAgICAgICAgIGRldl9kYmchKHBkZXYsIFwmIzM0O1Byb2JlIE5vdmEgQ29yZSBHUFUgZHJpdmVyLlxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbmluZGV4IDNlM2ZhNTFjY2VmOTExLi4xZGY3NTIzMzBlOGZkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbkBAIC0zMDMsNyAmIzQzOzMwMyw2IEBAIGZuIGRyb3Aoc2VsZjogUGluXHUwMDNjXHUwMDI2bXV0IFNlbGZcdTAwM2UpIHtcbiBcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gICAgIE9GX1RBQkxFLFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXG4gICAgIFx1MDAzY1RoMTUyMFB3bVBsYXRmb3JtRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7dGhlYWQsdGgxNTIwLXB3bVwmIzM0OyksICgpKV1cbiApO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oIGIvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmhcbmluZGV4IDcxNGQxMTFkODA1MzBmLi43ZTU3Zjk2OThmN2NlZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaFxuQEAgLTE4OSwxMCAmIzQzOzE4OSw2IEBAIHN0cnVjdCBhY3BpX2RyaXZlciB7XG4gICogLS0tLS0tLS0tLS1cbiAgKi9cbiBcbi1ib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi1cdFx0XHQgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX21hdGNoX3RhYmxlLFxuLVx0XHRcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKTtcbi1cbiAvKiBTdGF0dXMgKF9TVEEpICovXG4gXG4gc3RydWN0IGFjcGlfZGV2aWNlX3N0YXR1cyB7XG5AQCAtMTAwMCwxMyAmIzQzOzk5Niw2IEBAIGludCBhY3BpX3NjYW5fYWRkX2RlcChhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3BpX2hhbmRsZV9saXN0ICpkZXBfZGV2aWNlcyk7XG4gdTMyIGFyY2hfYWNwaV9hZGRfYXV0b19kZXAoYWNwaV9oYW5kbGUgaGFuZGxlKTtcbiAjZWxzZVx0LyogQ09ORklHX0FDUEkgKi9cbiBcbi1zdGF0aWMgaW5saW5lIGJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxuLVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSxcbi1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKVxuLXtcbi1cdHJldHVybiBmYWxzZTtcbi19XG4tXG4gc3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfYWNwaV9idXNfdHlwZSh2b2lkICpidXMpIHsgcmV0dXJuIDA7IH1cbiBzdGF0aWMgaW5saW5lIGludCB1bnJlZ2lzdGVyX2FjcGlfYnVzX3R5cGUodm9pZCAqYnVzKSB7IHJldHVybiAwOyB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9oZWxwZXJzL2FjcGkuYyBiL3J1c3QvaGVscGVycy9hY3BpLmNcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZTc1Yzk4MDdiYmFkY2MuLjAwMDAwMDAwMDAwMDAwXG4tLS0gYS9ydXN0L2hlbHBlcnMvYWNwaS5jXG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSwxNiAmIzQzOzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYWNwaS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYWNwaS9hY3BpX2J1cy5oXHUwMDNlXG4tXG4tX19ydXN0X2hlbHBlciBib29sIHJ1c3RfaGVscGVyX2FjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi1cdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4tXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKipvZl9pZClcbi17XG4tXHRyZXR1cm4gYWNwaV9vZl9tYXRjaF9kZXZpY2UoYWRldiwgb2ZfbWF0Y2hfdGFibGUsIG9mX2lkKTtcbi19XG4tXG4tX19ydXN0X2hlbHBlciBzdHJ1Y3QgYWNwaV9kZXZpY2UgKnJ1c3RfaGVscGVyX3RvX2FjcGlfZGV2aWNlX25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbi17XG4tXHRyZXR1cm4gdG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpO1xuLX1cbmRpZmYgLS1naXQgYS9ydXN0L2hlbHBlcnMvaGVscGVycy5jIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuaW5kZXggOTk4ZTMxMDUyZTY2MDEuLmZhZGQ3YWNkZDgxYzkzIDEwMDY0NFxuLS0tIGEvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuQEAgLTM4LDcgJiM0MzszOCw2IEBAXG4gI2RlZmluZSBfX3J1c3RfaGVscGVyIF9fYWx3YXlzX2lubGluZVxuICNlbmRpZlxuIFxuLSNpbmNsdWRlIFwmIzM0O2FjcGkuY1wmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2F0b21pYy5jXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7YXRvbWljX2V4dC5jXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7YXV4aWxpYXJ5LmNcJiMzNDtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hY3BpLnJzIGIvcnVzdC9rZXJuZWwvYWNwaS5yc1xuaW5kZXggOWI4ZWZhNjIzMTMwYzEuLmVhMmNlNjFlZTM5MzFmIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWNwaS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYWNwaS5yc1xuQEAgLTI1LDEwICYjNDM7MjUsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xuIC8vIFNBRkVUWTogYERSSVZFUl9EQVRBX09GRlNFVGAgaXMgdGhlIG9mZnNldCB0byB0aGUgYGRyaXZlcl9kYXRhYCBmaWVsZC5cbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OmFjcGlfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7XG4tXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXG4tICAgIH1cbiB9XG4gXG4gaW1wbCBEZXZpY2VJZCB7XG5AQCAtNTMsMTMgJiM0Mzs0OSw3IEBAIHB1YiBjb25zdCBmbiBuZXcoaWQ6IFx1MDAyNiYjMzk7c3RhdGljIENTdHIpIC1cdTAwM2UgU2VsZiB7XG4gLy8vIENyZWF0ZSBhbiBBQ1BJIGBJZFRhYmxlYCB3aXRoIGFuIFwmIzM0O2FsaWFzXCYjMzQ7IGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBhY3BpX2RldmljZV90YWJsZSB7XG4tICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID1cdTAwM2Uge1xuLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjXG4tICAgICAgICAgICAgJGNyYXRlOjphY3BpOjpEZXZpY2VJZCxcbi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLFxuLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSxcbi0gICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpO1xuLVxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcJiMzNDthY3BpXCYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcbiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwmIzM0O2FjcGlcJiMzNDssICRjcmF0ZTo6YWNwaTo6RGV2aWNlSWQsICQoJHR0KSopO1xuICAgICB9O1xuIH1cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbmluZGV4IGM0MjkyOGQ1YTIzOTNmLi5hYTEzZDg4NjZhMTk2NCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG5AQCAtOTMsNyAmIzQzOzkzLDkgQEAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soXG4gICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KWBdIHdyYXBwZXIgb2YgYHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkYFxuICAgICAgICAgLy8gYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0JiMzOTtzIHNhZmUgdG8gdHJhbnNtdXRlLlxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KmlkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbi0gICAgICAgIGxldCBpbmZvID0gVDo6SURfVEFCTEUuaW5mbyhpZC5pbmRleCgpKTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYFQ6OklEX1RBQkxFYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XHUwMDNjXywgVDo6SWRJbmZvXHUwMDNlYC5cbiYjNDM7ICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkOjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9O1xuIFxuICAgICAgICAgZnJvbV9yZXN1bHQofHwge1xuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUoYWRldiwgaW5mbyk7XG5AQCAtMTY5LDEwICYjNDM7MTcxLDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPVxuICAgICAgICAgY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjphdXhpbGlhcnlfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7XG4tXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXG4tICAgIH1cbiB9XG4gXG4gLy8vIElkVGFibGUgdHlwZSBmb3IgYXV4aWxpYXJ5IGRyaXZlcnMuXG5AQCAtMTgxLDE0ICYjNDM7MTc5LDggQEAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4gLy8vIENyZWF0ZSBhIGF1eGlsaWFyeSBgSWRUYWJsZWAgd2l0aCBpdHMgYWxpYXMgZm9yIG1vZHBvc3QuXG4gI1ttYWNyb19leHBvcnRdXG4gbWFjcm9fcnVsZXMhIGF1eGlsaWFyeV9kZXZpY2VfdGFibGUge1xuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XHUwMDNlIHtcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzY1xuLSAgICAgICAgICAgICRjcmF0ZTo6YXV4aWxpYXJ5OjpEZXZpY2VJZCxcbi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLFxuLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSxcbi0gICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpO1xuLVxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcJiMzNDthdXhpbGlhcnlcJiMzNDssICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xuJiM0MzsgICAgKCQoJHR0OnR0KSopID1cdTAwM2Uge1xuJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7YXV4aWxpYXJ5XCYjMzQ7LCAkY3JhdGU6OmF1eGlsaWFyeTo6RGV2aWNlSWQsICQoJHR0KSopO1xuICAgICB9O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnNcbmluZGV4IDhlOTcyMTQ0NjAxNDZlLi41ZjRkMTkxZmNlNTE1YSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZV9pZC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzXG5AQCAtNSw3ICYjNDM7NSwxMCBAQFxuIC8vISBFYWNoIGJ1cyAvIHN1YnN5c3RlbSB0aGF0IG1hdGNoZXMgZGV2aWNlIGFuZCBkcml2ZXIgdGhyb3VnaCBhIGJ1cyAvIHN1YnN5c3RlbSBzcGVjaWZpYyBJRCBpc1xuIC8vISBleHBlY3RlZCB0byBpbXBsZW1lbnQgW2BSYXdEZXZpY2VJZGBdLlxuIFxuLXVzZSBjb3JlOjptZW06Ok1heWJlVW5pbml0O1xuJiM0Mzt1c2UgY29yZTo6e1xuJiM0MzsgICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbiYjNDM7ICAgIG1lbTo6TWF5YmVVbmluaXQsIC8vXG4mIzQzO307XG4gXG4gLy8vIE1hcmtlciB0cmFpdCB0byBpbmRpY2F0ZSBhIFJ1c3QgZGV2aWNlIElEIHR5cGUgcmVwcmVzZW50cyBhIGNvcnJlc3BvbmRpbmcgQyBkZXZpY2UgSUQgdHlwZS5cbiAvLy9cbkBAIC00NywxMTIgJiM0Mzs1MCwxMTAgQEAgcHViIHVuc2FmZSB0cmFpdCBSYXdEZXZpY2VJZEluZGV4OiBSYXdEZXZpY2VJZCB7XG4gICAgIC8vLyBUaGUgb2Zmc2V0IChpbiBieXRlcykgdG8gdGhlIGNvbnRleHQvZGF0YSBmaWVsZCBpbiB0aGUgcmF3IGRldmljZSBJRC5cbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZTtcbiBcbi0gICAgLy8vIFRoZSBpbmRleCBzdG9yZWQgYXQgYERSSVZFUl9EQVRBX09GRlNFVGAgb2YgdGhlIGltcGxlbWVudG9yIG9mIHRoZSBbYFJhd0RldmljZUlkSW5kZXhgXVxuLSAgICAvLy8gdHJhaXQuXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemU7XG4tfVxuLVxuLS8vLyBBIHplcm8tdGVybWluYXRlZCBkZXZpY2UgaWQgYXJyYXkuXG4tI1tyZXByKEMpXVxuLXB1YiBzdHJ1Y3QgUmF3SWRBcnJheVx1MDAzY1Q6IFJhd0RldmljZUlkLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSB7XG4tICAgIGlkczogW1Q6OlJhd1R5cGU7IE5dLFxuLSAgICBzZW50aW5lbDogTWF5YmVVbmluaXRcdTAwM2NUOjpSYXdUeXBlXHUwMDNlLFxuLX1cbiYjNDM7ICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyAjIFNhZmV0eVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gYFx1MDAyNlNlbGZgIG11c3QgYmUgc3RvcmVkIGluc2lkZSBhIGBJZEFycmF5XHUwMDNjU2VsZiwgVVx1MDAzZWAuXG4mIzQzOyAgICB1bnNhZmUgZm4gaW5mb191bmNoZWNrZWRcdTAwM2NVXHUwMDNlKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2JiMzOTtzdGF0aWMgVSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhlIHRyYWl0LCB0aGlzIGlzIGBzZWxmLmRyaXZlcl9kYXRhIGFzICpjb25zdCBVYCBhbmQgYnlcbiYjNDM7ICAgICAgICAvLyB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSBmdW5jdGlvbiwgdGhpcyBpcyBzdG9yZWQgaW4gYElkQXJyYXlcdTAwM2NTZWxmLCBVXHUwMDNlYCBzbyBpc1xuJiM0MzsgICAgICAgIC8vIGNvbnZlcnRpYmxlIHRvIGBcdTAwMjYmIzM5O3N0YXRpYyBVYC5cbiYjNDM7ICAgICAgICB1bnNhZmUge1xuJiM0MzsgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHNlbGYpXG4mIzQzOyAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoU2VsZjo6RFJJVkVSX0RBVEFfT0ZGU0VUKVxuJiM0MzsgICAgICAgICAgICAgICAgLmNhc3Q6Olx1MDAzY1x1MDAyNlVcdTAwM2UoKVxuJiM0MzsgICAgICAgICAgICAgICAgLnJlYWQoKVxuJiM0MzsgICAgICAgIH1cbiYjNDM7ICAgIH1cbiBcbi1pbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQsIGNvbnN0IE46IHVzaXplXHUwMDNlIFJhd0lkQXJyYXlcdTAwM2NULCBOXHUwMDNlIHtcbi0gICAgI1tkb2MoaGlkZGVuKV1cbi0gICAgcHViIGNvbnN0IGZuIHNpemUoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4tICAgICAgICBjb3JlOjptZW06OnNpemVfb2Y6Olx1MDAzY1NlbGZcdTAwM2UoKVxuJiM0MzsgICAgLy8vIE9idGFpbiB0aGUgZGF0YSBwb2ludGVyIHN0b3JlZCBpbnNpZGUgdGhlIGRldmljZSBJRC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vICMgU2FmZXR5XG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBgXHUwMDI2U2VsZmAgbXVzdCBiZSBzdG9yZWQgaW5zaWRlIGEgYElkQXJyYXlcdTAwM2NTZWxmLCBVXHUwMDNlYCwgb3IgaGFzIE5VTEwgKG9yIDApIGFzIGRyaXZlciBkYXRhLlxuJiM0MzsgICAgdW5zYWZlIGZuIGluZm9fdW5jaGVja2VkX29wdFx1MDAzY1VcdTAwM2UoXHUwMDI2c2VsZikgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O3N0YXRpYyBVXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgdHJhaXQsIHRoaXMgaXMgYHNlbGYuZHJpdmVyX2RhdGEgYXMgKmNvbnN0IFVgIGFuZCBieVxuJiM0MzsgICAgICAgIC8vIHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhlIGZ1bmN0aW9uLCBpZiB0aGlzIGlzIHN0b3JlZCBpbiBgSWRBcnJheVx1MDAzY1NlbGYsIFVcdTAwM2VgLCB0aGlzIGlzXG4mIzQzOyAgICAgICAgLy8gY29udmVydGlibGUgdG8gYE9wdGlvblx1MDAzY1x1MDAyNiYjMzk7c3RhdGljIFVcdTAwM2VgLiBPdGhlcndpc2UgaXQgaXMgTlVMTCB3aGljaCBpcyBgTm9uZWAgYXNcbiYjNDM7ICAgICAgICAvLyBgT3B0aW9uXHUwMDNjXHUwMDI2VVx1MDAzZWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHtcbiYjNDM7ICAgICAgICAgICAgY29yZTo6cHRyOjpmcm9tX3JlZihzZWxmKVxuJiM0MzsgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKFNlbGY6OkRSSVZFUl9EQVRBX09GRlNFVClcbiYjNDM7ICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2NPcHRpb25cdTAwM2NcdTAwMjZVXHUwMDNlXHUwMDNlKClcbiYjNDM7ICAgICAgICAgICAgICAgIC5yZWFkKClcbiYjNDM7ICAgICAgICB9XG4gICAgIH1cbiB9XG4gXG4gLy8vIEEgemVyby10ZXJtaW5hdGVkIGRldmljZSBpZCBhcnJheSwgZm9sbG93ZWQgYnkgY29udGV4dCBkYXRhLlxuICNbcmVwcihDKV1cbi1wdWIgc3RydWN0IElkQXJyYXlcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVSwgY29uc3QgTjogdXNpemVcdTAwM2Uge1xuLSAgICByYXdfaWRzOiBSYXdJZEFycmF5XHUwMDNjVCwgTlx1MDAzZSxcbi0gICAgaWRfaW5mb3M6IFtVOyBOXSxcbiYjNDM7cHViIHN0cnVjdCBJZEFycmF5XHUwMDNjVDogUmF3RGV2aWNlSWQsIFU6ICYjMzk7c3RhdGljLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSB7XG4mIzQzOyAgICAvLyBUaGlzIGlzIGBNYXliZVVuaW5pdFx1MDAzY1Q6OlJhd1R5cGVcdTAwM2VgIHNvIGFueSBieXRlcyBpbnNpZGUgaXQgY2FuIGNhcnJ5IHByb3ZlbmFuY2UgaW4gQ1RGRS5cbiYjNDM7ICAgIC8vIElmIHRoaXMgd2VyZSBgVDo6UmF3VHlwZWAsIGludGVnZXIgZmllbGRzIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGNvbnRhaW4gcG9pbnRlcnMuXG4mIzQzOyAgICBpZHM6IFtNYXliZVVuaW5pdFx1MDAzY1Q6OlJhd1R5cGVcdTAwM2U7IE5dLFxuJiM0MzsgICAgc2VudGluZWw6IE1heWJlVW5pbml0XHUwMDNjVDo6UmF3VHlwZVx1MDAzZSxcbiYjNDM7ICAgIHBoYW50b206IFBoYW50b21EYXRhXHUwMDNjXHUwMDI2JiMzOTtzdGF0aWMgVVx1MDAzZSxcbiB9XG4gXG4taW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBJZEFycmF5XHUwMDNjVCwgVSwgTlx1MDAzZSB7XG4mIzQzOy8vIFNBRkVUWTogZGV2aWNlIElEIGlzIHBsYWluIGRhdGEgcGx1cyBhIGBcdTAwMjYmIzM5O3N0YXRpYyBVYCBhbmQgY2FuIHRodXMgYmUgc2VudCBiZXR3ZWVuIHRocmVhZHMgc2FmZWx5XG4mIzQzOy8vIGlmIGBcdTAwMjZVYCBjYW4uXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQsIFU6IFN5bmMgJiM0MzsgJiMzOTtzdGF0aWMsIGNvbnN0IE46IHVzaXplXHUwMDNlIFNlbmQgZm9yIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHt9XG4mIzQzO1xuJiM0MzsvLyBTQUZFVFk6IGRldmljZSBJRCBpcyBwbGFpbiBkYXRhIHBsdXMgYSBgXHUwMDI2JiMzOTtzdGF0aWMgVWAgYW5kIGNhbiB0aHVzIGJlIHNoYXJlZCBiZXR3ZWVuIHRocmVhZHMgc2FmZWx5XG4mIzQzOy8vIGlmIGBcdTAwMjZVYCBjYW4uXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQsIFU6IFN5bmMgJiM0MzsgJiMzOTtzdGF0aWMsIGNvbnN0IE46IHVzaXplXHUwMDNlIFN5bmMgZm9yIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQgJiM0MzsgUmF3RGV2aWNlSWRJbmRleCwgVTogJiMzOTtzdGF0aWMsIGNvbnN0IE46IHVzaXplXHUwMDNlIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHtcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGFycmF5LlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBjb250ZW50cyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBpZGVudGlmaWVycyBhbmQgY29udGV4dCBpbmZvcm1hdGlvbi5cbi0gICAgLy8vXG4tICAgIC8vLyAjIFNhZmV0eVxuLSAgICAvLy9cbi0gICAgLy8vIGBkYXRhX29mZnNldGAgYXMgYE5vbmVgIGlzIGFsd2F5cyBzYWZlLlxuLSAgICAvLy8gSWYgYGRhdGFfb2Zmc2V0YCBpcyBgU29tZShkYXRhX29mZnNldClgLCB0aGVuOlxuLSAgICAvLy8gLSBgZGF0YV9vZmZzZXRgIG11c3QgYmUgdGhlIGNvcnJlY3Qgb2Zmc2V0IChpbiBieXRlcykgdG8gdGhlIGNvbnRleHQvZGF0YSBmaWVsZFxuLSAgICAvLy8gICAoZS5nLiwgdGhlIGBkcml2ZXJfZGF0YWAgZmllbGQpIHdpdGhpbiB0aGUgcmF3IGRldmljZSBJRCBzdHJ1Y3R1cmUuXG4tICAgIC8vLyAtIFRoZSBmaWVsZCBhdCBgZGF0YV9vZmZzZXRgIG11c3QgYmUgY29ycmVjdGx5IHNpemVkIHRvIGhvbGQgYSBgdXNpemVgLlxuLSAgICBjb25zdCB1bnNhZmUgZm4gYnVpbGQoaWRzOiBbKFQsIFUpOyBOXSwgZGF0YV9vZmZzZXQ6IE9wdGlvblx1MDAzY3VzaXplXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuJiM0MzsgICAgcHViIGNvbnN0IGZuIG5ldyhpZHM6IFsoVCwgXHUwMDI2JiMzOTtzdGF0aWMgVSk7IE5dKSAtXHUwMDNlIFNlbGYge1xuICAgICAgICAgbGV0IG11dCByYXdfaWRzID0gW2NvbnN0IHsgTWF5YmVVbmluaXQ6Olx1MDAzY1Q6OlJhd1R5cGVcdTAwM2U6OnVuaW5pdCgpIH07IE5dO1xuLSAgICAgICAgbGV0IG11dCBpbmZvcyA9IFtjb25zdCB7IE1heWJlVW5pbml0Ojp1bmluaXQoKSB9OyBOXTtcbiBcbiAgICAgICAgIGxldCBtdXQgaSA9IDB1c2l6ZTtcbiAgICAgICAgIHdoaWxlIGkgXHUwMDNjIE4ge1xuICAgICAgICAgICAgIC8vIFNBRkVUWTogYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiBgUmF3RGV2aWNlSWRgLCB3ZSYjMzk7cmUgZ3VhcmFudGVlZCB0aGF0IGBUYCBpc1xuICAgICAgICAgICAgIC8vIGxheW91dC13aXNlIGNvbXBhdGlibGUgd2l0aCBgUmF3VHlwZWAuXG4gICAgICAgICAgICAgcmF3X2lkc1tpXSA9IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXHUwMDI2aWRzW2ldLjApIH07XG4tICAgICAgICAgICAgaWYgbGV0IFNvbWUoZGF0YV9vZmZzZXQpID0gZGF0YV9vZmZzZXQge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhpcyBmdW5jdGlvbiwgdGhpcyB3b3VsZCBiZSBlZmZlY3RpdmVseVxuLSAgICAgICAgICAgICAgICAvLyBgcmF3X2lkc1tpXS5kcml2ZXJfZGF0YSA9IGk7YC5cbi0gICAgICAgICAgICAgICAgdW5zYWZlIHtcbi0gICAgICAgICAgICAgICAgICAgIHJhd19pZHNbaV1cbi0gICAgICAgICAgICAgICAgICAgICAgICAuYXNfbXV0X3B0cigpXG4tICAgICAgICAgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKGRhdGFfb2Zmc2V0KVxuLSAgICAgICAgICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2N1c2l6ZVx1MDAzZSgpXG4tICAgICAgICAgICAgICAgICAgICAgICAgLndyaXRlKGkpO1xuLSAgICAgICAgICAgICAgICB9XG4mIzQzOyAgICAgICAgICAgIC8vIFNBRkVUWTogYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiBgUmF3RGV2aWNlSWRJbmRleGAsIHRoaXMgd291bGQgYmUgZWZmZWN0aXZlbHlcbiYjNDM7ICAgICAgICAgICAgLy8gYHJhd19pZHNbaV0uZHJpdmVyX2RhdGEgPSBpZHNbaV0uMTtgLlxuJiM0MzsgICAgICAgICAgICB1bnNhZmUge1xuJiM0MzsgICAgICAgICAgICAgICAgcmF3X2lkc1tpXVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIC5hc19tdXRfcHRyKClcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoVDo6RFJJVkVSX0RBVEFfT0ZGU0VUKVxuJiM0MzsgICAgICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2NcdTAwMjZVXHUwMDNlKClcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAud3JpdGUoaWRzW2ldLjEpO1xuICAgICAgICAgICAgIH1cbiBcbi0gICAgICAgICAgICAvLyBTQUZFVFk6IHRoaXMgaXMgZWZmZWN0aXZlbHkgYSBtb3ZlOiBgaW5mb3NbaV0gPSBpZHNbaV0uMWAuIFdlIG1ha2UgYSBjb3B5IGhlcmUgYnV0XG4tICAgICAgICAgICAgLy8gbGF0ZXIgZm9yZ2V0IGBpZHNgLlxuLSAgICAgICAgICAgIGluZm9zW2ldID0gTWF5YmVVbmluaXQ6Om5ldyh1bnNhZmUgeyBjb3JlOjpwdHI6OnJlYWQoXHUwMDI2aWRzW2ldLjEpIH0pO1xuICAgICAgICAgICAgIGkgJiM0Mzs9IDE7XG4gICAgICAgICB9XG4gXG4gICAgICAgICBjb3JlOjptZW06OmZvcmdldChpZHMpO1xuIFxuICAgICAgICAgU2VsZiB7XG4tICAgICAgICAgICAgcmF3X2lkczogUmF3SWRBcnJheSB7XG4tICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogdGhpcyBpcyBlZmZlY3RpdmVseSBgYXJyYXlfYXNzdW1lX2luaXRgLCB3aGljaCBpcyB1bnN0YWJsZSwgc28gd2UgdXNlXG4tICAgICAgICAgICAgICAgIC8vIGB0cmFuc211dGVfY29weWAgaW5zdGVhZC4gV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYHJhd19pZHNgIHNvIHRoaXNcbi0gICAgICAgICAgICAgICAgLy8gYGFycmF5X2Fzc3VtZV9pbml0YCBpcyBzYWZlLlxuLSAgICAgICAgICAgICAgICBpZHM6IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXHUwMDI2cmF3X2lkcykgfSxcbi0gICAgICAgICAgICAgICAgc2VudGluZWw6IE1heWJlVW5pbml0Ojp6ZXJvZWQoKSxcbi0gICAgICAgICAgICB9LFxuLSAgICAgICAgICAgIC8vIFNBRkVUWTogV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYGluZm9zYCBzbyB0aGlzIGBhcnJheV9hc3N1bWVfaW5pdGAgaXNcbi0gICAgICAgICAgICAvLyBzYWZlLlxuLSAgICAgICAgICAgIGlkX2luZm9zOiB1bnNhZmUgeyBjb3JlOjptZW06OnRyYW5zbXV0ZV9jb3B5KFx1MDAyNmluZm9zKSB9LFxuJiM0MzsgICAgICAgICAgICBpZHM6IHJhd19pZHMsXG4mIzQzOyAgICAgICAgICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdDo6emVyb2VkKCksXG4mIzQzOyAgICAgICAgICAgIHBoYW50b206IFBoYW50b21EYXRhLFxuICAgICAgICAgfVxuICAgICB9XG4mIzQzO31cbiBcbiYjNDM7aW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBJZEFycmF5XHUwMDNjVCwgKCksIE5cdTAwM2Uge1xuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXJyYXkgd2l0aG91dCB3cml0aW5nIGluZGV4IHZhbHVlcy5cbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY29udGVudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gaWRlbnRpZmllcnMgYW5kIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAgIC8vLyBJZiB0aGUgZGV2aWNlIGltcGxlbWVudHMgW2BSYXdEZXZpY2VJZEluZGV4YF0sIGNvbnNpZGVyIHVzaW5nIFtgSWRBcnJheTo6bmV3YF0gaW5zdGVhZC5cbi0gICAgcHViIGNvbnN0IGZuIG5ld193aXRob3V0X2luZGV4KGlkczogWyhULCBVKTsgTl0pIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICAvLyBTQUZFVFk6IENhbGxpbmcgYFNlbGY6OmJ1aWxkYCB3aXRoIGBvZmZzZXQgPSBOb25lYCBpcyBhbHdheXMgc2FmZSxcbi0gICAgICAgIC8vIGJlY2F1c2Ugbm8gcmF3IG1lbW9yeSB3cml0ZXMgYXJlIHBlcmZvcm1lZCBpbiB0aGlzIGNhc2UuXG4tICAgICAgICB1bnNhZmUgeyBTZWxmOjpidWlsZChpZHMsIE5vbmUpIH1cbi0gICAgfVxuLVxuLSAgICAvLy8gUmVmZXJlbmNlIHRvIHRoZSBjb250YWluZWQgW2BSYXdJZEFycmF5YF0uXG4tICAgIHB1YiBjb25zdCBmbiByYXdfaWRzKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2UmF3SWRBcnJheVx1MDAzY1QsIE5cdTAwM2Uge1xuLSAgICAgICAgXHUwMDI2c2VsZi5yYXdfaWRzXG4tICAgIH1cbi19XG4mIzQzOyAgICBwdWIgY29uc3QgZm4gbmV3X3dpdGhvdXRfaW5kZXgoaWRzOiBbVDsgTl0pIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgVGAgaXMgbGF5b3V0LXdpc2UgY29tcGF0aWJsZSB3aXRoIGBUOjpSYXdUeXBlYCwgc28gaXMgdGhlIGFycmF5IG9mIHRoZW0uXG4mIzQzOyAgICAgICAgbGV0IHJhd19pZHM6IFtNYXliZVVuaW5pdFx1MDAzY1Q6OlJhd1R5cGVcdTAwM2U7IE5dID0gdW5zYWZlIHsgY29yZTo6bWVtOjp0cmFuc211dGVfY29weShcdTAwMjZpZHMpIH07XG4mIzQzOyAgICAgICAgY29yZTo6bWVtOjpmb3JnZXQoaWRzKTtcbiBcbi1pbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQgJiM0MzsgUmF3RGV2aWNlSWRJbmRleCwgVSwgY29uc3QgTjogdXNpemVcdTAwM2UgSWRBcnJheVx1MDAzY1QsIFUsIE5cdTAwM2Uge1xuLSAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXJyYXkuXG4tICAgIC8vL1xuLSAgICAvLy8gVGhlIGNvbnRlbnRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGdpdmVuIGlkZW50aWZpZXJzIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uLlxuLSAgICBwdWIgY29uc3QgZm4gbmV3KGlkczogWyhULCBVKTsgTl0pIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkSW5kZXhgLFxuLSAgICAgICAgLy8gYFQ6OkRSSVZFUl9EQVRBX09GRlNFVGAgaXMgZ3VhcmFudGVlZCB0byBiZSB0aGUgY29ycmVjdCBvZmZzZXQgKGluIGJ5dGVzKSB0b1xuLSAgICAgICAgLy8gYSBmaWVsZCB3aXRoaW4gYFQ6OlJhd1R5cGVgLlxuLSAgICAgICAgdW5zYWZlIHsgU2VsZjo6YnVpbGQoaWRzLCBTb21lKFQ6OkRSSVZFUl9EQVRBX09GRlNFVCkpIH1cbiYjNDM7ICAgICAgICBTZWxmIHtcbiYjNDM7ICAgICAgICAgICAgaWRzOiByYXdfaWRzLFxuJiM0MzsgICAgICAgICAgICBzZW50aW5lbDogTWF5YmVVbmluaXQ6Onplcm9lZCgpLFxuJiM0MzsgICAgICAgICAgICBwaGFudG9tOiBQaGFudG9tRGF0YSxcbiYjNDM7ICAgICAgICB9XG4gICAgIH1cbiB9XG4gXG5AQCAtMTY1LDEyICYjNDM7MTY2LDYgQEAgaW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkICYjNDM7IFJhd0RldmljZUlkSW5kZXgsIFUsIGNvbnN0IE46IHVzaXplXHUwMDNlIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHtcbiBwdWIgdHJhaXQgSWRUYWJsZVx1MDAzY1Q6IFJhd0RldmljZUlkLCBVXHUwMDNlIHtcbiAgICAgLy8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgSUQgdGFibGUuXG4gICAgIGZuIGFzX3B0cihcdTAwMjZzZWxmKSAtXHUwMDNlICpjb25zdCBUOjpSYXdUeXBlO1xuLVxuLSAgICAvLy8gT2J0YWluIHRoZSBwb2ludGVyIHRvIHRoZSBidXMgc3BlY2lmaWMgZGV2aWNlIElEIGZyb20gYW4gaW5kZXguXG4tICAgIGZuIGlkKFx1MDAyNnNlbGYsIGluZGV4OiB1c2l6ZSkgLVx1MDAzZSBcdTAwMjZUOjpSYXdUeXBlO1xuLVxuLSAgICAvLy8gT2J0YWluIHRoZSBwb2ludGVyIHRvIHRoZSBkcml2ZXItc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSBhbiBpbmRleC5cbi0gICAgZm4gaW5mbyhcdTAwMjZzZWxmLCBpbmRleDogdXNpemUpIC1cdTAwM2UgXHUwMDI2VTtcbiB9XG4gXG4gaW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBJZFRhYmxlXHUwMDNjVCwgVVx1MDAzZSBmb3IgSWRBcnJheVx1MDAzY1QsIFUsIE5cdTAwM2Uge1xuQEAgLTE3OSwyOCAmIzQzOzE3NCw1NiBAQCBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqY29uc3QgVDo6UmF3VHlwZSB7XG4gICAgICAgICAvLyB0byBhY2Nlc3MgdGhlIHNlbnRpbmVsLlxuICAgICAgICAgY29yZTo6cHRyOjpmcm9tX3JlZihzZWxmKS5jYXN0KClcbiAgICAgfVxuLVxuLSAgICBmbiBpZChcdTAwMjZzZWxmLCBpbmRleDogdXNpemUpIC1cdTAwM2UgXHUwMDI2VDo6UmF3VHlwZSB7XG4tICAgICAgICBcdTAwMjZzZWxmLnJhd19pZHMuaWRzW2luZGV4XVxuLSAgICB9XG4tXG4tICAgIGZuIGluZm8oXHUwMDI2c2VsZiwgaW5kZXg6IHVzaXplKSAtXHUwMDNlIFx1MDAyNlUge1xuLSAgICAgICAgXHUwMDI2c2VsZi5pZF9pbmZvc1tpbmRleF1cbi0gICAgfVxuIH1cbiBcbiAvLy8gQ3JlYXRlIGRldmljZSB0YWJsZSBhbGlhcyBmb3IgbW9kcG9zdC5cbiAjW21hY3JvX2V4cG9ydF1cbiBtYWNyb19ydWxlcyEgbW9kdWxlX2RldmljZV90YWJsZSB7XG4tICAgICgkdGFibGVfdHlwZTogbGl0ZXJhbCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkdGFibGVfbmFtZTppZGVudCkgPVx1MDAzZSB7XG4tICAgICAgICAjW3J1c3RmbXQ6OnNraXBdXG4mIzQzOyAgICAoXG4mIzQzOyAgICAgICAgJHRhYmxlX3R5cGU6IGxpdGVyYWwsICRkZXZpY2VfaWRfdHk6IHR5LFxuJiM0MzsgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgJGlkX2luZm9fdHlwZTogdHksXG4mIzQzOyAgICAgICAgWyQoKCRpZDogZXhwciwgJGluZm86ZXhwciAkKCwpPykpLCogJCgsKT9dXG4mIzQzOyAgICApID1cdTAwM2Uge1xuJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXG4mIzQzOyAgICAgICAgICAgICR0YWJsZV90eXBlLCAkZGV2aWNlX2lkX3R5LCAkdGFibGVfbmFtZSwgJGlkX2luZm9fdHlwZSxcbiYjNDM7ICAgICAgICAgICAgeyQoJGlkPVx1MDAzZSRpbmZvLCkqfVxuJiM0MzsgICAgICAgICk7XG4mIzQzOyAgICB9O1xuJiM0MztcbiYjNDM7ICAgIChcbiYjNDM7ICAgICAgICAkdGFibGVfdHlwZTogbGl0ZXJhbCwgJGRldmljZV9pZF90eTogdHksXG4mIzQzOyAgICAgICAgJHRhYmxlX25hbWU6IGlkZW50LCAkaWRfaW5mb190eXBlOiB0eSxcbiYjNDM7ICAgICAgICB7JCgkaWQ6IGV4cHIgPVx1MDAzZSAkaW5mbzpleHByKSwqICQoLCk/fVxuJiM0MzsgICAgKSA9XHUwMDNlIHtcbiYjNDM7ICAgICAgICAjW2V4cG9ydF9uYW1lID1cbiYjNDM7ICAgICAgICAgICAgY29uY2F0IShcJiMzNDtfX21vZF9kZXZpY2VfdGFibGVfX1wmIzM0OywgOjpjb3JlOjpsaW5lISgpLFxuJiM0MzsgICAgICAgICAgICAgICAgICAgIFwmIzM0O19fa21vZF9cJiMzNDssIG1vZHVsZV9wYXRoISgpLFxuJiM0MzsgICAgICAgICAgICAgICAgICAgIFwmIzM0O19fXCYjMzQ7LCAkdGFibGVfdHlwZSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICBcJiMzNDtfX1wmIzM0Oywgc3RyaW5naWZ5ISgkdGFibGVfbmFtZSkpXG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgICAgIHN0YXRpYyAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2NcbiYjNDM7ICAgICAgICAgICAgJGRldmljZV9pZF90eSxcbiYjNDM7ICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbiYjNDM7ICAgICAgICAgICAgeyBcdTAwM2NbJGRldmljZV9pZF90eV1cdTAwM2U6OmxlbihcdTAwMjZbJCgkaWQsKSpdKSB9LFxuJiM0MzsgICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoWyQoKCRpZCwgXHUwMDI2JGluZm8pLCkqXSk7XG4mIzQzOyAgICB9O1xuJiM0MztcbiYjNDM7ICAgIC8vIENhc2UgZm9yIG5vIElEIGluZm8uXG4mIzQzOyAgICAoXG4mIzQzOyAgICAgICAgJHRhYmxlX3R5cGU6IGxpdGVyYWwsICRkZXZpY2VfaWRfdHk6IHR5LFxuJiM0MzsgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgQG5vbmUsXG4mIzQzOyAgICAgICAgWyQoJGlkOiBleHByKSwqICQoLCk/XVxuJiM0MzsgICAgKSA9XHUwMDNlIHtcbiAgICAgICAgICNbZXhwb3J0X25hbWUgPVxuLSAgICAgICAgICAgIGNvbmNhdCEoXCYjMzQ7X19tb2RfZGV2aWNlX3RhYmxlX19cJiMzNDssIGxpbmUhKCksXG4mIzQzOyAgICAgICAgICAgIGNvbmNhdCEoXCYjMzQ7X19tb2RfZGV2aWNlX3RhYmxlX19cJiMzNDssIDo6Y29yZTo6bGluZSEoKSxcbiAgICAgICAgICAgICAgICAgICAgIFwmIzM0O19fa21vZF9cJiMzNDssIG1vZHVsZV9wYXRoISgpLFxuICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7X19cJiMzNDssICR0YWJsZV90eXBlLFxuICAgICAgICAgICAgICAgICAgICAgXCYjMzQ7X19cJiMzNDssIHN0cmluZ2lmeSEoJHRhYmxlX25hbWUpKVxuICAgICAgICAgXVxuLSAgICAgICAgc3RhdGljICRtb2R1bGVfdGFibGVfbmFtZTogWzo6Y29yZTo6bWVtOjpNYXliZVVuaW5pdFx1MDAzY3U4XHUwMDNlOyAkdGFibGVfbmFtZS5yYXdfaWRzKCkuc2l6ZSgpXSA9XG4tICAgICAgICAgICAgdW5zYWZlIHsgOjpjb3JlOjptZW06OnRyYW5zbXV0ZV9jb3B5KCR0YWJsZV9uYW1lLnJhd19pZHMoKSkgfTtcbiYjNDM7ICAgICAgICBzdGF0aWMgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjXG4mIzQzOyAgICAgICAgICAgICRkZXZpY2VfaWRfdHksXG4mIzQzOyAgICAgICAgICAgICgpLFxuJiM0MzsgICAgICAgICAgICB7IFx1MDAzY1skZGV2aWNlX2lkX3R5XVx1MDAzZTo6bGVuKFx1MDAyNlskKCRpZCwpKl0pIH0sXG4mIzQzOyAgICAgICAgXHUwMDNlID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ld193aXRob3V0X2luZGV4KFskKCRpZCksKl0pO1xuICAgICB9O1xuIH1cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcml2ZXIucnMgYi9ydXN0L2tlcm5lbC9kcml2ZXIucnNcbmluZGV4IGJmNWJhMGQyNzU1M2VkLi5jOWM3NGM0ZGRlOGZhNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RyaXZlci5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJpdmVyLnJzXG5AQCAtMjkxLDI2ICYjNDM7MjkxLDYgQEAgZm4gaW5pdChcbiAgICAgfVxuIH1cbiBcbi0vLyBDYWxsaW5nIHRoZSBGRkkgZnVuY3Rpb24gZGlyZWN0bHkgZnJvbSB0aGUgYEFkYXB0ZXJgIGltcGwgbWF5IHJlc3VsdCBpbiBpdCBiZWluZyBjYWxsZWRcbi0vLyBkaXJlY3RseSBmcm9tIGRyaXZlciBtb2R1bGVzLiBUaGlzIGhhcHBlbnMgc2luY2UgdGhlIFJ1c3QgY29tcGlsZXIgd2lsbCB1c2UgbW9ub21vcnBoaXNhdGlvbiwgc29cbi0vLyBpdCBtaWdodCBoYXBwZW4gdGhhdCBmdW5jdGlvbnMgYXJlIGluc3RhbnRpYXRlZCB3aXRoaW4gdGhlIGNhbGxpbmcgZHJpdmVyIG1vZHVsZS4gRm9yIG5vdywgd29ya1xuLS8vIGFyb3VuZCB0aGlzIHdpdGggYCNbaW5saW5lKG5ldmVyKV1gIGhlbHBlcnMuXG4tLy9cbi0vLyBUT0RPOiBSZW1vdmUgb25jZSBhIG1vcmUgZ2VuZXJpYyBzb2x1dGlvbiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4gRm9yIGluc3RhbmNlLCB3ZSBtYXkgYmUgYWJsZSB0b1xuLS8vIGxldmVyYWdlIGBiaW5kZ2VuYCB0byB0YWtlIGNhcmUgb2YgdGhpcyBkZXBlbmRpbmcgb24gd2hldGhlciBhIHN5bWJvbCBpcyAoYWxyZWFkeSkgZXhwb3J0ZWQuXG4tI1tpbmxpbmUobmV2ZXIpXVxuLSNbYWxsb3coY2xpcHB5OjptaXNzaW5nX3NhZmV0eV9kb2MpXVxuLSNbYWxsb3coZGVhZF9jb2RlKV1cbi0jW211c3RfdXNlXVxuLXVuc2FmZSBmbiBhY3BpX29mX21hdGNoX2RldmljZShcbi0gICAgYWRldjogKmNvbnN0IGJpbmRpbmdzOjphY3BpX2RldmljZSxcbi0gICAgb2ZfbWF0Y2hfdGFibGU6ICpjb25zdCBiaW5kaW5nczo6b2ZfZGV2aWNlX2lkLFxuLSAgICBvZl9pZDogKm11dCAqY29uc3QgYmluZGluZ3M6Om9mX2RldmljZV9pZCxcbi0pIC1cdTAwM2UgYm9vbCB7XG4tICAgIC8vIFNBRkVUWTogU2FmZXR5IHJlcXVpcmVtZW50cyBhcmUgdGhlIHNhbWUgYXMgYGJpbmRpbmdzOjphY3BpX29mX21hdGNoX2RldmljZWAuXG4tICAgIHVuc2FmZSB7IGJpbmRpbmdzOjphY3BpX29mX21hdGNoX2RldmljZShhZGV2LCBvZl9tYXRjaF90YWJsZSwgb2ZfaWQpIH1cbi19XG4tXG4gLy8vIFRoZSBidXMgaW5kZXBlbmRlbnQgYWRhcHRlciB0byBtYXRjaCBhIGRyaXZlcnMgYW5kIGEgZGV2aWNlcy5cbiAvLy9cbiAvLy8gVGhpcyB0cmFpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGJ1cyBzcGVjaWZpYyBhZGFwdGVyLCB3aGljaCByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uXG5AQCAtMzI0LDExOCAmIzQzOzMwNCwyMyBAQCBwdWIgdHJhaXQgQWRhcHRlciB7XG4gICAgIC8vLyBUaGUgW2BhY3BpOjpJZFRhYmxlYF0gb2YgdGhlIGNvcnJlc3BvbmRpbmcgZHJpdmVyXG4gICAgIGZuIGFjcGlfaWRfdGFibGUoKSAtXHUwMDNlIE9wdGlvblx1MDAzY2FjcGk6OklkVGFibGVcdTAwM2NTZWxmOjpJZEluZm9cdTAwM2VcdTAwM2U7XG4gXG4tICAgIC8vLyBSZXR1cm5zIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYGFjcGk6OklkVGFibGVgXSwgaWYgYW55LlxuLSAgICAvLy9cbi0gICAgLy8vIElmIHRoaXMgcmV0dXJucyBgTm9uZWAsIGl0IG1lYW5zIHRoZXJlIGlzIG5vIG1hdGNoIHdpdGggYW4gZW50cnkgaW4gdGhlIFtgYWNwaTo6SWRUYWJsZWBdLlxuLSAgICBmbiBhY3BpX2lkX2luZm8oZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZSkgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O3N0YXRpYyBTZWxmOjpJZEluZm9cdTAwM2Uge1xuLSAgICAgICAgI1tjZmcobm90KENPTkZJR19BQ1BJKSldXG4tICAgICAgICB7XG4tICAgICAgICAgICAgbGV0IF8gPSBkZXY7XG4tICAgICAgICAgICAgTm9uZVxuLSAgICAgICAgfVxuLVxuLSAgICAgICAgI1tjZmcoQ09ORklHX0FDUEkpXVxuLSAgICAgICAge1xuLSAgICAgICAgICAgIGxldCB0YWJsZSA9IFNlbGY6OmFjcGlfaWRfdGFibGUoKT87XG4tXG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxuLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCYjMzk7cyB2YWxpZCBmb3IgcmVhZCxcbi0gICAgICAgICAgICAvLyAtIGBkZXZgIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgd2hpbGUgaXQmIzM5O3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cbi0gICAgICAgICAgICBsZXQgcmF3X2lkID0gdW5zYWZlIHsgYmluZGluZ3M6OmFjcGlfbWF0Y2hfZGV2aWNlKHRhYmxlLmFzX3B0cigpLCBkZXYuYXNfcmF3KCkpIH07XG4tXG4tICAgICAgICAgICAgaWYgcmF3X2lkLmlzX251bGwoKSB7XG4tICAgICAgICAgICAgICAgIE5vbmVcbi0gICAgICAgICAgICB9IGVsc2Uge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBhY3BpX2RldmljZV9pZGBcbi0gICAgICAgICAgICAgICAgLy8gYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0JiMzOTtzIHNhZmUgdG8gdHJhbnNtdXRlLlxuLSAgICAgICAgICAgICAgICBsZXQgaWQgPSB1bnNhZmUgeyBcdTAwMjYqcmF3X2lkLmNhc3Q6Olx1MDAzY2FjcGk6OkRldmljZUlkXHUwMDNlKCkgfTtcbi1cbi0gICAgICAgICAgICAgICAgU29tZSh0YWJsZS5pbmZvKFx1MDAzY2FjcGk6OkRldmljZUlkIGFzIGNyYXRlOjpkZXZpY2VfaWQ6OlJhd0RldmljZUlkSW5kZXhcdTAwM2U6OmluZGV4KGlkKSkpXG4tICAgICAgICAgICAgfVxuLSAgICAgICAgfVxuLSAgICB9XG4tXG4gICAgIC8vLyBUaGUgW2BvZjo6SWRUYWJsZWBdIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlci5cbiAgICAgZm4gb2ZfaWRfdGFibGUoKSAtXHUwMDNlIE9wdGlvblx1MDAzY29mOjpJZFRhYmxlXHUwMDNjU2VsZjo6SWRJbmZvXHUwMDNlXHUwMDNlO1xuIFxuLSAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBmcm9tIHRoZSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgW2BvZjo6SWRUYWJsZWBdLCBpZiBhbnkuXG4tICAgIC8vL1xuLSAgICAvLy8gSWYgdGhpcyByZXR1cm5zIGBOb25lYCwgaXQgbWVhbnMgdGhlcmUgaXMgbm8gbWF0Y2ggd2l0aCBhbiBlbnRyeSBpbiB0aGUgW2BvZjo6SWRUYWJsZWBdLlxuLSAgICBmbiBvZl9pZF9pbmZvKGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtzdGF0aWMgU2VsZjo6SWRJbmZvXHUwMDNlIHtcbi0gICAgICAgIGxldCB0YWJsZSA9IFNlbGY6Om9mX2lkX3RhYmxlKCk/O1xuLVxuLSAgICAgICAgI1tjZmcobm90KGFueShDT05GSUdfT0YsIENPTkZJR19BQ1BJKSkpXVxuLSAgICAgICAge1xuLSAgICAgICAgICAgIGxldCBfID0gKGRldiwgdGFibGUpO1xuLSAgICAgICAgfVxuLVxuLSAgICAgICAgI1tjZmcoQ09ORklHX09GKV1cbi0gICAgICAgIHtcbi0gICAgICAgICAgICAvLyBTQUZFVFk6XG4tICAgICAgICAgICAgLy8gLSBgdGFibGVgIGhhcyBzdGF0aWMgbGlmZXRpbWUsIGhlbmNlIGl0JiMzOTtzIHZhbGlkIGZvciByZWFkLFxuLSAgICAgICAgICAgIC8vIC0gYGRldmAgaXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB3aGlsZSBpdCYjMzk7cyBhbGl2ZSwgYW5kIHNvIGlzIGBkZXYuYXNfcmF3KClgLlxuLSAgICAgICAgICAgIGxldCByYXdfaWQgPSB1bnNhZmUgeyBiaW5kaW5nczo6b2ZfbWF0Y2hfZGV2aWNlKHRhYmxlLmFzX3B0cigpLCBkZXYuYXNfcmF3KCkpIH07XG4tXG4tICAgICAgICAgICAgaWYgIXJhd19pZC5pc19udWxsKCkge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBvZl9kZXZpY2VfaWRgXG4tICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCYjMzk7cyBzYWZlIHRvIHRyYW5zbXV0ZS5cbi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KnJhd19pZC5jYXN0OjpcdTAwM2NvZjo6RGV2aWNlSWRcdTAwM2UoKSB9O1xuLVxuLSAgICAgICAgICAgICAgICByZXR1cm4gU29tZSh0YWJsZS5pbmZvKFxuLSAgICAgICAgICAgICAgICAgICAgXHUwMDNjb2Y6OkRldmljZUlkIGFzIGNyYXRlOjpkZXZpY2VfaWQ6OlJhd0RldmljZUlkSW5kZXhcdTAwM2U6OmluZGV4KGlkKSxcbi0gICAgICAgICAgICAgICAgKSk7XG4tICAgICAgICAgICAgfVxuLSAgICAgICAgfVxuLVxuLSAgICAgICAgI1tjZmcoQ09ORklHX0FDUEkpXVxuLSAgICAgICAge1xuLSAgICAgICAgICAgIHVzZSBjb3JlOjpwdHI7XG4tICAgICAgICAgICAgdXNlIGRldmljZTo6cHJvcGVydHk6OkZ3Tm9kZTtcbi1cbi0gICAgICAgICAgICBsZXQgbXV0IHJhd19pZCA9IHB0cjo6bnVsbCgpO1xuLVxuLSAgICAgICAgICAgIGxldCBmd25vZGUgPSBkZXYuZndub2RlKCkubWFwX29yKHB0cjo6bnVsbF9tdXQoKSwgRndOb2RlOjphc19yYXcpO1xuLVxuLSAgICAgICAgICAgIC8vIFNBRkVUWTogYGZ3bm9kZWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQgYGZ3bm9kZV9oYW5kbGVgLiBBIG51bGwgcG9pbnRlciB3aWxsIGJlXG4tICAgICAgICAgICAgLy8gcGFzc2VkIHRocm91Z2ggdGhlIGZ1bmN0aW9uLlxuLSAgICAgICAgICAgIGxldCBhZGV2ID0gdW5zYWZlIHsgYmluZGluZ3M6OnRvX2FjcGlfZGV2aWNlX25vZGUoZndub2RlKSB9O1xuLVxuLSAgICAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgICAgICAvLyAtIGBhZGV2YCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYGFjcGlfZGV2aWNlYCBvciBpcyBudWxsLiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlXG4tICAgICAgICAgICAgLy8gICB2YWxpZCBhcyBsb25nIGFzIGBkZXZgIGlzIGFsaXZlLlxuLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCYjMzk7cyB2YWxpZCBmb3IgcmVhZC5cbi0gICAgICAgICAgICBpZiB1bnNhZmUgeyBhY3BpX29mX21hdGNoX2RldmljZShhZGV2LCB0YWJsZS5hc19wdHIoKSwgXHUwMDI2cmF3IG11dCByYXdfaWQpIH0ge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6XG4tICAgICAgICAgICAgICAgIC8vIC0gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlcmVmb3JlIGByYXdfaWRgIGhhcyBiZWVuIHNldCB0byBhIHBvaW50ZXIgdG8gYVxuLSAgICAgICAgICAgICAgICAvLyAgIHZhbGlkIGBvZl9kZXZpY2VfaWRgLlxuLSAgICAgICAgICAgICAgICAvLyAtIGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBvZl9kZXZpY2VfaWRgXG4tICAgICAgICAgICAgICAgIC8vICAgYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0JiMzOTtzIHNhZmUgdG8gdHJhbnNtdXRlLlxuLSAgICAgICAgICAgICAgICBsZXQgaWQgPSB1bnNhZmUgeyBcdTAwMjYqcmF3X2lkLmNhc3Q6Olx1MDAzY29mOjpEZXZpY2VJZFx1MDAzZSgpIH07XG4tXG4tICAgICAgICAgICAgICAgIHJldHVybiBTb21lKHRhYmxlLmluZm8oXG4tICAgICAgICAgICAgICAgICAgICBcdTAwM2NvZjo6RGV2aWNlSWQgYXMgY3JhdGU6OmRldmljZV9pZDo6UmF3RGV2aWNlSWRJbmRleFx1MDAzZTo6aW5kZXgoaWQpLFxuLSAgICAgICAgICAgICAgICApKTtcbi0gICAgICAgICAgICB9XG4tICAgICAgICB9XG4tXG4tICAgICAgICBOb25lXG4tICAgIH1cbi1cbiAgICAgLy8vIFJldHVybnMgdGhlIGRyaXZlciYjMzk7cyBwcml2YXRlIGRhdGEgZnJvbSB0aGUgbWF0Y2hpbmcgZW50cnkgb2YgYW55IG9mIHRoZSBJRCB0YWJsZXMsIGlmIGFueS5cbiAgICAgLy8vXG4gICAgIC8vLyBJZiB0aGlzIHJldHVybnMgYE5vbmVgLCBpdCBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIG1hdGNoIGluIGFueSBvZiB0aGUgSUQgdGFibGVzIGRpcmVjdGx5XG4gICAgIC8vLyBhc3NvY2lhdGVkIHdpdGggYSBbYGRldmljZTo6RGV2aWNlYF0uXG4tICAgIGZuIGlkX2luZm8oZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZSkgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O3N0YXRpYyBTZWxmOjpJZEluZm9cdTAwM2Uge1xuLSAgICAgICAgbGV0IGlkID0gU2VsZjo6YWNwaV9pZF9pbmZvKGRldik7XG4tICAgICAgICBpZiBpZC5pc19zb21lKCkge1xuLSAgICAgICAgICAgIHJldHVybiBpZDtcbi0gICAgICAgIH1cbi1cbi0gICAgICAgIGxldCBpZCA9IFNlbGY6Om9mX2lkX2luZm8oZGV2KTtcbi0gICAgICAgIGlmIGlkLmlzX3NvbWUoKSB7XG4tICAgICAgICAgICAgcmV0dXJuIGlkO1xuLSAgICAgICAgfVxuLVxuLSAgICAgICAgTm9uZVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gIyBTYWZldHlcbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgYGRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHVuc2FmZSBmbiBpZF9pbmZvKGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtzdGF0aWMgU2VsZjo6SWRJbmZvXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IGBkZXZgIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgd2hpbGUgaXQmIzM5O3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cbiYjNDM7ICAgICAgICBsZXQgZGF0YSA9IHVuc2FmZSB7IGJpbmRpbmdzOjpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2LmFzX3JhdygpKSB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFBlciBzYWZldHkgcmVxdWlyZW1lbnQsIGBkYXRhYCBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IGRhdGEuY2FzdDo6XHUwMDNjU2VsZjo6SWRJbmZvXHUwMDNlKCkuYXNfcmVmKCkgfVxuICAgICB9XG4gfVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjJkMjE5MTE2NGUyNTJjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9pMmMucnNcbkBAIC02NSwxMCAmIzQzOzY1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcbiAvLyBTQUZFVFk6IGBEUklWRVJfREFUQV9PRkZTRVRgIGlzIHRoZSBvZmZzZXQgdG8gdGhlIGBkcml2ZXJfZGF0YWAgZmllbGQuXG4gdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQge1xuICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID0gY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjppMmNfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7XG4tXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXG4tICAgIH1cbiB9XG4gXG4gLy8vIElkVGFibGUgdHlwZSBmb3IgSTJDXG5AQCAtNzcsMTQgJiM0Mzs3Myw4IEBAIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuIC8vLyBDcmVhdGUgYSBJMkMgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBpMmNfZGV2aWNlX3RhYmxlIHtcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVx1MDAzZSB7XG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2Ncbi0gICAgICAgICAgICAkY3JhdGU6OmkyYzo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7aTJjXCYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcbiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwmIzM0O2kyY1wmIzM0OywgJGNyYXRlOjppMmM6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG4gXG5AQCAtMTU5LDggJiM0MzsxNDksMTAgQEAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soaWRldjogKm11dCBiaW5kaW5nczo6aTJjX2NsaWVudCkgLVx1MDAzZSBrZXJuZWw6OmZmaTo6Y19cbiAgICAgICAgIC8vIElOVkFSSUFOVDogYGlkZXZgIGlzIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYHByb2JlX2NhbGxiYWNrKClgLlxuICAgICAgICAgbGV0IGlkZXYgPSB1bnNhZmUgeyBcdTAwMjYqaWRldi5jYXN0OjpcdTAwM2NJMmNDbGllbnRcdTAwM2NkZXZpY2U6OkNvcmVJbnRlcm5hbFx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZVx1MDAzZSgpIH07XG4gXG4tICAgICAgICBsZXQgaW5mbyA9XG4tICAgICAgICAgICAgU2VsZjo6aTJjX2lkX2luZm8oaWRldikub3JfZWxzZSh8fCBcdTAwM2NTZWxmIGFzIGRyaXZlcjo6QWRhcHRlclx1MDAzZTo6aWRfaW5mbyhpZGV2LmFzX3JlZigpKSk7XG4mIzQzOyAgICAgICAgbGV0IGluZm8gPSBTZWxmOjppMmNfaWRfaW5mbyhpZGV2KS5vcl9lbHNlKHx8IHtcbiYjNDM7ICAgICAgICAgICAgLy8gU0FGRVRZOiBgaWRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXG4mIzQzOyAgICAgICAgICAgIHVuc2FmZSB7IFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXHUwMDNlOjppZF9pbmZvKGlkZXYuYXNfcmVmKCkpIH1cbiYjNDM7ICAgICAgICB9KTtcbiBcbiAgICAgICAgIGZyb21fcmVzdWx0KHx8IHtcbiAgICAgICAgICAgICBsZXQgZGF0YSA9IFQ6OnByb2JlKGlkZXYsIGluZm8pO1xuQEAgLTIxOCw3ICYjNDM7MjEwLDggQEAgZm4gaTJjX2lkX2luZm8oZGV2OiBcdTAwMjZJMmNDbGllbnQpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtzdGF0aWMgXHUwMDNjU2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXJcdTAwM2U6OklkXG4gICAgICAgICAvLyBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCYjMzk7cyBzYWZlIHRvIHRyYW5zbXV0ZS5cbiAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7IFx1MDAyNipyYXdfaWQuY2FzdDo6XHUwMDNjRGV2aWNlSWRcdTAwM2UoKSB9O1xuIFxuLSAgICAgICAgU29tZSh0YWJsZS5pbmZvKFx1MDAzY0RldmljZUlkIGFzIFJhd0RldmljZUlkSW5kZXhcdTAwM2U6OmluZGV4KGlkKSkpXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYHRhYmxlYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XHUwMDNjXywgU2VsZjo6SWRJbmZvXHUwMDNlYC5cbiYjNDM7ICAgICAgICBTb21lKHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkOjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9KVxuICAgICB9XG4gfVxuIFxuQEAgLTI2Nyw3ICYjNDM7MjYwLDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9pMmNfZHJpdmVyIHtcbiAvLy9cbiAvLy8ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBBQ1BJX1RBQkxFLFxuLS8vLyAgICAgTU9EVUxFX0FDUElfVEFCTEUsXG4gLy8vICAgICBcdTAwM2NNeURyaXZlciBhcyBpMmM6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgIChhY3BpOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtMTlVYQkVFRlwmIzM0OyksICgpKVxuQEAgLTI3Niw3ICYjNDM7MjY4LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9pMmNfZHJpdmVyIHtcbiAvLy9cbiAvLy8ga2VybmVsOjppMmNfZGV2aWNlX3RhYmxlIShcbiAvLy8gICAgIEkyQ19UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9JMkNfVEFCTEUsXG4gLy8vICAgICBcdTAwM2NNeURyaXZlciBhcyBpMmM6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgICAoaTJjOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtydXN0X2RyaXZlcl9pMmNcJiMzNDspLCAoKSlcbkBAIC0yODUsNyAmIzQzOzI3Niw2IEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfaTJjX2RyaXZlciB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAvLy8gICAgIE9GX1RBQkxFLFxuLS8vLyAgICAgTU9EVUxFX09GX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgaTJjOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAob2Y6OkRldmljZUlkOjpuZXcoY1wmIzM0O3Rlc3QsZGV2aWNlXCYjMzQ7KSwgKCkpXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcbmluZGV4IDNjYTk5ZGI1Y2NjZjIyLi4xZTg2YjkwMWMzOTFiZCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL25ldC9waHkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcbkBAIC04MDAsNjIgJiM0Mzs4MDAsNiBAQCBjb25zdCBmbiBhc19pbnQoXHUwMDI2c2VsZikgLVx1MDAzZSB1MzIge1xuIC8vLyB9XG4gLy8vICMgfVxuIC8vLyBgYGBcbi0vLy9cbi0vLy8gVGhpcyBleHBhbmRzIHRvIHRoZSBmb2xsb3dpbmcgY29kZTpcbi0vLy9cbi0vLy8gYGBgaWdub3JlXG4tLy8vIHVzZSBrZXJuZWw6Om5ldDo6cGh5Ojp7c2VsZiwgRGV2aWNlSWR9O1xuLS8vLyB1c2Uga2VybmVsOjpwcmVsdWRlOjoqO1xuLS8vL1xuLS8vLyBzdHJ1Y3QgTW9kdWxlIHtcbi0vLy8gICAgIF9yZWc6IDo6a2VybmVsOjpuZXQ6OnBoeTo6UmVnaXN0cmF0aW9uLFxuLS8vLyB9XG4tLy8vXG4tLy8vIG1vZHVsZSEge1xuLS8vLyAgICAgdHlwZTogTW9kdWxlLFxuLS8vLyAgICAgbmFtZTogXCYjMzQ7cnVzdF9zYW1wbGVfcGh5XCYjMzQ7LFxuLS8vLyAgICAgYXV0aG9yczogW1wmIzM0O1J1c3QgZm9yIExpbnV4IENvbnRyaWJ1dG9yc1wmIzM0O10sXG4tLy8vICAgICBkZXNjcmlwdGlvbjogXCYjMzQ7UnVzdCBzYW1wbGUgUEhZcyBkcml2ZXJcJiMzNDssXG4tLy8vICAgICBsaWNlbnNlOiBcJiMzNDtHUExcJiMzNDssXG4tLy8vIH1cbi0vLy9cbi0vLy8gc3RydWN0IFBoeVNhbXBsZTtcbi0vLy9cbi0vLy8gI1t2dGFibGVdXG4tLy8vIGltcGwgcGh5OjpEcml2ZXIgZm9yIFBoeVNhbXBsZSB7XG4tLy8vICAgICBjb25zdCBOQU1FOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyID0gY1wmIzM0O1BoeVNhbXBsZVwmIzM0Oztcbi0vLy8gICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IHBoeTo6RGV2aWNlSWQgPSBwaHk6OkRldmljZUlkOjpuZXdfd2l0aF9leGFjdF9tYXNrKDB4MDAwMDAwMDEpO1xuLS8vLyB9XG4tLy8vXG4tLy8vIGNvbnN0IF86ICgpID0ge1xuLS8vLyAgICAgc3RhdGljIG11dCBEUklWRVJTOiBbOjprZXJuZWw6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7IDFdID1cbi0vLy8gICAgICAgICBbOjprZXJuZWw6Om5ldDo6cGh5OjpjcmVhdGVfcGh5X2RyaXZlcjo6XHUwMDNjUGh5U2FtcGxlXHUwMDNlKCldO1xuLS8vL1xuLS8vLyAgICAgaW1wbCA6Omtlcm5lbDo6TW9kdWxlIGZvciBNb2R1bGUge1xuLS8vLyAgICAgICAgIGZuIGluaXQobW9kdWxlOiBcdTAwMjYmIzM5O3N0YXRpYyA6Omtlcm5lbDo6VGhpc01vZHVsZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NTZWxmXHUwMDNlIHtcbi0vLy8gICAgICAgICAgICAgbGV0IGRyaXZlcnMgPSB1bnNhZmUgeyBcdTAwMjZtdXQgRFJJVkVSUyB9O1xuLS8vLyAgICAgICAgICAgICBsZXQgbXV0IHJlZyA9IDo6a2VybmVsOjpuZXQ6OnBoeTo6UmVnaXN0cmF0aW9uOjpyZWdpc3Rlcihcbi0vLy8gICAgICAgICAgICAgICAgIG1vZHVsZSxcbi0vLy8gICAgICAgICAgICAgICAgIDo6Y29yZTo6cGluOjpQaW46OnN0YXRpY19tdXQoZHJpdmVycyksXG4tLy8vICAgICAgICAgICAgICk/O1xuLS8vLyAgICAgICAgICAgICBPayhNb2R1bGUgeyBfcmVnOiByZWcgfSlcbi0vLy8gICAgICAgICB9XG4tLy8vICAgICB9XG4tLy8vIH07XG4tLy8vXG4tLy8vIGNvbnN0IE46IHVzaXplID0gMTtcbi0vLy9cbi0vLy8gY29uc3QgVEFCTEU6IDo6a2VybmVsOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2M6Omtlcm5lbDo6bmV0OjpwaHk6OkRldmljZUlkLCAoKSwgTlx1MDAzZSA9XG4tLy8vICAgICA6Omtlcm5lbDo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleChbXG4tLy8vICAgICAgICAgOjprZXJuZWw6Om5ldDo6cGh5OjpEZXZpY2VJZChcbi0vLy8gICAgICAgICAgICAgOjprZXJuZWw6OmJpbmRpbmdzOjptZGlvX2RldmljZV9pZCB7XG4tLy8vICAgICAgICAgICAgICAgICBwaHlfaWQ6IDB4MDAwMDAwMDEsXG4tLy8vICAgICAgICAgICAgICAgICBwaHlfaWRfbWFzazogMHhmZmZmZmZmZixcbi0vLy8gICAgICAgICAgICAgfSksXG4tLy8vICAgICBdKTtcbi0vLy9cbi0vLy8gOjprZXJuZWw6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwmIzM0O21kaW9cJiMzNDssIHBoeWRldiwgVEFCTEUpO1xuLS8vLyBgYGBcbiAjW21hY3JvX2V4cG9ydF1cbiBtYWNyb19ydWxlcyEgbW9kdWxlX3BoeV9kcml2ZXIge1xuICAgICAoQHJlcGxhY2VfZXhwciAkX3Q6dHQgJHN1YjpleHByKSA9XHUwMDNlIHskc3VifTtcbkBAIC04NjUsMTIgJiM0Mzs4MDksMTAgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyIHtcbiAgICAgfTtcbiBcbiAgICAgKEBkZXZpY2VfdGFibGUgWyQoJGRldjpleHByKSwmIzQzO10pID1cdTAwM2Uge1xuLSAgICAgICAgY29uc3QgTjogdXNpemUgPSAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAY291bnRfZGV2aWNlcyAkKCRkZXYpLCYjNDM7KTtcbi1cbi0gICAgICAgIGNvbnN0IFRBQkxFOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzYyRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLCAoKSwgTlx1MDAzZSA9XG4tICAgICAgICAgICAgJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ld193aXRob3V0X2luZGV4KFsgJCgoJGRldiwoKSkpLCYjNDM7LCBdKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7bWRpb1wmIzM0OywgcGh5ZGV2LCBUQUJMRSk7XG4mIzQzOyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7bWRpb1wmIzM0OywgJGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsXG4mIzQzOyAgICAgICAgICAgIFRBQkxFLCBAbm9uZSwgWyQoJGRldiksJiM0MztdXG4mIzQzOyAgICAgICAgKTtcbiAgICAgfTtcbiBcbiAgICAgKGRyaXZlcnM6IFskKCRkcml2ZXI6aWRlbnQpLCYjNDM7ICQoLCk/XSwgZGV2aWNlX3RhYmxlOiBbJCgkZGV2OmV4cHIpLCYjNDM7ICQoLCk/XSwgJCgkZjp0dCkqKSA9XHUwMDNlIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vZi5ycyBiL3J1c3Qva2VybmVsL29mLnJzXG5pbmRleCA1OGIyMGMzNjdmOTkzZi4uZDAzMThmNjJhZmQ3YzggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9vZi5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvb2YucnNcbkBAIC0yNSwxMCAmIzQzOzI1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcbiAvLyBTQUZFVFk6IGBEUklWRVJfREFUQV9PRkZTRVRgIGlzIHRoZSBvZmZzZXQgdG8gdGhlIGBkYXRhYCBmaWVsZC5cbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6Om9mX2RldmljZV9pZCwgZGF0YSk7XG4tXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgc2VsZi4wLmRhdGEgYXMgdXNpemVcbi0gICAgfVxuIH1cbiBcbiBpbXBsIERldmljZUlkIHtcbkBAIC01MywxMyAmIzQzOzQ5LDcgQEAgcHViIGNvbnN0IGZuIG5ldyhjb21wYXRpYmxlOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyKSAtXHUwMDNlIFNlbGYge1xuIC8vLyBDcmVhdGUgYW4gT0YgYElkVGFibGVgIHdpdGggYW4gXCYjMzQ7YWxpYXNcJiMzNDsgZm9yIG1vZHBvc3QuXG4gI1ttYWNyb19leHBvcnRdXG4gbWFjcm9fcnVsZXMhIG9mX2RldmljZV90YWJsZSB7XG4tICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID1cdTAwM2Uge1xuLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjXG4tICAgICAgICAgICAgJGNyYXRlOjpvZjo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7b2ZcJiMzNDssICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xuJiM0MzsgICAgKCQoJHR0OnR0KSopID1cdTAwM2Uge1xuJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7b2ZcJiMzNDssICRjcmF0ZTo6b2Y6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uOTI1Y2YyODBkYWUyYTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTExMCw3ICYjNDM7MTEwLDExIEBAIGV4dGVybiBcJiMzNDtDXCYjMzQ7IGZuIHByb2JlX2NhbGxiYWNrKFxuICAgICAgICAgLy8gU0FGRVRZOiBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudCldYCB3cmFwcGVyIG9mIGBzdHJ1Y3QgcGNpX2RldmljZV9pZGAgYW5kXG4gICAgICAgICAvLyBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCYjMzk7cyBzYWZlIHRvIHRyYW5zbXV0ZS5cbiAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7IFx1MDAyNippZC5jYXN0OjpcdTAwM2NEZXZpY2VJZFx1MDAzZSgpIH07XG4tICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVx1MDAzY18sIFQ6OklkSW5mb1x1MDAzZWAgb3JcbiYjNDM7ICAgICAgICAvLyBgcGNpX2RldmljZV9pZF9hbnlgIHdoaWNoIGhhcyAwIGFzIGRyaXZlcl9kYXRhLiBJdCBjYW4gYWxzbyBjb21lIGZyb20gZHluYW1pYyBJRHMsIHdoaWNoXG4mIzQzOyAgICAgICAgLy8gd2lsbCBlbnN1cmUgdGhhdCBgZHJpdmVyX2RhdGFgIGV4aXN0cyBpbiBgVDo6SURfVEFCTEVgLlxuJiM0MzsgICAgICAgIGxldCBpbmZvID0gdW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWRfb3B0OjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9O1xuIFxuICAgICAgICAgZnJvbV9yZXN1bHQofHwge1xuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUocGRldiwgaW5mbyk7XG5AQCAtMjMzLDEwICYjNDM7MjM3LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcbiAvLyBTQUZFVFk6IGBEUklWRVJfREFUQV9PRkZTRVRgIGlzIHRoZSBvZmZzZXQgdG8gdGhlIGBkcml2ZXJfZGF0YWAgZmllbGQuXG4gdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQge1xuICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID0gY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjpwY2lfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7XG4tXG4tICAgIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXG4tICAgIH1cbiB9XG4gXG4gLy8vIGBJZFRhYmxlYCB0eXBlIGZvciBQQ0kuXG5AQCAtMjQ1LDE0ICYjNDM7MjQ1LDggQEAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4gLy8vIENyZWF0ZSBhIFBDSSBgSWRUYWJsZWAgd2l0aCBpdHMgYWxpYXMgZm9yIG1vZHBvc3QuXG4gI1ttYWNyb19leHBvcnRdXG4gbWFjcm9fcnVsZXMhIHBjaV9kZXZpY2VfdGFibGUge1xuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XHUwMDNlIHtcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzY1xuLSAgICAgICAgICAgICRjcmF0ZTo6cGNpOjpEZXZpY2VJZCxcbi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLFxuLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSxcbi0gICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpO1xuLVxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcJiMzNDtwY2lcJiMzNDssICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xuJiM0MzsgICAgKCQoJHR0OnR0KSopID1cdTAwM2Uge1xuJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7cGNpXCYjMzQ7LCAkY3JhdGU6OnBjaTo6RGV2aWNlSWQsICQoJHR0KSopO1xuICAgICB9O1xuIH1cbiBcbkBAIC0yNjcsNyAmIzQzOzI2MSw2IEBAIG1hY3JvX3J1bGVzISBwY2lfZGV2aWNlX3RhYmxlIHtcbiAvLy9cbiAvLy8ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcbiAvLy8gICAgIFBDSV9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9QQ0lfVEFCTEUsXG4gLy8vICAgICBcdTAwM2NNeURyaXZlciBhcyBwY2k6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgIChcbkBAIC0yODQsNyAmIzQzOzI3Nyw3IEBAIG1hY3JvX3J1bGVzISBwY2lfZGV2aWNlX3RhYmxlIHtcbiAvLy9cbiAvLy8gICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbiAvLy8gICAgICAgICBfcGRldjogXHUwMDI2JiMzOTtib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tLy8vICAgICAgICAgX2lkX2luZm86IFx1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLFxuJiM0MzsvLy8gICAgICAgICBfaWRfaW5mbzogT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gLy8vICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZjo6RGF0YVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UsIEVycm9yXHUwMDNlICYjNDM7ICYjMzk7Ym91bmQge1xuIC8vLyAgICAgICAgIEVycihFTk9ERVYpXG4gLy8vICAgICB9XG5AQCAtMzEzLDcgJiM0MzszMDYsNyBAQCBwdWIgdHJhaXQgRHJpdmVyIHtcbiAgICAgLy8vIGF0dGVtcHQgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGhlcmUuXG4gICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbiAgICAgICAgIGRldjogXHUwMDI2JiMzOTtib3VuZCBEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tICAgICAgICBpZF9pbmZvOiBcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyxcbiYjNDM7ICAgICAgICBpZF9pbmZvOiBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mb1x1MDAzZSxcbiAgICAgKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGY6OkRhdGFcdTAwM2MmIzM5O2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSAmIzQzOyAmIzM5O2JvdW5kO1xuIFxuICAgICAvLy8gUENJIGRyaXZlciB1bmJpbmQuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuaW5kZXggOWIzNjJlMDQ5NWQzMjMuLmUxMmU4ODExM2NhNWQyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5AQCAtMTAwLDcgJiM0MzsxMDAsOCBAQCBleHRlcm4gXCYjMzQ7Q1wmIzM0OyBmbiBwcm9iZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwbGF0Zm9ybV9kZXZpY2UpIC1cdTAwM2Uga2VybmVsOjpmZlxuICAgICAgICAgLy9cbiAgICAgICAgIC8vIElOVkFSSUFOVDogYHBkZXZgIGlzIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYHByb2JlX2NhbGxiYWNrKClgLlxuICAgICAgICAgbGV0IHBkZXYgPSB1bnNhZmUgeyBcdTAwMjYqcGRldi5jYXN0OjpcdTAwM2NEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVJbnRlcm5hbFx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZVx1MDAzZSgpIH07XG4tICAgICAgICBsZXQgaW5mbyA9IFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXHUwMDNlOjppZF9pbmZvKHBkZXYuYXNfcmVmKCkpO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYHBkZXZgIG1hdGNoZWQgZGF0YSBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLlxuJiM0MzsgICAgICAgIGxldCBpbmZvID0gdW5zYWZlIHsgXHUwMDNjU2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXJcdTAwM2U6OmlkX2luZm8ocGRldi5hc19yZWYoKSkgfTtcbiBcbiAgICAgICAgIGZyb21fcmVzdWx0KHx8IHtcbiAgICAgICAgICAgICBsZXQgZGF0YSA9IFQ6OnByb2JlKHBkZXYsIGluZm8pO1xuQEAgLTE3Niw3ICYjNDM7MTc3LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIge1xuIC8vL1xuIC8vLyBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBPRl9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAvLy8gICAgIFx1MDAzY015RHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAob2Y6OkRldmljZUlkOjpuZXcoY1wmIzM0O3Rlc3QsZGV2aWNlXCYjMzQ7KSwgKCkpXG5AQCAtMTg1LDcgJiM0MzsxODUsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX3BsYXRmb3JtX2RyaXZlciB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxuIC8vLyAgICAgQUNQSV9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgIChhY3BpOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtMTlVYQkVFRlwmIzM0OyksICgpKVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuaW5kZXggN2FmZjBjODJkMGFmYzAuLmFlYzdkY2UwNDk1NTMyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC91c2IucnNcbkBAIC04OSw3ICYjNDM7ODksMTAgQEAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soXG4gICAgICAgICAgICAgLy8gZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuXG4gICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KmlkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbiBcbi0gICAgICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7XG4mIzQzOyAgICAgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVx1MDAzY18sIFQ6OklkSW5mb1x1MDAzZWAuIEl0XG4mIzQzOyAgICAgICAgICAgIC8vIGNhbiBhbHNvIGNvbWUgZnJvbSBkeW5hbWljIElEcywgd2hpY2ggd2lsbCBlbnN1cmUgdGhhdCBgZHJpdmVyX2RhdGFgIGV4aXN0cyBpblxuJiM0MzsgICAgICAgICAgICAvLyBgVDo6SURfVEFCTEVgIG9yIGlzIDAuXG4mIzQzOyAgICAgICAgICAgIGxldCBpbmZvID0gdW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWRfb3B0OjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9O1xuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUoaW50ZiwgaWQsIGluZm8pO1xuIFxuICAgICAgICAgICAgIGxldCBkZXY6IFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlSW50ZXJuYWxcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UgPSBpbnRmLmFzX3JlZigpO1xuQEAgLTI0MiwxMCAmIzQzOzI0NSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2luZm9gIGZpZWxkLlxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9IGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6dXNiX2RldmljZV9pZCwgZHJpdmVyX2luZm8pO1xuLVxuLSAgICBmbiBpbmRleChcdTAwMjZzZWxmKSAtXHUwMDNlIHVzaXplIHtcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfaW5mb1xuLSAgICB9XG4gfVxuIFxuIC8vLyBbYElkVGFibGVgXShrZXJuZWw6OmRldmljZV9pZDo6SWRUYWJsZSkgdHlwZSBmb3IgVVNCLlxuQEAgLTI1NCwxNCAmIzQzOzI1Myw4IEBAIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuIC8vLyBDcmVhdGUgYSBVU0IgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISB1c2JfZGV2aWNlX3RhYmxlIHtcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVx1MDAzZSB7XG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2Ncbi0gICAgICAgICAgICAkY3JhdGU6OnVzYjo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCYjMzQ7dXNiXCYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcbiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwmIzM0O3VzYlwmIzM0OywgJGNyYXRlOjp1c2I6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG4gXG5AQCAtMjc3LDcgJiM0MzsyNzAsNiBAQCBtYWNyb19ydWxlcyEgdXNiX2RldmljZV90YWJsZSB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6dXNiX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBVU0JfVEFCTEUsXG4tLy8vICAgICBNT0RVTEVfVVNCX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgdXNiOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAodXNiOjpEZXZpY2VJZDo6ZnJvbV9pZCgweDEyMzQsIDB4NTY3OCksICgpKSxcbkBAIC0yOTMsNyAmIzQzOzI4NSw3IEBAIG1hY3JvX3J1bGVzISB1c2JfZGV2aWNlX3RhYmxlIHtcbiAvLy8gICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbiAvLy8gICAgICAgICBfaW50ZXJmYWNlOiBcdTAwMjYmIzM5O2JvdW5kIHVzYjo6SW50ZXJmYWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbiAvLy8gICAgICAgICBfaWQ6IFx1MDAyNnVzYjo6RGV2aWNlSWQsXG4tLy8vICAgICAgICAgX2luZm86IFx1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLFxuJiM0MzsvLy8gICAgICAgICBfaW5mbzogT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gLy8vICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZjo6RGF0YVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UsIEVycm9yXHUwMDNlICYjNDM7ICYjMzk7Ym91bmQge1xuIC8vLyAgICAgICAgIEVycihFTk9ERVYpXG4gLy8vICAgICB9XG5AQCAtMzIyLDcgJiM0MzszMTQsNyBAQCBwdWIgdHJhaXQgRHJpdmVyIHtcbiAgICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuICAgICAgICAgaW50ZXJmYWNlOiBcdTAwMjYmIzM5O2JvdW5kIEludGVyZmFjZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbiAgICAgICAgIGlkOiBcdTAwMjZEZXZpY2VJZCxcbi0gICAgICAgIGlkX2luZm86IFx1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLFxuJiM0MzsgICAgICAgIGlkX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvXHUwMDNlLFxuICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZjo6RGF0YVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UsIEVycm9yXHUwMDNlICYjNDM7ICYjMzk7Ym91bmQ7XG4gXG4gICAgIC8vLyBVU0IgZHJpdmVyIGRpc2Nvbm5lY3QuXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnNcbmluZGV4IDFmNTllMDhhYWE0YjBkLi4xODFmZDk4YWU1YjY2MyAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnNcbkBAIC0xMTAsNyAmIzQzOzExMCw2IEBAIGZuIGZyb21fc3RyKHM6IFx1MDAyNnN0cikgLVx1MDAzZSBSZXN1bHRcdTAwM2NTZWxmXHUwMDNlIHtcbiBcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcbiAgICAgQUNQSV9UQUJMRSxcbi0gICAgTU9EVUxFX0FDUElfVEFCTEUsXG4gICAgIFx1MDAzY1J1c3REZWJ1Z0ZzIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtMTlVYQkVFRlwmIzM0OyksICgpKV1cbiApO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5yc1xuaW5kZXggNTA0NmI0NjI4ZDBlMjkuLjgwYzMwOWNlMDdlOTNlIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnNcbkBAIC01MSw3ICYjNDM7NTEsNiBAQCB1bnNhZmUgaW1wbCBrZXJuZWw6OnRyYW5zbXV0ZTo6RnJvbUJ5dGVzIGZvciBNeVN0cnVjdCB7fVxuIFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXG4gICAgIFBDSV9UQUJMRSxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcbiAgICAgXHUwMDNjRG1hU2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsocGNpOjpEZXZpY2VJZDo6ZnJvbV9pZChwY2k6OlZlbmRvcjo6UkVESEFULCAweDUpLCAoKSldXG4gKTtcbkBAIC02Myw3ICYjNDM7NjIsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBEbWFTYW1wbGVEcml2ZXIge1xuIFxuICAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG4gICAgICAgICBwZGV2OiBcdTAwMjYmIzM5O2JvdW5kIHBjaTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0gICAgICAgIF9pbmZvOiBcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyxcbiYjNDM7ICAgICAgICBfaW5mbzogT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTtib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSAmIzQzOyAmIzM5O2JvdW5kIHtcbiAgICAgICAgIHBpbl9pbml0OjpwaW5faW5pdF9zY29wZShtb3ZlIHx8IHtcbiAgICAgICAgICAgICBkZXZfaW5mbyEocGRldiwgXCYjMzQ7UHJvYmUgRE1BIHRlc3QgZHJpdmVyLlxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNcbmluZGV4IDJjMTM1MTA0MGU0NWU1Li43MDQ1NjdhMDcyYmFjMyAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNcbkBAIC0yNCw3ICYjNDM7MjQsNiBAQFxuIFxuIGtlcm5lbDo6YXV4aWxpYXJ5X2RldmljZV90YWJsZSEoXG4gICAgIEFVWF9UQUJMRSxcbi0gICAgTU9EVUxFX0FVWF9UQUJMRSxcbiAgICAgXHUwMDNjQXV4aWxpYXJ5RHJpdmVyIGFzIGF1eGlsaWFyeTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYXV4aWxpYXJ5OjpEZXZpY2VJZDo6bmV3KE1PRFVMRV9OQU1FLCBBVVhJTElBUllfTkFNRSksICgpKV1cbiApO1xuQEAgLTY2LDcgJiM0Mzs2NSw2IEBAIHN0cnVjdCBQYXJlbnREYXRhXHUwMDNjJiMzOTtib3VuZFx1MDAzZSB7XG4gXG4ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcbiAgICAgUENJX1RBQkxFLFxuLSAgICBNT0RVTEVfUENJX1RBQkxFLFxuICAgICBcdTAwM2NQYXJlbnREcml2ZXIgYXMgcGNpOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksICgpKV1cbiApO1xuQEAgLTc5LDcgJiM0Mzs3Nyw3IEBAIGltcGwgcGNpOjpEcml2ZXIgZm9yIFBhcmVudERyaXZlciB7XG4gXG4gICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbiAgICAgICAgIHBkZXY6IFx1MDAyNiYjMzk7Ym91bmQgcGNpOjpEZXZpY2VcdTAwM2NDb3JlXHUwMDNjJiMzOTtfXHUwMDNlXHUwMDNlLFxuLSAgICAgICAgX2luZm86IFx1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLFxuJiM0MzsgICAgICAgIF9pbmZvOiBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mb1x1MDAzZSxcbiAgICAgKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGY6OkRhdGFcdTAwM2MmIzM5O2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSAmIzQzOyAmIzM5O2JvdW5kIHtcbiAgICAgICAgIE9rKFBhcmVudERhdGEge1xuICAgICAgICAgICAgIC8vIFNBRkVUWTogYFBhcmVudERhdGFgIGlzIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhLCB3aGljaCBpcyBkcm9wcGVkIHdoZW4gdGhlXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbmluZGV4IGVhZDgyNjNhN2Q0ODlhLi5hMGRmMGM2MDk3YzRmNSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbkBAIC0xNCwyMSAmIzQzOzE0LDE4IEBAXG4gXG4ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEge1xuICAgICBBQ1BJX1RBQkxFLFxuLSAgICBNT0RVTEVfQUNQSV9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7TE5VWEJFRUZcJiMzNDspLCAwKV1cbiB9XG4gXG4ga2VybmVsOjppMmNfZGV2aWNlX3RhYmxlISB7XG4gICAgIEkyQ19UQUJMRSxcbi0gICAgTU9EVUxFX0kyQ19UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoaTJjOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtydXN0X2RyaXZlcl9pMmNcJiMzNDspLCAwKV1cbiB9XG4gXG4ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhIHtcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsob2Y6OkRldmljZUlkOjpuZXcoY1wmIzM0O3Rlc3QscnVzdF9kcml2ZXJfaTJjXCYjMzQ7KSwgMCldXG4gfVxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzXG5pbmRleCAxYWE4MTk3ZDg2OThjMC4uNjUyODE5ZGZmMDgyNGIgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzXG5AQCAtNzQsMTIgJiM0Mzs3NCwxMCBAQCBzdHJ1Y3QgU2FtcGxlRHJpdmVyRGF0YVx1MDAzYyYjMzk7Ym91bmRcdTAwM2Uge1xuIFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXG4gICAgIFBDSV9UQUJMRSxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4tICAgIFsoXG4tICAgICAgICBwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksXG4tICAgICAgICBUZXN0SW5kZXg6Ok5PX0VWRU5URkRcbi0gICAgKV1cbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSkgPVx1MDAzZSBUZXN0SW5kZXg6Ok5PX0VWRU5URkQsXG4mIzQzOyAgICB9XG4gKTtcbiBcbiBpbXBsIFNhbXBsZURyaXZlckRhdGFcdTAwM2MmIzM5O19cdTAwM2Uge1xuQEAgLTE0NCw3ICYjNDM7MTQyLDcgQEAgaW1wbCBwY2k6OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcbiBcbiAgICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuICAgICAgICAgcGRldjogXHUwMDI2JiMzOTtib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tICAgICAgICBpbmZvOiBcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyxcbiYjNDM7ICAgICAgICBpbmZvOiBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O2JvdW5kIFNlbGY6OklkSW5mb1x1MDAzZSxcbiAgICAgKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGY6OkRhdGFcdTAwM2MmIzM5O2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSAmIzQzOyAmIzM5O2JvdW5kIHtcbiAgICAgICAgIGxldCB2ZW5kb3IgPSBwZGV2LnZlbmRvcl9pZCgpO1xuICAgICAgICAgZGV2X2RiZyEoXG5AQCAtMTUzLDYgJiM0MzsxNTEsNyBAQCBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG4gICAgICAgICAgICAgdmVuZG9yLFxuICAgICAgICAgICAgIHBkZXYuZGV2aWNlX2lkKClcbiAgICAgICAgICk7XG4mIzQzOyAgICAgICAgbGV0IGluZm8gPSBpbmZvLm9rX29yKEVOT0RFVik/O1xuIFxuICAgICAgICAgcGRldi5lbmFibGVfZGV2aWNlX21lbSgpPztcbiAgICAgICAgIHBkZXYuc2V0X21hc3RlcigpO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yc1xuaW5kZXggZWMwZDZjYWM0ZjU3MGIuLjcxMDE0NWIzNjA1YTIxIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnNcbkBAIC04NywxNCAmIzQzOzg3LDEyIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXIge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7dGVzdCxydXN0LWRldmljZVwmIzM0OyksIEluZm8oNDIpKV1cbiApO1xuIFxuIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxuICAgICBBQ1BJX1RBQkxFLFxuLSAgICBNT0RVTEVfQUNQSV9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGNcJiMzNDtMTlVYQkVFRlwmIzM0OyksIEluZm8oMCkpXVxuICk7XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnNcbmluZGV4IDAyYmQ1MDg1ZjliYzc2Li43ZWYwNGUxNzdjODA5NCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnNcbkBAIC0xOSw3ICYjNDM7MTksNiBAQCBzdHJ1Y3QgU2FtcGxlRHJpdmVyIHtcbiBcbiBrZXJuZWw6OnVzYl9kZXZpY2VfdGFibGUhKFxuICAgICBVU0JfVEFCTEUsXG4tICAgIE1PRFVMRV9VU0JfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyB1c2I6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKHVzYjo6RGV2aWNlSWQ6OmZyb21faWQoMHgxMjM0LCAweDU2NzgpLCAoKSksXVxuICk7XG5AQCAtMzIsNyAmIzQzOzMxLDcgQEAgaW1wbCB1c2I6OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcbiAgICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuICAgICAgICAgaW50ZjogXHUwMDI2JiMzOTtib3VuZCB1c2I6OkludGVyZmFjZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4gICAgICAgICBfaWQ6IFx1MDAyNnVzYjo6RGV2aWNlSWQsXG4tICAgICAgICBfaW5mbzogXHUwMDI2JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sXG4mIzQzOyAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNiYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvXHUwMDNlLFxuICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZiwgRXJyb3JcdTAwM2UgJiM0MzsgJiMzOTtib3VuZCB7XG4gICAgICAgICBsZXQgZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UgPSBpbnRmLmFzX3JlZigpO1xuICAgICAgICAgZGV2X2luZm8hKGRldiwgXCYjMzQ7UnVzdCBVU0IgZHJpdmVyIHNhbXBsZSBwcm9iZWRcXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzXG5pbmRleCAyZDg3NmY0ZTNlZTBhMi4uYzhhMjM4NzVlZjViYzUgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzXG5AQCAtODcsMTQgJiM0Mzs4NywxMiBAQCBzdHJ1Y3QgU2FtcGxlRHJpdmVyIHtcbiBcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gICAgIE9GX1RBQkxFLFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsob2Y6OkRldmljZUlkOjpuZXcoY1wmIzM0O3Rlc3QscnVzdC1kZXZpY2VcJiMzNDspLCAoKSldXG4gKTtcbiBcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcbiAgICAgQUNQSV9UQUJMRSxcbi0gICAgTU9EVUxFX0FDUElfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7TE5VWEJFRUZcJiMzNDspLCAoKSldXG4gKTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnNcbmluZGV4IDgwOGQ1ODIwMGViNjc3Li5mNWU1ZjJmOWFkZjc2MiAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzXG5AQCAtMjMsMTQgJiM0MzsyMywxMiBAQCBzdHJ1Y3QgU2FtcGxlU29jRHJpdmVyIHtcbiBcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gICAgIE9GX1RBQkxFLFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZVNvY0RyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsob2Y6OkRldmljZUlkOjpuZXcoY1wmIzM0O3Rlc3QscnVzdC1kZXZpY2VcJiMzNDspLCAoKSldXG4gKTtcbiBcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcbiAgICAgQUNQSV9UQUJMRSxcbi0gICAgTU9EVUxFX0FDUElfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZVNvY0RyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCYjMzQ7TE5VWEJFRUZcJiMzNDspLCAoKSldXG4gKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVVNUJiMzNDssCiAgICAmIzM0O1NBTVBMRVNfUlVTVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9ETUEmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX0kyQyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9JMkNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9QQ0kmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9VU0ImIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9TT0MmIzM0OywKICAgICYjMzQ7RFJNX05PVkEmIzM0OywKICAgICYjMzQ7RFJNX1RZUiYjMzQ7LAogICAgJiMzNDtOT1ZBX0NPUkUmIzM0OywKICAgICYjMzQ7UFdNX1RIMTUyMCYjMzQ7LAogICAgJiMzNDtDUFVGUkVRX0RUX1JVU1QmIzM0OywKICAgICYjMzQ7QVg4ODc5NkJfUlVTVF9QSFkmIzM0OywKICAgICYjMzQ7QU1DQ19RVDIwMjVfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUnVzdCBhYnN0cmFjdGlvbnMgZm9yIGRldmljZSBkcml2ZXJzIChQQ0ksIFVTQiwgUGxhdGZvcm0sIEkyQywgQXV4aWxpYXJ5LCBBQ1BJLCBPRiksIGNoYW5naW5nIGhvdyBkZXZpY2UgSUQgdGFibGVzIGFyZSBnZW5lcmF0ZWQgYW5kIGhvdyBtYXRjaCBkYXRhIGlzIHJldHJpZXZlZCBkdXJpbmcgZHJpdmVyIHByb2JlLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgUnVzdCBkcml2ZXJzIGNhbiBzdGlsbCBwcm9iZSBzdWNjZXNzZnVsbHkgYW5kIHJlY2VpdmUgY29ycmVjdCBtYXRjaCBkYXRhLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZjNjYzlhNWE4NjQ3NTFlYTQzOTNiZWY2YzNlODQ4NmY0OGIxYTZiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMTM6MTM6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDE1MDExZjU3NTJhOTk0Li4wNzI0MGUwYjc0NTE4MCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTI5Nyw3ICYjNDM7Mjk3LDYgQEAgRjoJaW5jbHVkZS9saW51eC9hY3BpLmgKIEY6CWluY2x1ZGUvbGludXgvZndub2RlLmgKIEY6CWluY2x1ZGUvbGludXgvZndfdGFibGUuaAogRjoJbGliL2Z3X3RhYmxlLmMKLUY6CXJ1c3QvaGVscGVycy9hY3BpLmMKIEY6CXJ1c3Qva2VybmVsL2FjcGkucnMKIEY6CXRvb2xzL3Bvd2VyL2FjcGkvCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuYwppbmRleCBhMzBhOTA0ZjY1MzVmNC4uMWZiMGIxMGJmOTI0NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9idXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FjcGkvYnVzLmMKQEAgLTg5OCw5ICYjNDM7ODk4LDkgQEAgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2NvbXBhbmlvbl9tYXRjaChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiAgKiBpZGVudGlmaWVycyBhbmQgYSBfRFNEIG9iamVjdCB3aXRoIHRoZSAmIzM0O2NvbXBhdGlibGUmIzM0OyBwcm9wZXJ0eSwgdXNlIHRoYXQKICAqIHByb3BlcnR5IHRvIG1hdGNoIGFnYWluc3QgdGhlIGdpdmVuIGxpc3Qgb2YgaWRlbnRpZmllcnMuCiAgKi8KLWJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAotCQkJICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSwKLQkJCSAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKQomIzQzO3N0YXRpYyBib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwKJiM0MzsJCQkJIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX21hdGNoX3RhYmxlLAomIzQzOwkJCQkgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKQogewogCWNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvZl9jb21wYXRpYmxlLCAqb2JqOwogCWludCBpLCBudmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzIGIvZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzCmluZGV4IDEwMTA2ZmExMzA5NWU0Li4xNDVkYWExMjA3MmY0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycwpAQCAtMTk0LDcgJiM0MzsxOTQsNiBAQCBmbiByZWdpc3Rlcl9lbShwb2xpY3k6ICZhbXA7bXV0IGNwdWZyZXE6OlBvbGljeSkgewogCiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoCiAgICAgT0ZfVEFCTEUsCi0gICAgTU9EVUxFX09GX1RBQkxFLAogICAgICZsdDtDUFVGcmVxRFREcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGMmIzM0O29wZXJhdGluZy1wb2ludHMtdjImIzM0OyksICgpKV0KICk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnMKaW5kZXggNDg5MzNkODZkZGRhOWIuLjQzZjE1Y2RmZWIwOWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL25vdmEvZHJpdmVyLnJzCkBAIC00Myw3ICYjNDM7NDMsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhRGF0YSB7CiAKIGtlcm5lbDo6YXV4aWxpYXJ5X2RldmljZV90YWJsZSEoCiAgICAgQVVYX1RBQkxFLAotICAgIE1PRFVMRV9BVVhfVEFCTEUsCiAgICAgJmx0O05vdmFEcml2ZXIgYXMgYXV4aWxpYXJ5OjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWygKICAgICAgICAgYXV4aWxpYXJ5OjpEZXZpY2VJZDo6bmV3KE5PVkFfQ09SRV9NT0RVTEVfTkFNRSwgQVVYSUxJQVJZX05BTUUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5ycwppbmRleCBkMDYzYmM2NjRjYzExNy4uMjE4ZTlhZjg5OWM3YzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzCkBAIC04Nyw3ICYjNDM7ODcsNiBAQCBmbiBpc3N1ZV9zb2Z0X3Jlc2V0KGRldjogJmFtcDtEZXZpY2UsIGlvbWVtOiAmYW1wO0lvTWVtJmx0OyYjMzk7XyZndDspIC0mZ3Q7IFJlc3VsdCB7CiAKIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlISgKICAgICBPRl9UQUJMRSwKLSAgICBNT0RVTEVfT0ZfVEFCTEUsCiAgICAgJmx0O1R5clBsYXRmb3JtRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWwogICAgICAgICAob2Y6OkRldmljZUlkOjpuZXcoYyYjMzQ7cm9ja2NoaXAscmszNTg4LW1hbGkmIzM0OyksICgpKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzCmluZGV4IDU3MzhkNGFjNTIxYjcyLi4wYzUzYjcyMzlhYzllOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzCkBAIC00MCw3ICYjNDM7NDAsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhQ29yZSZsdDsmIzM5O2JvdW5kJmd0OyB7CiAKIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoCiAgICAgUENJX1RBQkxFLAotICAgIE1PRFVMRV9QQ0lfVEFCTEUsCiAgICAgJmx0O05vdmFDb3JlRHJpdmVyIGFzIHBjaTo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogICAgIFsKICAgICAgICAgLy8gTW9kZXJuIE5WSURJQSBHUFVzIHdpbGwgc2hvdyB1cCBhcyBlaXRoZXIgVkdBIG9yIDNEIGNvbnRyb2xsZXJzLgpAQCAtNzAsNyAmIzQzOzY5LDcgQEAgaW1wbCBwY2k6OkRyaXZlciBmb3IgTm92YUNvcmVEcml2ZXIgewogCiAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAgICAgICAgIHBkZXY6ICZhbXA7JiMzOTtib3VuZCBwY2k6OkRldmljZSZsdDtDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7LAotICAgICAgICBfaW5mbzogJmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbywKJiM0MzsgICAgICAgIF9pbmZvOiBPcHRpb24mbHQ7JmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyZndDssCiAgICAgKSAtJmd0OyBpbXBsIFBpbkluaXQmbHQ7U2VsZjo6RGF0YSZsdDsmIzM5O2JvdW5kJmd0OywgRXJyb3ImZ3Q7ICYjNDM7ICYjMzk7Ym91bmQgewogICAgICAgICBwaW5faW5pdDo6cGluX2luaXRfc2NvcGUobW92ZSB8fCB7CiAgICAgICAgICAgICBkZXZfZGJnIShwZGV2LCAmIzM0O1Byb2JlIE5vdmEgQ29yZSBHUFUgZHJpdmVyLlxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnMKaW5kZXggM2UzZmE1MWNjZWY5MTEuLjFkZjc1MjMzMGU4ZmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3B3bS9wd21fdGgxNTIwLnJzCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnMKQEAgLTMwMyw3ICYjNDM7MzAzLDYgQEAgZm4gZHJvcChzZWxmOiBQaW4mbHQ7JmFtcDttdXQgU2VsZiZndDspIHsKIAoga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKAogICAgIE9GX1RBQkxFLAotICAgIE1PRFVMRV9PRl9UQUJMRSwKICAgICAmbHQ7VGgxNTIwUHdtUGxhdGZvcm1Ecml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGMmIzM0O3RoZWFkLHRoMTUyMC1wd20mIzM0OyksICgpKV0KICk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaCBiL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oCmluZGV4IDcxNGQxMTFkODA1MzBmLi43ZTU3Zjk2OThmN2NlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmgKQEAgLTE4OSwxMCAmIzQzOzE4OSw2IEBAIHN0cnVjdCBhY3BpX2RyaXZlciB7CiAgKiAtLS0tLS0tLS0tLQogICovCiAKLWJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAotCQkJICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSwKLQkJCSAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKTsKLQogLyogU3RhdHVzIChfU1RBKSAqLwogCiBzdHJ1Y3QgYWNwaV9kZXZpY2Vfc3RhdHVzIHsKQEAgLTEwMDAsMTMgJiM0Mzs5OTYsNiBAQCBpbnQgYWNwaV9zY2FuX2FkZF9kZXAoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9oYW5kbGVfbGlzdCAqZGVwX2RldmljZXMpOwogdTMyIGFyY2hfYWNwaV9hZGRfYXV0b19kZXAoYWNwaV9oYW5kbGUgaGFuZGxlKTsKICNlbHNlCS8qIENPTkZJR19BQ1BJICovCiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsCi0JCQkJCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX21hdGNoX3RhYmxlLAotCQkJCQljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICoqb2ZfaWQpCi17Ci0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW5saW5lIGludCByZWdpc3Rlcl9hY3BpX2J1c190eXBlKHZvaWQgKmJ1cykgeyByZXR1cm4gMDsgfQogc3RhdGljIGlubGluZSBpbnQgdW5yZWdpc3Rlcl9hY3BpX2J1c190eXBlKHZvaWQgKmJ1cykgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9ydXN0L2hlbHBlcnMvYWNwaS5jIGIvcnVzdC9oZWxwZXJzL2FjcGkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1Yzk4MDdiYmFkY2MuLjAwMDAwMDAwMDAwMDAwCi0tLSBhL3J1c3QvaGVscGVycy9hY3BpLmMKJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbApAQCAtMSwxNiAmIzQzOzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLQotI2luY2x1ZGUgJmx0O2xpbnV4L2FjcGkuaCZndDsKLSNpbmNsdWRlICZsdDthY3BpL2FjcGlfYnVzLmgmZ3Q7Ci0KLV9fcnVzdF9oZWxwZXIgYm9vbCBydXN0X2hlbHBlcl9hY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsCi0JCQkJCQkgICAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsCi0JCQkJCQkgICAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKQotewotCXJldHVybiBhY3BpX29mX21hdGNoX2RldmljZShhZGV2LCBvZl9tYXRjaF90YWJsZSwgb2ZfaWQpOwotfQotCi1fX3J1c3RfaGVscGVyIHN0cnVjdCBhY3BpX2RldmljZSAqcnVzdF9oZWxwZXJfdG9fYWNwaV9kZXZpY2Vfbm9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQotewotCXJldHVybiB0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSk7Ci19CmRpZmYgLS1naXQgYS9ydXN0L2hlbHBlcnMvaGVscGVycy5jIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuYwppbmRleCA5OThlMzEwNTJlNjYwMS4uZmFkZDdhY2RkODFjOTMgMTAwNjQ0Ci0tLSBhL3J1c3QvaGVscGVycy9oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuYwpAQCAtMzgsNyAmIzQzOzM4LDYgQEAKICNkZWZpbmUgX19ydXN0X2hlbHBlciBfX2Fsd2F5c19pbmxpbmUKICNlbmRpZgogCi0jaW5jbHVkZSAmIzM0O2FjcGkuYyYjMzQ7CiAjaW5jbHVkZSAmIzM0O2F0b21pYy5jJiMzNDsKICNpbmNsdWRlICYjMzQ7YXRvbWljX2V4dC5jJiMzNDsKICNpbmNsdWRlICYjMzQ7YXV4aWxpYXJ5LmMmIzM0OwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWNwaS5ycyBiL3J1c3Qva2VybmVsL2FjcGkucnMKaW5kZXggOWI4ZWZhNjIzMTMwYzEuLmVhMmNlNjFlZTM5MzFmIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hY3BpLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FjcGkucnMKQEAgLTI1LDEwICYjNDM7MjUsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQgewogLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkLgogdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQgewogICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OmFjcGlfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7Ci0KLSAgICBmbiBpbmRleCgmYW1wO3NlbGYpIC0mZ3Q7IHVzaXplIHsKLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhCi0gICAgfQogfQogCiBpbXBsIERldmljZUlkIHsKQEAgLTUzLDEzICYjNDM7NDksNyBAQCBwdWIgY29uc3QgZm4gbmV3KGlkOiAmYW1wOyYjMzk7c3RhdGljIENTdHIpIC0mZ3Q7IFNlbGYgewogLy8vIENyZWF0ZSBhbiBBQ1BJIGBJZFRhYmxlYCB3aXRoIGFuICYjMzQ7YWxpYXMmIzM0OyBmb3IgbW9kcG9zdC4KICNbbWFjcm9fZXhwb3J0XQogbWFjcm9fcnVsZXMhIGFjcGlfZGV2aWNlX3RhYmxlIHsKLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9Jmd0OyB7Ci0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheSZsdDsKLSAgICAgICAgICAgICRjcmF0ZTo6YWNwaTo6RGV2aWNlSWQsCi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLAotICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LAotICAgICAgICAmZ3Q7ID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ldygkdGFibGVfZGF0YSk7Ci0KLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlISgmIzM0O2FjcGkmIzM0OywgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7CiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9Jmd0OyB7CiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKCYjMzQ7YWNwaSYjMzQ7LCAkY3JhdGU6OmFjcGk6OkRldmljZUlkLCAkKCR0dCkqKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzCmluZGV4IGM0MjkyOGQ1YTIzOTNmLi5hYTEzZDg4NjZhMTk2NCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwpAQCAtOTMsNyAmIzQzOzkzLDkgQEAgZXh0ZXJuICYjMzQ7QyYjMzQ7IGZuIHByb2JlX2NhbGxiYWNrKAogICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KWBdIHdyYXBwZXIgb2YgYHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkYAogICAgICAgICAvLyBhbmQgZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuCiAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7ICZhbXA7KmlkLmNhc3Q6OiZsdDtEZXZpY2VJZCZndDsoKSB9OwotICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IGBpZGAgY29tZXMgZnJvbSBgVDo6SURfVEFCTEVgIHdoaWNoIGlzIG9mIHR5cGUgYElkQXJyYXkmbHQ7XywgVDo6SWRJbmZvJmd0O2AuCiYjNDM7ICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkOjombHQ7VDo6SWRJbmZvJmd0OygpIH07CiAKICAgICAgICAgZnJvbV9yZXN1bHQofHwgewogICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShhZGV2LCBpbmZvKTsKQEAgLTE2OSwxMCAmIzQzOzE3MSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7CiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7CiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9CiAgICAgICAgIGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6YXV4aWxpYXJ5X2RldmljZV9pZCwgZHJpdmVyX2RhdGEpOwotCi0gICAgZm4gaW5kZXgoJmFtcDtzZWxmKSAtJmd0OyB1c2l6ZSB7Ci0gICAgICAgIHNlbGYuMC5kcml2ZXJfZGF0YQotICAgIH0KIH0KIAogLy8vIElkVGFibGUgdHlwZSBmb3IgYXV4aWxpYXJ5IGRyaXZlcnMuCkBAIC0xODEsMTQgJiM0MzsxNzksOCBAQCBmbiBpbmRleCgmYW1wO3NlbGYpIC0mZ3Q7IHVzaXplIHsKIC8vLyBDcmVhdGUgYSBhdXhpbGlhcnkgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LgogI1ttYWNyb19leHBvcnRdCiBtYWNyb19ydWxlcyEgYXV4aWxpYXJ5X2RldmljZV90YWJsZSB7Ci0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPSZndDsgewotICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXkmbHQ7Ci0gICAgICAgICAgICAkY3JhdGU6OmF1eGlsaWFyeTo6RGV2aWNlSWQsCi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLAotICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LAotICAgICAgICAmZ3Q7ID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ldygkdGFibGVfZGF0YSk7Ci0KLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlISgmIzM0O2F1eGlsaWFyeSYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTsKJiM0MzsgICAgKCQoJHR0OnR0KSopID0mZ3Q7IHsKJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDthdXhpbGlhcnkmIzM0OywgJGNyYXRlOjphdXhpbGlhcnk6OkRldmljZUlkLCAkKCR0dCkqKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMKaW5kZXggOGU5NzIxNDQ2MDE0NmUuLjVmNGQxOTFmY2U1MTVhIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzCkBAIC01LDcgJiM0Mzs1LDEwIEBACiAvLyEgRWFjaCBidXMgLyBzdWJzeXN0ZW0gdGhhdCBtYXRjaGVzIGRldmljZSBhbmQgZHJpdmVyIHRocm91Z2ggYSBidXMgLyBzdWJzeXN0ZW0gc3BlY2lmaWMgSUQgaXMKIC8vISBleHBlY3RlZCB0byBpbXBsZW1lbnQgW2BSYXdEZXZpY2VJZGBdLgogCi11c2UgY29yZTo6bWVtOjpNYXliZVVuaW5pdDsKJiM0Mzt1c2UgY29yZTo6ewomIzQzOyAgICBtYXJrZXI6OlBoYW50b21EYXRhLAomIzQzOyAgICBtZW06Ok1heWJlVW5pbml0LCAvLwomIzQzO307CiAKIC8vLyBNYXJrZXIgdHJhaXQgdG8gaW5kaWNhdGUgYSBSdXN0IGRldmljZSBJRCB0eXBlIHJlcHJlc2VudHMgYSBjb3JyZXNwb25kaW5nIEMgZGV2aWNlIElEIHR5cGUuCiAvLy8KQEAgLTQ3LDExMiAmIzQzOzUwLDExMCBAQCBwdWIgdW5zYWZlIHRyYWl0IFJhd0RldmljZUlkSW5kZXg6IFJhd0RldmljZUlkIHsKICAgICAvLy8gVGhlIG9mZnNldCAoaW4gYnl0ZXMpIHRvIHRoZSBjb250ZXh0L2RhdGEgZmllbGQgaW4gdGhlIHJhdyBkZXZpY2UgSUQuCiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZTsKIAotICAgIC8vLyBUaGUgaW5kZXggc3RvcmVkIGF0IGBEUklWRVJfREFUQV9PRkZTRVRgIG9mIHRoZSBpbXBsZW1lbnRvciBvZiB0aGUgW2BSYXdEZXZpY2VJZEluZGV4YF0KLSAgICAvLy8gdHJhaXQuCi0gICAgZm4gaW5kZXgoJmFtcDtzZWxmKSAtJmd0OyB1c2l6ZTsKLX0KLQotLy8vIEEgemVyby10ZXJtaW5hdGVkIGRldmljZSBpZCBhcnJheS4KLSNbcmVwcihDKV0KLXB1YiBzdHJ1Y3QgUmF3SWRBcnJheSZsdDtUOiBSYXdEZXZpY2VJZCwgY29uc3QgTjogdXNpemUmZ3Q7IHsKLSAgICBpZHM6IFtUOjpSYXdUeXBlOyBOXSwKLSAgICBzZW50aW5lbDogTWF5YmVVbmluaXQmbHQ7VDo6UmF3VHlwZSZndDssCi19CiYjNDM7ICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgJmFtcDtTZWxmYCBtdXN0IGJlIHN0b3JlZCBpbnNpZGUgYSBgSWRBcnJheSZsdDtTZWxmLCBVJmd0O2AuCiYjNDM7ICAgIHVuc2FmZSBmbiBpbmZvX3VuY2hlY2tlZCZsdDtVJmd0OygmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7JiMzOTtzdGF0aWMgVSB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgdHJhaXQsIHRoaXMgaXMgYHNlbGYuZHJpdmVyX2RhdGEgYXMgKmNvbnN0IFVgIGFuZCBieQomIzQzOyAgICAgICAgLy8gdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgZnVuY3Rpb24sIHRoaXMgaXMgc3RvcmVkIGluIGBJZEFycmF5Jmx0O1NlbGYsIFUmZ3Q7YCBzbyBpcwomIzQzOyAgICAgICAgLy8gY29udmVydGlibGUgdG8gYCZhbXA7JiMzOTtzdGF0aWMgVWAuCiYjNDM7ICAgICAgICB1bnNhZmUgewomIzQzOyAgICAgICAgICAgIGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikKJiM0MzsgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKFNlbGY6OkRSSVZFUl9EQVRBX09GRlNFVCkKJiM0MzsgICAgICAgICAgICAgICAgLmNhc3Q6OiZsdDsmYW1wO1UmZ3Q7KCkKJiM0MzsgICAgICAgICAgICAgICAgLnJlYWQoKQomIzQzOyAgICAgICAgfQomIzQzOyAgICB9CiAKLWltcGwmbHQ7VDogUmF3RGV2aWNlSWQsIGNvbnN0IE46IHVzaXplJmd0OyBSYXdJZEFycmF5Jmx0O1QsIE4mZ3Q7IHsKLSAgICAjW2RvYyhoaWRkZW4pXQotICAgIHB1YiBjb25zdCBmbiBzaXplKCZhbXA7c2VsZikgLSZndDsgdXNpemUgewotICAgICAgICBjb3JlOjptZW06OnNpemVfb2Y6OiZsdDtTZWxmJmd0OygpCiYjNDM7ICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgJmFtcDtTZWxmYCBtdXN0IGJlIHN0b3JlZCBpbnNpZGUgYSBgSWRBcnJheSZsdDtTZWxmLCBVJmd0O2AsIG9yIGhhcyBOVUxMIChvciAwKSBhcyBkcml2ZXIgZGF0YS4KJiM0MzsgICAgdW5zYWZlIGZuIGluZm9fdW5jaGVja2VkX29wdCZsdDtVJmd0OygmYW1wO3NlbGYpIC0mZ3Q7IE9wdGlvbiZsdDsmYW1wOyYjMzk7c3RhdGljIFUmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSB0cmFpdCwgdGhpcyBpcyBgc2VsZi5kcml2ZXJfZGF0YSBhcyAqY29uc3QgVWAgYW5kIGJ5CiYjNDM7ICAgICAgICAvLyB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSBmdW5jdGlvbiwgaWYgdGhpcyBpcyBzdG9yZWQgaW4gYElkQXJyYXkmbHQ7U2VsZiwgVSZndDtgLCB0aGlzIGlzCiYjNDM7ICAgICAgICAvLyBjb252ZXJ0aWJsZSB0byBgT3B0aW9uJmx0OyZhbXA7JiMzOTtzdGF0aWMgVSZndDtgLiBPdGhlcndpc2UgaXQgaXMgTlVMTCB3aGljaCBpcyBgTm9uZWAgYXMKJiM0MzsgICAgICAgIC8vIGBPcHRpb24mbHQ7JmFtcDtVJmd0O2AuCiYjNDM7ICAgICAgICB1bnNhZmUgewomIzQzOyAgICAgICAgICAgIGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikKJiM0MzsgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKFNlbGY6OkRSSVZFUl9EQVRBX09GRlNFVCkKJiM0MzsgICAgICAgICAgICAgICAgLmNhc3Q6OiZsdDtPcHRpb24mbHQ7JmFtcDtVJmd0OyZndDsoKQomIzQzOyAgICAgICAgICAgICAgICAucmVhZCgpCiYjNDM7ICAgICAgICB9CiAgICAgfQogfQogCiAvLy8gQSB6ZXJvLXRlcm1pbmF0ZWQgZGV2aWNlIGlkIGFycmF5LCBmb2xsb3dlZCBieSBjb250ZXh0IGRhdGEuCiAjW3JlcHIoQyldCi1wdWIgc3RydWN0IElkQXJyYXkmbHQ7VDogUmF3RGV2aWNlSWQsIFUsIGNvbnN0IE46IHVzaXplJmd0OyB7Ci0gICAgcmF3X2lkczogUmF3SWRBcnJheSZsdDtULCBOJmd0OywKLSAgICBpZF9pbmZvczogW1U7IE5dLAomIzQzO3B1YiBzdHJ1Y3QgSWRBcnJheSZsdDtUOiBSYXdEZXZpY2VJZCwgVTogJiMzOTtzdGF0aWMsIGNvbnN0IE46IHVzaXplJmd0OyB7CiYjNDM7ICAgIC8vIFRoaXMgaXMgYE1heWJlVW5pbml0Jmx0O1Q6OlJhd1R5cGUmZ3Q7YCBzbyBhbnkgYnl0ZXMgaW5zaWRlIGl0IGNhbiBjYXJyeSBwcm92ZW5hbmNlIGluIENURkUuCiYjNDM7ICAgIC8vIElmIHRoaXMgd2VyZSBgVDo6UmF3VHlwZWAsIGludGVnZXIgZmllbGRzIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGNvbnRhaW4gcG9pbnRlcnMuCiYjNDM7ICAgIGlkczogW01heWJlVW5pbml0Jmx0O1Q6OlJhd1R5cGUmZ3Q7OyBOXSwKJiM0MzsgICAgc2VudGluZWw6IE1heWJlVW5pbml0Jmx0O1Q6OlJhd1R5cGUmZ3Q7LAomIzQzOyAgICBwaGFudG9tOiBQaGFudG9tRGF0YSZsdDsmYW1wOyYjMzk7c3RhdGljIFUmZ3Q7LAogfQogCi1pbXBsJmx0O1Q6IFJhd0RldmljZUlkLCBVLCBjb25zdCBOOiB1c2l6ZSZndDsgSWRBcnJheSZsdDtULCBVLCBOJmd0OyB7CiYjNDM7Ly8gU0FGRVRZOiBkZXZpY2UgSUQgaXMgcGxhaW4gZGF0YSBwbHVzIGEgYCZhbXA7JiMzOTtzdGF0aWMgVWAgYW5kIGNhbiB0aHVzIGJlIHNlbnQgYmV0d2VlbiB0aHJlYWRzIHNhZmVseQomIzQzOy8vIGlmIGAmYW1wO1VgIGNhbi4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBSYXdEZXZpY2VJZCwgVTogU3luYyAmIzQzOyAmIzM5O3N0YXRpYywgY29uc3QgTjogdXNpemUmZ3Q7IFNlbmQgZm9yIElkQXJyYXkmbHQ7VCwgVSwgTiZndDsge30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IGRldmljZSBJRCBpcyBwbGFpbiBkYXRhIHBsdXMgYSBgJmFtcDsmIzM5O3N0YXRpYyBVYCBhbmQgY2FuIHRodXMgYmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyBzYWZlbHkKJiM0MzsvLyBpZiBgJmFtcDtVYCBjYW4uCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogUmF3RGV2aWNlSWQsIFU6IFN5bmMgJiM0MzsgJiMzOTtzdGF0aWMsIGNvbnN0IE46IHVzaXplJmd0OyBTeW5jIGZvciBJZEFycmF5Jmx0O1QsIFUsIE4mZ3Q7IHt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBSYXdEZXZpY2VJZCAmIzQzOyBSYXdEZXZpY2VJZEluZGV4LCBVOiAmIzM5O3N0YXRpYywgY29uc3QgTjogdXNpemUmZ3Q7IElkQXJyYXkmbHQ7VCwgVSwgTiZndDsgewogICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBhcnJheS4KICAgICAvLy8KICAgICAvLy8gVGhlIGNvbnRlbnRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGdpdmVuIGlkZW50aWZpZXJzIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uLgotICAgIC8vLwotICAgIC8vLyAjIFNhZmV0eQotICAgIC8vLwotICAgIC8vLyBgZGF0YV9vZmZzZXRgIGFzIGBOb25lYCBpcyBhbHdheXMgc2FmZS4KLSAgICAvLy8gSWYgYGRhdGFfb2Zmc2V0YCBpcyBgU29tZShkYXRhX29mZnNldClgLCB0aGVuOgotICAgIC8vLyAtIGBkYXRhX29mZnNldGAgbXVzdCBiZSB0aGUgY29ycmVjdCBvZmZzZXQgKGluIGJ5dGVzKSB0byB0aGUgY29udGV4dC9kYXRhIGZpZWxkCi0gICAgLy8vICAgKGUuZy4sIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkKSB3aXRoaW4gdGhlIHJhdyBkZXZpY2UgSUQgc3RydWN0dXJlLgotICAgIC8vLyAtIFRoZSBmaWVsZCBhdCBgZGF0YV9vZmZzZXRgIG11c3QgYmUgY29ycmVjdGx5IHNpemVkIHRvIGhvbGQgYSBgdXNpemVgLgotICAgIGNvbnN0IHVuc2FmZSBmbiBidWlsZChpZHM6IFsoVCwgVSk7IE5dLCBkYXRhX29mZnNldDogT3B0aW9uJmx0O3VzaXplJmd0OykgLSZndDsgU2VsZiB7CiYjNDM7ICAgIHB1YiBjb25zdCBmbiBuZXcoaWRzOiBbKFQsICZhbXA7JiMzOTtzdGF0aWMgVSk7IE5dKSAtJmd0OyBTZWxmIHsKICAgICAgICAgbGV0IG11dCByYXdfaWRzID0gW2NvbnN0IHsgTWF5YmVVbmluaXQ6OiZsdDtUOjpSYXdUeXBlJmd0Ozo6dW5pbml0KCkgfTsgTl07Ci0gICAgICAgIGxldCBtdXQgaW5mb3MgPSBbY29uc3QgeyBNYXliZVVuaW5pdDo6dW5pbml0KCkgfTsgTl07CiAKICAgICAgICAgbGV0IG11dCBpID0gMHVzaXplOwogICAgICAgICB3aGlsZSBpICZsdDsgTiB7CiAgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkYCwgd2UmIzM5O3JlIGd1YXJhbnRlZWQgdGhhdCBgVGAgaXMKICAgICAgICAgICAgIC8vIGxheW91dC13aXNlIGNvbXBhdGlibGUgd2l0aCBgUmF3VHlwZWAuCiAgICAgICAgICAgICByYXdfaWRzW2ldID0gdW5zYWZlIHsgY29yZTo6bWVtOjp0cmFuc211dGVfY29weSgmYW1wO2lkc1tpXS4wKSB9OwotICAgICAgICAgICAgaWYgbGV0IFNvbWUoZGF0YV9vZmZzZXQpID0gZGF0YV9vZmZzZXQgewotICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGlzIGZ1bmN0aW9uLCB0aGlzIHdvdWxkIGJlIGVmZmVjdGl2ZWx5Ci0gICAgICAgICAgICAgICAgLy8gYHJhd19pZHNbaV0uZHJpdmVyX2RhdGEgPSBpO2AuCi0gICAgICAgICAgICAgICAgdW5zYWZlIHsKLSAgICAgICAgICAgICAgICAgICAgcmF3X2lkc1tpXQotICAgICAgICAgICAgICAgICAgICAgICAgLmFzX211dF9wdHIoKQotICAgICAgICAgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKGRhdGFfb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAgICAgLmNhc3Q6OiZsdDt1c2l6ZSZndDsoKQotICAgICAgICAgICAgICAgICAgICAgICAgLndyaXRlKGkpOwotICAgICAgICAgICAgICAgIH0KJiM0MzsgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkSW5kZXhgLCB0aGlzIHdvdWxkIGJlIGVmZmVjdGl2ZWx5CiYjNDM7ICAgICAgICAgICAgLy8gYHJhd19pZHNbaV0uZHJpdmVyX2RhdGEgPSBpZHNbaV0uMTtgLgomIzQzOyAgICAgICAgICAgIHVuc2FmZSB7CiYjNDM7ICAgICAgICAgICAgICAgIHJhd19pZHNbaV0KJiM0MzsgICAgICAgICAgICAgICAgICAgIC5hc19tdXRfcHRyKCkKJiM0MzsgICAgICAgICAgICAgICAgICAgIC5ieXRlX2FkZChUOjpEUklWRVJfREFUQV9PRkZTRVQpCiYjNDM7ICAgICAgICAgICAgICAgICAgICAuY2FzdDo6Jmx0OyZhbXA7VSZndDsoKQomIzQzOyAgICAgICAgICAgICAgICAgICAgLndyaXRlKGlkc1tpXS4xKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gU0FGRVRZOiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGEgbW92ZTogYGluZm9zW2ldID0gaWRzW2ldLjFgLiBXZSBtYWtlIGEgY29weSBoZXJlIGJ1dAotICAgICAgICAgICAgLy8gbGF0ZXIgZm9yZ2V0IGBpZHNgLgotICAgICAgICAgICAgaW5mb3NbaV0gPSBNYXliZVVuaW5pdDo6bmV3KHVuc2FmZSB7IGNvcmU6OnB0cjo6cmVhZCgmYW1wO2lkc1tpXS4xKSB9KTsKICAgICAgICAgICAgIGkgJiM0Mzs9IDE7CiAgICAgICAgIH0KIAogICAgICAgICBjb3JlOjptZW06OmZvcmdldChpZHMpOwogCiAgICAgICAgIFNlbGYgewotICAgICAgICAgICAgcmF3X2lkczogUmF3SWRBcnJheSB7Ci0gICAgICAgICAgICAgICAgLy8gU0FGRVRZOiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGBhcnJheV9hc3N1bWVfaW5pdGAsIHdoaWNoIGlzIHVuc3RhYmxlLCBzbyB3ZSB1c2UKLSAgICAgICAgICAgICAgICAvLyBgdHJhbnNtdXRlX2NvcHlgIGluc3RlYWQuIFdlIGhhdmUgaW5pdGlhbGl6ZWQgYWxsIGVsZW1lbnRzIG9mIGByYXdfaWRzYCBzbyB0aGlzCi0gICAgICAgICAgICAgICAgLy8gYGFycmF5X2Fzc3VtZV9pbml0YCBpcyBzYWZlLgotICAgICAgICAgICAgICAgIGlkczogdW5zYWZlIHsgY29yZTo6bWVtOjp0cmFuc211dGVfY29weSgmYW1wO3Jhd19pZHMpIH0sCi0gICAgICAgICAgICAgICAgc2VudGluZWw6IE1heWJlVW5pbml0Ojp6ZXJvZWQoKSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBTQUZFVFk6IFdlIGhhdmUgaW5pdGlhbGl6ZWQgYWxsIGVsZW1lbnRzIG9mIGBpbmZvc2Agc28gdGhpcyBgYXJyYXlfYXNzdW1lX2luaXRgIGlzCi0gICAgICAgICAgICAvLyBzYWZlLgotICAgICAgICAgICAgaWRfaW5mb3M6IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoJmFtcDtpbmZvcykgfSwKJiM0MzsgICAgICAgICAgICBpZHM6IHJhd19pZHMsCiYjNDM7ICAgICAgICAgICAgc2VudGluZWw6IE1heWJlVW5pbml0Ojp6ZXJvZWQoKSwKJiM0MzsgICAgICAgICAgICBwaGFudG9tOiBQaGFudG9tRGF0YSwKICAgICAgICAgfQogICAgIH0KJiM0Mzt9CiAKJiM0MztpbXBsJmx0O1Q6IFJhd0RldmljZUlkLCBjb25zdCBOOiB1c2l6ZSZndDsgSWRBcnJheSZsdDtULCAoKSwgTiZndDsgewogICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBhcnJheSB3aXRob3V0IHdyaXRpbmcgaW5kZXggdmFsdWVzLgogICAgIC8vLwogICAgIC8vLyBUaGUgY29udGVudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gaWRlbnRpZmllcnMgYW5kIGNvbnRleHQgaW5mb3JtYXRpb24uCiAgICAgLy8vIElmIHRoZSBkZXZpY2UgaW1wbGVtZW50cyBbYFJhd0RldmljZUlkSW5kZXhgXSwgY29uc2lkZXIgdXNpbmcgW2BJZEFycmF5OjpuZXdgXSBpbnN0ZWFkLgotICAgIHB1YiBjb25zdCBmbiBuZXdfd2l0aG91dF9pbmRleChpZHM6IFsoVCwgVSk7IE5dKSAtJmd0OyBTZWxmIHsKLSAgICAgICAgLy8gU0FGRVRZOiBDYWxsaW5nIGBTZWxmOjpidWlsZGAgd2l0aCBgb2Zmc2V0ID0gTm9uZWAgaXMgYWx3YXlzIHNhZmUsCi0gICAgICAgIC8vIGJlY2F1c2Ugbm8gcmF3IG1lbW9yeSB3cml0ZXMgYXJlIHBlcmZvcm1lZCBpbiB0aGlzIGNhc2UuCi0gICAgICAgIHVuc2FmZSB7IFNlbGY6OmJ1aWxkKGlkcywgTm9uZSkgfQotICAgIH0KLQotICAgIC8vLyBSZWZlcmVuY2UgdG8gdGhlIGNvbnRhaW5lZCBbYFJhd0lkQXJyYXlgXS4KLSAgICBwdWIgY29uc3QgZm4gcmF3X2lkcygmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7UmF3SWRBcnJheSZsdDtULCBOJmd0OyB7Ci0gICAgICAgICZhbXA7c2VsZi5yYXdfaWRzCi0gICAgfQotfQomIzQzOyAgICBwdWIgY29uc3QgZm4gbmV3X3dpdGhvdXRfaW5kZXgoaWRzOiBbVDsgTl0pIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgVGAgaXMgbGF5b3V0LXdpc2UgY29tcGF0aWJsZSB3aXRoIGBUOjpSYXdUeXBlYCwgc28gaXMgdGhlIGFycmF5IG9mIHRoZW0uCiYjNDM7ICAgICAgICBsZXQgcmF3X2lkczogW01heWJlVW5pbml0Jmx0O1Q6OlJhd1R5cGUmZ3Q7OyBOXSA9IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoJmFtcDtpZHMpIH07CiYjNDM7ICAgICAgICBjb3JlOjptZW06OmZvcmdldChpZHMpOwogCi1pbXBsJmx0O1Q6IFJhd0RldmljZUlkICYjNDM7IFJhd0RldmljZUlkSW5kZXgsIFUsIGNvbnN0IE46IHVzaXplJmd0OyBJZEFycmF5Jmx0O1QsIFUsIE4mZ3Q7IHsKLSAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXJyYXkuCi0gICAgLy8vCi0gICAgLy8vIFRoZSBjb250ZW50cyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBpZGVudGlmaWVycyBhbmQgY29udGV4dCBpbmZvcm1hdGlvbi4KLSAgICBwdWIgY29uc3QgZm4gbmV3KGlkczogWyhULCBVKTsgTl0pIC0mZ3Q7IFNlbGYgewotICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkSW5kZXhgLAotICAgICAgICAvLyBgVDo6RFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyBndWFyYW50ZWVkIHRvIGJlIHRoZSBjb3JyZWN0IG9mZnNldCAoaW4gYnl0ZXMpIHRvCi0gICAgICAgIC8vIGEgZmllbGQgd2l0aGluIGBUOjpSYXdUeXBlYC4KLSAgICAgICAgdW5zYWZlIHsgU2VsZjo6YnVpbGQoaWRzLCBTb21lKFQ6OkRSSVZFUl9EQVRBX09GRlNFVCkpIH0KJiM0MzsgICAgICAgIFNlbGYgewomIzQzOyAgICAgICAgICAgIGlkczogcmF3X2lkcywKJiM0MzsgICAgICAgICAgICBzZW50aW5lbDogTWF5YmVVbmluaXQ6Onplcm9lZCgpLAomIzQzOyAgICAgICAgICAgIHBoYW50b206IFBoYW50b21EYXRhLAomIzQzOyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTY1LDEyICYjNDM7MTY2LDYgQEAgaW1wbCZsdDtUOiBSYXdEZXZpY2VJZCAmIzQzOyBSYXdEZXZpY2VJZEluZGV4LCBVLCBjb25zdCBOOiB1c2l6ZSZndDsgSWRBcnJheSZsdDtULCBVLCBOJmd0OyB7CiBwdWIgdHJhaXQgSWRUYWJsZSZsdDtUOiBSYXdEZXZpY2VJZCwgVSZndDsgewogICAgIC8vLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIElEIHRhYmxlLgogICAgIGZuIGFzX3B0cigmYW1wO3NlbGYpIC0mZ3Q7ICpjb25zdCBUOjpSYXdUeXBlOwotCi0gICAgLy8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgYnVzIHNwZWNpZmljIGRldmljZSBJRCBmcm9tIGFuIGluZGV4LgotICAgIGZuIGlkKCZhbXA7c2VsZiwgaW5kZXg6IHVzaXplKSAtJmd0OyAmYW1wO1Q6OlJhd1R5cGU7Ci0KLSAgICAvLy8gT2J0YWluIHRoZSBwb2ludGVyIHRvIHRoZSBkcml2ZXItc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSBhbiBpbmRleC4KLSAgICBmbiBpbmZvKCZhbXA7c2VsZiwgaW5kZXg6IHVzaXplKSAtJmd0OyAmYW1wO1U7CiB9CiAKIGltcGwmbHQ7VDogUmF3RGV2aWNlSWQsIFUsIGNvbnN0IE46IHVzaXplJmd0OyBJZFRhYmxlJmx0O1QsIFUmZ3Q7IGZvciBJZEFycmF5Jmx0O1QsIFUsIE4mZ3Q7IHsKQEAgLTE3OSwyOCAmIzQzOzE3NCw1NiBAQCBmbiBhc19wdHIoJmFtcDtzZWxmKSAtJmd0OyAqY29uc3QgVDo6UmF3VHlwZSB7CiAgICAgICAgIC8vIHRvIGFjY2VzcyB0aGUgc2VudGluZWwuCiAgICAgICAgIGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikuY2FzdCgpCiAgICAgfQotCi0gICAgZm4gaWQoJmFtcDtzZWxmLCBpbmRleDogdXNpemUpIC0mZ3Q7ICZhbXA7VDo6UmF3VHlwZSB7Ci0gICAgICAgICZhbXA7c2VsZi5yYXdfaWRzLmlkc1tpbmRleF0KLSAgICB9Ci0KLSAgICBmbiBpbmZvKCZhbXA7c2VsZiwgaW5kZXg6IHVzaXplKSAtJmd0OyAmYW1wO1UgewotICAgICAgICAmYW1wO3NlbGYuaWRfaW5mb3NbaW5kZXhdCi0gICAgfQogfQogCiAvLy8gQ3JlYXRlIGRldmljZSB0YWJsZSBhbGlhcyBmb3IgbW9kcG9zdC4KICNbbWFjcm9fZXhwb3J0XQogbWFjcm9fcnVsZXMhIG1vZHVsZV9kZXZpY2VfdGFibGUgewotICAgICgkdGFibGVfdHlwZTogbGl0ZXJhbCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkdGFibGVfbmFtZTppZGVudCkgPSZndDsgewotICAgICAgICAjW3J1c3RmbXQ6OnNraXBdCiYjNDM7ICAgICgKJiM0MzsgICAgICAgICR0YWJsZV90eXBlOiBsaXRlcmFsLCAkZGV2aWNlX2lkX3R5OiB0eSwKJiM0MzsgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgJGlkX2luZm9fdHlwZTogdHksCiYjNDM7ICAgICAgICBbJCgoJGlkOiBleHByLCAkaW5mbzpleHByICQoLCk/KSksKiAkKCwpP10KJiM0MzsgICAgKSA9Jmd0OyB7CiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKAomIzQzOyAgICAgICAgICAgICR0YWJsZV90eXBlLCAkZGV2aWNlX2lkX3R5LCAkdGFibGVfbmFtZSwgJGlkX2luZm9fdHlwZSwKJiM0MzsgICAgICAgICAgICB7JCgkaWQ9Jmd0OyRpbmZvLCkqfQomIzQzOyAgICAgICAgKTsKJiM0MzsgICAgfTsKJiM0MzsKJiM0MzsgICAgKAomIzQzOyAgICAgICAgJHRhYmxlX3R5cGU6IGxpdGVyYWwsICRkZXZpY2VfaWRfdHk6IHR5LAomIzQzOyAgICAgICAgJHRhYmxlX25hbWU6IGlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwKJiM0MzsgICAgICAgIHskKCRpZDogZXhwciA9Jmd0OyAkaW5mbzpleHByKSwqICQoLCk/fQomIzQzOyAgICApID0mZ3Q7IHsKJiM0MzsgICAgICAgICNbZXhwb3J0X25hbWUgPQomIzQzOyAgICAgICAgICAgIGNvbmNhdCEoJiMzNDtfX21vZF9kZXZpY2VfdGFibGVfXyYjMzQ7LCA6OmNvcmU6OmxpbmUhKCksCiYjNDM7ICAgICAgICAgICAgICAgICAgICAmIzM0O19fa21vZF8mIzM0OywgbW9kdWxlX3BhdGghKCksCiYjNDM7ICAgICAgICAgICAgICAgICAgICAmIzM0O19fJiMzNDssICR0YWJsZV90eXBlLAomIzQzOyAgICAgICAgICAgICAgICAgICAgJiMzNDtfXyYjMzQ7LCBzdHJpbmdpZnkhKCR0YWJsZV9uYW1lKSkKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgICAgIHN0YXRpYyAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXkmbHQ7CiYjNDM7ICAgICAgICAgICAgJGRldmljZV9pZF90eSwKJiM0MzsgICAgICAgICAgICAkaWRfaW5mb190eXBlLAomIzQzOyAgICAgICAgICAgIHsgJmx0O1skZGV2aWNlX2lkX3R5XSZndDs6OmxlbigmYW1wO1skKCRpZCwpKl0pIH0sCiYjNDM7ICAgICAgICAmZ3Q7ID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ldyhbJCgoJGlkLCAmYW1wOyRpbmZvKSwpKl0pOwomIzQzOyAgICB9OwomIzQzOwomIzQzOyAgICAvLyBDYXNlIGZvciBubyBJRCBpbmZvLgomIzQzOyAgICAoCiYjNDM7ICAgICAgICAkdGFibGVfdHlwZTogbGl0ZXJhbCwgJGRldmljZV9pZF90eTogdHksCiYjNDM7ICAgICAgICAkdGFibGVfbmFtZTogaWRlbnQsIEBub25lLAomIzQzOyAgICAgICAgWyQoJGlkOiBleHByKSwqICQoLCk/XQomIzQzOyAgICApID0mZ3Q7IHsKICAgICAgICAgI1tleHBvcnRfbmFtZSA9Ci0gICAgICAgICAgICBjb25jYXQhKCYjMzQ7X19tb2RfZGV2aWNlX3RhYmxlX18mIzM0OywgbGluZSEoKSwKJiM0MzsgICAgICAgICAgICBjb25jYXQhKCYjMzQ7X19tb2RfZGV2aWNlX3RhYmxlX18mIzM0OywgOjpjb3JlOjpsaW5lISgpLAogICAgICAgICAgICAgICAgICAgICAmIzM0O19fa21vZF8mIzM0OywgbW9kdWxlX3BhdGghKCksCiAgICAgICAgICAgICAgICAgICAgICYjMzQ7X18mIzM0OywgJHRhYmxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICYjMzQ7X18mIzM0Oywgc3RyaW5naWZ5ISgkdGFibGVfbmFtZSkpCiAgICAgICAgIF0KLSAgICAgICAgc3RhdGljICRtb2R1bGVfdGFibGVfbmFtZTogWzo6Y29yZTo6bWVtOjpNYXliZVVuaW5pdCZsdDt1OCZndDs7ICR0YWJsZV9uYW1lLnJhd19pZHMoKS5zaXplKCldID0KLSAgICAgICAgICAgIHVuc2FmZSB7IDo6Y29yZTo6bWVtOjp0cmFuc211dGVfY29weSgkdGFibGVfbmFtZS5yYXdfaWRzKCkpIH07CiYjNDM7ICAgICAgICBzdGF0aWMgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5Jmx0OwomIzQzOyAgICAgICAgICAgICRkZXZpY2VfaWRfdHksCiYjNDM7ICAgICAgICAgICAgKCksCiYjNDM7ICAgICAgICAgICAgeyAmbHQ7WyRkZXZpY2VfaWRfdHldJmd0Ozo6bGVuKCZhbXA7WyQoJGlkLCkqXSkgfSwKJiM0MzsgICAgICAgICZndDsgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXgoWyQoJGlkKSwqXSk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RyaXZlci5ycyBiL3J1c3Qva2VybmVsL2RyaXZlci5ycwppbmRleCBiZjViYTBkMjc1NTNlZC4uYzljNzRjNGRkZThmYTcgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RyaXZlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kcml2ZXIucnMKQEAgLTI5MSwyNiAmIzQzOzI5MSw2IEBAIGZuIGluaXQoCiAgICAgfQogfQogCi0vLyBDYWxsaW5nIHRoZSBGRkkgZnVuY3Rpb24gZGlyZWN0bHkgZnJvbSB0aGUgYEFkYXB0ZXJgIGltcGwgbWF5IHJlc3VsdCBpbiBpdCBiZWluZyBjYWxsZWQKLS8vIGRpcmVjdGx5IGZyb20gZHJpdmVyIG1vZHVsZXMuIFRoaXMgaGFwcGVucyBzaW5jZSB0aGUgUnVzdCBjb21waWxlciB3aWxsIHVzZSBtb25vbW9ycGhpc2F0aW9uLCBzbwotLy8gaXQgbWlnaHQgaGFwcGVuIHRoYXQgZnVuY3Rpb25zIGFyZSBpbnN0YW50aWF0ZWQgd2l0aGluIHRoZSBjYWxsaW5nIGRyaXZlciBtb2R1bGUuIEZvciBub3csIHdvcmsKLS8vIGFyb3VuZCB0aGlzIHdpdGggYCNbaW5saW5lKG5ldmVyKV1gIGhlbHBlcnMuCi0vLwotLy8gVE9ETzogUmVtb3ZlIG9uY2UgYSBtb3JlIGdlbmVyaWMgc29sdXRpb24gaGFzIGJlZW4gaW1wbGVtZW50ZWQuIEZvciBpbnN0YW5jZSwgd2UgbWF5IGJlIGFibGUgdG8KLS8vIGxldmVyYWdlIGBiaW5kZ2VuYCB0byB0YWtlIGNhcmUgb2YgdGhpcyBkZXBlbmRpbmcgb24gd2hldGhlciBhIHN5bWJvbCBpcyAoYWxyZWFkeSkgZXhwb3J0ZWQuCi0jW2lubGluZShuZXZlcildCi0jW2FsbG93KGNsaXBweTo6bWlzc2luZ19zYWZldHlfZG9jKV0KLSNbYWxsb3coZGVhZF9jb2RlKV0KLSNbbXVzdF91c2VdCi11bnNhZmUgZm4gYWNwaV9vZl9tYXRjaF9kZXZpY2UoCi0gICAgYWRldjogKmNvbnN0IGJpbmRpbmdzOjphY3BpX2RldmljZSwKLSAgICBvZl9tYXRjaF90YWJsZTogKmNvbnN0IGJpbmRpbmdzOjpvZl9kZXZpY2VfaWQsCi0gICAgb2ZfaWQ6ICptdXQgKmNvbnN0IGJpbmRpbmdzOjpvZl9kZXZpY2VfaWQsCi0pIC0mZ3Q7IGJvb2wgewotICAgIC8vIFNBRkVUWTogU2FmZXR5IHJlcXVpcmVtZW50cyBhcmUgdGhlIHNhbWUgYXMgYGJpbmRpbmdzOjphY3BpX29mX21hdGNoX2RldmljZWAuCi0gICAgdW5zYWZlIHsgYmluZGluZ3M6OmFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGFkZXYsIG9mX21hdGNoX3RhYmxlLCBvZl9pZCkgfQotfQotCiAvLy8gVGhlIGJ1cyBpbmRlcGVuZGVudCBhZGFwdGVyIHRvIG1hdGNoIGEgZHJpdmVycyBhbmQgYSBkZXZpY2VzLgogLy8vCiAvLy8gVGhpcyB0cmFpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGJ1cyBzcGVjaWZpYyBhZGFwdGVyLCB3aGljaCByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uCkBAIC0zMjQsMTE4ICYjNDM7MzA0LDIzIEBAIHB1YiB0cmFpdCBBZGFwdGVyIHsKICAgICAvLy8gVGhlIFtgYWNwaTo6SWRUYWJsZWBdIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlcgogICAgIGZuIGFjcGlfaWRfdGFibGUoKSAtJmd0OyBPcHRpb24mbHQ7YWNwaTo6SWRUYWJsZSZsdDtTZWxmOjpJZEluZm8mZ3Q7Jmd0OzsKIAotICAgIC8vLyBSZXR1cm5zIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYGFjcGk6OklkVGFibGVgXSwgaWYgYW55LgotICAgIC8vLwotICAgIC8vLyBJZiB0aGlzIHJldHVybnMgYE5vbmVgLCBpdCBtZWFucyB0aGVyZSBpcyBubyBtYXRjaCB3aXRoIGFuIGVudHJ5IGluIHRoZSBbYGFjcGk6OklkVGFibGVgXS4KLSAgICBmbiBhY3BpX2lkX2luZm8oZGV2OiAmYW1wO2RldmljZTo6RGV2aWNlKSAtJmd0OyBPcHRpb24mbHQ7JmFtcDsmIzM5O3N0YXRpYyBTZWxmOjpJZEluZm8mZ3Q7IHsKLSAgICAgICAgI1tjZmcobm90KENPTkZJR19BQ1BJKSldCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxldCBfID0gZGV2OwotICAgICAgICAgICAgTm9uZQotICAgICAgICB9Ci0KLSAgICAgICAgI1tjZmcoQ09ORklHX0FDUEkpXQotICAgICAgICB7Ci0gICAgICAgICAgICBsZXQgdGFibGUgPSBTZWxmOjphY3BpX2lkX3RhYmxlKCk/OwotCi0gICAgICAgICAgICAvLyBTQUZFVFk6Ci0gICAgICAgICAgICAvLyAtIGB0YWJsZWAgaGFzIHN0YXRpYyBsaWZldGltZSwgaGVuY2UgaXQmIzM5O3MgdmFsaWQgZm9yIHJlYWQsCi0gICAgICAgICAgICAvLyAtIGBkZXZgIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgd2hpbGUgaXQmIzM5O3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC4KLSAgICAgICAgICAgIGxldCByYXdfaWQgPSB1bnNhZmUgeyBiaW5kaW5nczo6YWNwaV9tYXRjaF9kZXZpY2UodGFibGUuYXNfcHRyKCksIGRldi5hc19yYXcoKSkgfTsKLQotICAgICAgICAgICAgaWYgcmF3X2lkLmlzX251bGwoKSB7Ci0gICAgICAgICAgICAgICAgTm9uZQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBhY3BpX2RldmljZV9pZGAKLSAgICAgICAgICAgICAgICAvLyBhbmQgZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuCi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgJmFtcDsqcmF3X2lkLmNhc3Q6OiZsdDthY3BpOjpEZXZpY2VJZCZndDsoKSB9OwotCi0gICAgICAgICAgICAgICAgU29tZSh0YWJsZS5pbmZvKCZsdDthY3BpOjpEZXZpY2VJZCBhcyBjcmF0ZTo6ZGV2aWNlX2lkOjpSYXdEZXZpY2VJZEluZGV4Jmd0Ozo6aW5kZXgoaWQpKSkKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vLyBUaGUgW2BvZjo6SWRUYWJsZWBdIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlci4KICAgICBmbiBvZl9pZF90YWJsZSgpIC0mZ3Q7IE9wdGlvbiZsdDtvZjo6SWRUYWJsZSZsdDtTZWxmOjpJZEluZm8mZ3Q7Jmd0OzsKIAotICAgIC8vLyBSZXR1cm5zIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYG9mOjpJZFRhYmxlYF0sIGlmIGFueS4KLSAgICAvLy8KLSAgICAvLy8gSWYgdGhpcyByZXR1cm5zIGBOb25lYCwgaXQgbWVhbnMgdGhlcmUgaXMgbm8gbWF0Y2ggd2l0aCBhbiBlbnRyeSBpbiB0aGUgW2BvZjo6SWRUYWJsZWBdLgotICAgIGZuIG9mX2lkX2luZm8oZGV2OiAmYW1wO2RldmljZTo6RGV2aWNlKSAtJmd0OyBPcHRpb24mbHQ7JmFtcDsmIzM5O3N0YXRpYyBTZWxmOjpJZEluZm8mZ3Q7IHsKLSAgICAgICAgbGV0IHRhYmxlID0gU2VsZjo6b2ZfaWRfdGFibGUoKT87Ci0KLSAgICAgICAgI1tjZmcobm90KGFueShDT05GSUdfT0YsIENPTkZJR19BQ1BJKSkpXQotICAgICAgICB7Ci0gICAgICAgICAgICBsZXQgXyA9IChkZXYsIHRhYmxlKTsKLSAgICAgICAgfQotCi0gICAgICAgICNbY2ZnKENPTkZJR19PRildCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFNBRkVUWToKLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCYjMzk7cyB2YWxpZCBmb3IgcmVhZCwKLSAgICAgICAgICAgIC8vIC0gYGRldmAgaXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB3aGlsZSBpdCYjMzk7cyBhbGl2ZSwgYW5kIHNvIGlzIGBkZXYuYXNfcmF3KClgLgotICAgICAgICAgICAgbGV0IHJhd19pZCA9IHVuc2FmZSB7IGJpbmRpbmdzOjpvZl9tYXRjaF9kZXZpY2UodGFibGUuYXNfcHRyKCksIGRldi5hc19yYXcoKSkgfTsKLQotICAgICAgICAgICAgaWYgIXJhd19pZC5pc19udWxsKCkgewotICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogYERldmljZUlkYCBpcyBhIGAjW3JlcHIodHJhbnNwYXJlbnQpXWAgd3JhcHBlciBvZiBgc3RydWN0IG9mX2RldmljZV9pZGAKLSAgICAgICAgICAgICAgICAvLyBhbmQgZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuCi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgJmFtcDsqcmF3X2lkLmNhc3Q6OiZsdDtvZjo6RGV2aWNlSWQmZ3Q7KCkgfTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBTb21lKHRhYmxlLmluZm8oCi0gICAgICAgICAgICAgICAgICAgICZsdDtvZjo6RGV2aWNlSWQgYXMgY3JhdGU6OmRldmljZV9pZDo6UmF3RGV2aWNlSWRJbmRleCZndDs6OmluZGV4KGlkKSwKLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICNbY2ZnKENPTkZJR19BQ1BJKV0KLSAgICAgICAgewotICAgICAgICAgICAgdXNlIGNvcmU6OnB0cjsKLSAgICAgICAgICAgIHVzZSBkZXZpY2U6OnByb3BlcnR5OjpGd05vZGU7Ci0KLSAgICAgICAgICAgIGxldCBtdXQgcmF3X2lkID0gcHRyOjpudWxsKCk7Ci0KLSAgICAgICAgICAgIGxldCBmd25vZGUgPSBkZXYuZndub2RlKCkubWFwX29yKHB0cjo6bnVsbF9tdXQoKSwgRndOb2RlOjphc19yYXcpOwotCi0gICAgICAgICAgICAvLyBTQUZFVFk6IGBmd25vZGVgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkIGBmd25vZGVfaGFuZGxlYC4gQSBudWxsIHBvaW50ZXIgd2lsbCBiZQotICAgICAgICAgICAgLy8gcGFzc2VkIHRocm91Z2ggdGhlIGZ1bmN0aW9uLgotICAgICAgICAgICAgbGV0IGFkZXYgPSB1bnNhZmUgeyBiaW5kaW5nczo6dG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpIH07Ci0KLSAgICAgICAgICAgIC8vIFNBRkVUWToKLSAgICAgICAgICAgIC8vIC0gYGFkZXZgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgYWNwaV9kZXZpY2VgIG9yIGlzIG51bGwuIEl0IGlzIGd1YXJhbnRlZWQgdG8gYmUKLSAgICAgICAgICAgIC8vICAgdmFsaWQgYXMgbG9uZyBhcyBgZGV2YCBpcyBhbGl2ZS4KLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCYjMzk7cyB2YWxpZCBmb3IgcmVhZC4KLSAgICAgICAgICAgIGlmIHVuc2FmZSB7IGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGFkZXYsIHRhYmxlLmFzX3B0cigpLCAmYW1wO3JhdyBtdXQgcmF3X2lkKSB9IHsKLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6Ci0gICAgICAgICAgICAgICAgLy8gLSB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVyZWZvcmUgYHJhd19pZGAgaGFzIGJlZW4gc2V0IHRvIGEgcG9pbnRlciB0byBhCi0gICAgICAgICAgICAgICAgLy8gICB2YWxpZCBgb2ZfZGV2aWNlX2lkYC4KLSAgICAgICAgICAgICAgICAvLyAtIGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBvZl9kZXZpY2VfaWRgCi0gICAgICAgICAgICAgICAgLy8gICBhbmQgZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuCi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgJmFtcDsqcmF3X2lkLmNhc3Q6OiZsdDtvZjo6RGV2aWNlSWQmZ3Q7KCkgfTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBTb21lKHRhYmxlLmluZm8oCi0gICAgICAgICAgICAgICAgICAgICZsdDtvZjo6RGV2aWNlSWQgYXMgY3JhdGU6OmRldmljZV9pZDo6UmF3RGV2aWNlSWRJbmRleCZndDs6OmluZGV4KGlkKSwKLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIE5vbmUKLSAgICB9Ci0KICAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBmcm9tIHRoZSBtYXRjaGluZyBlbnRyeSBvZiBhbnkgb2YgdGhlIElEIHRhYmxlcywgaWYgYW55LgogICAgIC8vLwogICAgIC8vLyBJZiB0aGlzIHJldHVybnMgYE5vbmVgLCBpdCBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIG1hdGNoIGluIGFueSBvZiB0aGUgSUQgdGFibGVzIGRpcmVjdGx5CiAgICAgLy8vIGFzc29jaWF0ZWQgd2l0aCBhIFtgZGV2aWNlOjpEZXZpY2VgXS4KLSAgICBmbiBpZF9pbmZvKGRldjogJmFtcDtkZXZpY2U6OkRldmljZSkgLSZndDsgT3B0aW9uJmx0OyZhbXA7JiMzOTtzdGF0aWMgU2VsZjo6SWRJbmZvJmd0OyB7Ci0gICAgICAgIGxldCBpZCA9IFNlbGY6OmFjcGlfaWRfaW5mbyhkZXYpOwotICAgICAgICBpZiBpZC5pc19zb21lKCkgewotICAgICAgICAgICAgcmV0dXJuIGlkOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGlkID0gU2VsZjo6b2ZfaWRfaW5mbyhkZXYpOwotICAgICAgICBpZiBpZC5pc19zb21lKCkgewotICAgICAgICAgICAgcmV0dXJuIGlkOwotICAgICAgICB9Ci0KLSAgICAgICAgTm9uZQomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vICMgU2FmZXR5CiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IHRoZSBgZGV2YCBtYXRjaGVkIGRhdGEgaXMgb2YgdHlwZSBgU2VsZjo6SWRJbmZvYC4KJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBpZF9pbmZvKGRldjogJmFtcDtkZXZpY2U6OkRldmljZSkgLSZndDsgT3B0aW9uJmx0OyZhbXA7JiMzOTtzdGF0aWMgU2VsZjo6SWRJbmZvJmd0OyB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IGBkZXZgIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgd2hpbGUgaXQmIzM5O3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC4KJiM0MzsgICAgICAgIGxldCBkYXRhID0gdW5zYWZlIHsgYmluZGluZ3M6OmRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYuYXNfcmF3KCkpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFBlciBzYWZldHkgcmVxdWlyZW1lbnQsIGBkYXRhYCBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLgomIzQzOyAgICAgICAgdW5zYWZlIHsgZGF0YS5jYXN0OjombHQ7U2VsZjo6SWRJbmZvJmd0OygpLmFzX3JlZigpIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9pMmMucnMgYi9ydXN0L2tlcm5lbC9pMmMucnMKaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjJkMjE5MTE2NGUyNTJjIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9pMmMucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvaTJjLnJzCkBAIC02NSwxMCAmIzQzOzY1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHsKIC8vIFNBRkVUWTogYERSSVZFUl9EQVRBX09GRlNFVGAgaXMgdGhlIG9mZnNldCB0byB0aGUgYGRyaXZlcl9kYXRhYCBmaWVsZC4KIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHsKICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID0gY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjppMmNfZGV2aWNlX2lkLCBkcml2ZXJfZGF0YSk7Ci0KLSAgICBmbiBpbmRleCgmYW1wO3NlbGYpIC0mZ3Q7IHVzaXplIHsKLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhCi0gICAgfQogfQogCiAvLy8gSWRUYWJsZSB0eXBlIGZvciBJMkMKQEAgLTc3LDE0ICYjNDM7NzMsOCBAQCBmbiBpbmRleCgmYW1wO3NlbGYpIC0mZ3Q7IHVzaXplIHsKIC8vLyBDcmVhdGUgYSBJMkMgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LgogI1ttYWNyb19leHBvcnRdCiBtYWNyb19ydWxlcyEgaTJjX2RldmljZV90YWJsZSB7Ci0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPSZndDsgewotICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXkmbHQ7Ci0gICAgICAgICAgICAkY3JhdGU6OmkyYzo6RGV2aWNlSWQsCi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLAotICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LAotICAgICAgICAmZ3Q7ID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ldygkdGFibGVfZGF0YSk7Ci0KLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlISgmIzM0O2kyYyYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTsKJiM0MzsgICAgKCQoJHR0OnR0KSopID0mZ3Q7IHsKJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDtpMmMmIzM0OywgJGNyYXRlOjppMmM6OkRldmljZUlkLCAkKCR0dCkqKTsKICAgICB9OwogfQogCkBAIC0xNTksOCAmIzQzOzE0OSwxMCBAQCBleHRlcm4gJiMzNDtDJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soaWRldjogKm11dCBiaW5kaW5nczo6aTJjX2NsaWVudCkgLSZndDsga2VybmVsOjpmZmk6OmNfCiAgICAgICAgIC8vIElOVkFSSUFOVDogYGlkZXZgIGlzIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYHByb2JlX2NhbGxiYWNrKClgLgogICAgICAgICBsZXQgaWRldiA9IHVuc2FmZSB7ICZhbXA7KmlkZXYuY2FzdDo6Jmx0O0kyY0NsaWVudCZsdDtkZXZpY2U6OkNvcmVJbnRlcm5hbCZsdDsmIzM5O18mZ3Q7Jmd0OyZndDsoKSB9OwogCi0gICAgICAgIGxldCBpbmZvID0KLSAgICAgICAgICAgIFNlbGY6OmkyY19pZF9pbmZvKGlkZXYpLm9yX2Vsc2UofHwgJmx0O1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyJmd0Ozo6aWRfaW5mbyhpZGV2LmFzX3JlZigpKSk7CiYjNDM7ICAgICAgICBsZXQgaW5mbyA9IFNlbGY6OmkyY19pZF9pbmZvKGlkZXYpLm9yX2Vsc2UofHwgewomIzQzOyAgICAgICAgICAgIC8vIFNBRkVUWTogYGlkZXZgIG1hdGNoZWQgZGF0YSBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLgomIzQzOyAgICAgICAgICAgIHVuc2FmZSB7ICZsdDtTZWxmIGFzIGRyaXZlcjo6QWRhcHRlciZndDs6OmlkX2luZm8oaWRldi5hc19yZWYoKSkgfQomIzQzOyAgICAgICAgfSk7CiAKICAgICAgICAgZnJvbV9yZXN1bHQofHwgewogICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShpZGV2LCBpbmZvKTsKQEAgLTIxOCw3ICYjNDM7MjEwLDggQEAgZm4gaTJjX2lkX2luZm8oZGV2OiAmYW1wO0kyY0NsaWVudCkgLSZndDsgT3B0aW9uJmx0OyZhbXA7JiMzOTtzdGF0aWMgJmx0O1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyJmd0Ozo6SWQKICAgICAgICAgLy8gZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQmIzM5O3Mgc2FmZSB0byB0cmFuc211dGUuCiAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7ICZhbXA7KnJhd19pZC5jYXN0OjombHQ7RGV2aWNlSWQmZ3Q7KCkgfTsKIAotICAgICAgICBTb21lKHRhYmxlLmluZm8oJmx0O0RldmljZUlkIGFzIFJhd0RldmljZUlkSW5kZXgmZ3Q7OjppbmRleChpZCkpKQomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYHRhYmxlYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5Jmx0O18sIFNlbGY6OklkSW5mbyZndDtgLgomIzQzOyAgICAgICAgU29tZSh1bnNhZmUgeyBpZC5pbmZvX3VuY2hlY2tlZDo6Jmx0O1Q6OklkSW5mbyZndDsoKSB9KQogICAgIH0KIH0KIApAQCAtMjY3LDcgJiM0MzsyNjAsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX2kyY19kcml2ZXIgewogLy8vCiAvLy8ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoCiAvLy8gICAgIEFDUElfVEFCTEUsCi0vLy8gICAgIE1PRFVMRV9BQ1BJX1RBQkxFLAogLy8vICAgICAmbHQ7TXlEcml2ZXIgYXMgaTJjOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAvLy8gICAgIFsKIC8vLyAgICAgICAgIChhY3BpOjpEZXZpY2VJZDo6bmV3KGMmIzM0O0xOVVhCRUVGJiMzNDspLCAoKSkKQEAgLTI3Niw3ICYjNDM7MjY4LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9pMmNfZHJpdmVyIHsKIC8vLwogLy8vIGtlcm5lbDo6aTJjX2RldmljZV90YWJsZSEoCiAvLy8gICAgIEkyQ19UQUJMRSwKLS8vLyAgICAgTU9EVUxFX0kyQ19UQUJMRSwKIC8vLyAgICAgJmx0O015RHJpdmVyIGFzIGkyYzo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogLy8vICAgICBbCiAvLy8gICAgICAgICAgKGkyYzo6RGV2aWNlSWQ6Om5ldyhjJiMzNDtydXN0X2RyaXZlcl9pMmMmIzM0OyksICgpKQpAQCAtMjg1LDcgJiM0MzsyNzYsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX2kyY19kcml2ZXIgewogLy8vCiAvLy8ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKAogLy8vICAgICBPRl9UQUJMRSwKLS8vLyAgICAgTU9EVUxFX09GX1RBQkxFLAogLy8vICAgICAmbHQ7TXlEcml2ZXIgYXMgaTJjOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAvLy8gICAgIFsKIC8vLyAgICAgICAgIChvZjo6RGV2aWNlSWQ6Om5ldyhjJiMzNDt0ZXN0LGRldmljZSYjMzQ7KSwgKCkpCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwppbmRleCAzY2E5OWRiNWNjY2YyMi4uMWU4NmI5MDFjMzkxYmQgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL25ldC9waHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwpAQCAtODAwLDYyICYjNDM7ODAwLDYgQEAgY29uc3QgZm4gYXNfaW50KCZhbXA7c2VsZikgLSZndDsgdTMyIHsKIC8vLyB9CiAvLy8gIyB9CiAvLy8gYGBgCi0vLy8KLS8vLyBUaGlzIGV4cGFuZHMgdG8gdGhlIGZvbGxvd2luZyBjb2RlOgotLy8vCi0vLy8gYGBgaWdub3JlCi0vLy8gdXNlIGtlcm5lbDo6bmV0OjpwaHk6OntzZWxmLCBEZXZpY2VJZH07Ci0vLy8gdXNlIGtlcm5lbDo6cHJlbHVkZTo6KjsKLS8vLwotLy8vIHN0cnVjdCBNb2R1bGUgewotLy8vICAgICBfcmVnOiA6Omtlcm5lbDo6bmV0OjpwaHk6OlJlZ2lzdHJhdGlvbiwKLS8vLyB9Ci0vLy8KLS8vLyBtb2R1bGUhIHsKLS8vLyAgICAgdHlwZTogTW9kdWxlLAotLy8vICAgICBuYW1lOiAmIzM0O3J1c3Rfc2FtcGxlX3BoeSYjMzQ7LAotLy8vICAgICBhdXRob3JzOiBbJiMzNDtSdXN0IGZvciBMaW51eCBDb250cmlidXRvcnMmIzM0O10sCi0vLy8gICAgIGRlc2NyaXB0aW9uOiAmIzM0O1J1c3Qgc2FtcGxlIFBIWXMgZHJpdmVyJiMzNDssCi0vLy8gICAgIGxpY2Vuc2U6ICYjMzQ7R1BMJiMzNDssCi0vLy8gfQotLy8vCi0vLy8gc3RydWN0IFBoeVNhbXBsZTsKLS8vLwotLy8vICNbdnRhYmxlXQotLy8vIGltcGwgcGh5OjpEcml2ZXIgZm9yIFBoeVNhbXBsZSB7Ci0vLy8gICAgIGNvbnN0IE5BTUU6ICZhbXA7JiMzOTtzdGF0aWMgQ1N0ciA9IGMmIzM0O1BoeVNhbXBsZSYjMzQ7OwotLy8vICAgICBjb25zdCBQSFlfREVWSUNFX0lEOiBwaHk6OkRldmljZUlkID0gcGh5OjpEZXZpY2VJZDo6bmV3X3dpdGhfZXhhY3RfbWFzaygweDAwMDAwMDAxKTsKLS8vLyB9Ci0vLy8KLS8vLyBjb25zdCBfOiAoKSA9IHsKLS8vLyAgICAgc3RhdGljIG11dCBEUklWRVJTOiBbOjprZXJuZWw6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7IDFdID0KLS8vLyAgICAgICAgIFs6Omtlcm5lbDo6bmV0OjpwaHk6OmNyZWF0ZV9waHlfZHJpdmVyOjombHQ7UGh5U2FtcGxlJmd0OygpXTsKLS8vLwotLy8vICAgICBpbXBsIDo6a2VybmVsOjpNb2R1bGUgZm9yIE1vZHVsZSB7Ci0vLy8gICAgICAgICBmbiBpbml0KG1vZHVsZTogJmFtcDsmIzM5O3N0YXRpYyA6Omtlcm5lbDo6VGhpc01vZHVsZSkgLSZndDsgUmVzdWx0Jmx0O1NlbGYmZ3Q7IHsKLS8vLyAgICAgICAgICAgICBsZXQgZHJpdmVycyA9IHVuc2FmZSB7ICZhbXA7bXV0IERSSVZFUlMgfTsKLS8vLyAgICAgICAgICAgICBsZXQgbXV0IHJlZyA9IDo6a2VybmVsOjpuZXQ6OnBoeTo6UmVnaXN0cmF0aW9uOjpyZWdpc3RlcigKLS8vLyAgICAgICAgICAgICAgICAgbW9kdWxlLAotLy8vICAgICAgICAgICAgICAgICA6OmNvcmU6OnBpbjo6UGluOjpzdGF0aWNfbXV0KGRyaXZlcnMpLAotLy8vICAgICAgICAgICAgICk/OwotLy8vICAgICAgICAgICAgIE9rKE1vZHVsZSB7IF9yZWc6IHJlZyB9KQotLy8vICAgICAgICAgfQotLy8vICAgICB9Ci0vLy8gfTsKLS8vLwotLy8vIGNvbnN0IE46IHVzaXplID0gMTsKLS8vLwotLy8vIGNvbnN0IFRBQkxFOiA6Omtlcm5lbDo6ZGV2aWNlX2lkOjpJZEFycmF5Jmx0Ozo6a2VybmVsOjpuZXQ6OnBoeTo6RGV2aWNlSWQsICgpLCBOJmd0OyA9Ci0vLy8gICAgIDo6a2VybmVsOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ld193aXRob3V0X2luZGV4KFsKLS8vLyAgICAgICAgIDo6a2VybmVsOjpuZXQ6OnBoeTo6RGV2aWNlSWQoCi0vLy8gICAgICAgICAgICAgOjprZXJuZWw6OmJpbmRpbmdzOjptZGlvX2RldmljZV9pZCB7Ci0vLy8gICAgICAgICAgICAgICAgIHBoeV9pZDogMHgwMDAwMDAwMSwKLS8vLyAgICAgICAgICAgICAgICAgcGh5X2lkX21hc2s6IDB4ZmZmZmZmZmYsCi0vLy8gICAgICAgICAgICAgfSksCi0vLy8gICAgIF0pOwotLy8vCi0vLy8gOjprZXJuZWw6Om1vZHVsZV9kZXZpY2VfdGFibGUhKCYjMzQ7bWRpbyYjMzQ7LCBwaHlkZXYsIFRBQkxFKTsKLS8vLyBgYGAKICNbbWFjcm9fZXhwb3J0XQogbWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyIHsKICAgICAoQHJlcGxhY2VfZXhwciAkX3Q6dHQgJHN1YjpleHByKSA9Jmd0OyB7JHN1Yn07CkBAIC04NjUsMTIgJiM0Mzs4MDksMTAgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyIHsKICAgICB9OwogCiAgICAgKEBkZXZpY2VfdGFibGUgWyQoJGRldjpleHByKSwmIzQzO10pID0mZ3Q7IHsKLSAgICAgICAgY29uc3QgTjogdXNpemUgPSAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAY291bnRfZGV2aWNlcyAkKCRkZXYpLCYjNDM7KTsKLQotICAgICAgICBjb25zdCBUQUJMRTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXkmbHQ7JGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsICgpLCBOJmd0OyA9Ci0gICAgICAgICAgICAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXgoWyAkKCgkZGV2LCgpKSksJiM0MzssIF0pOwotCi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDttZGlvJiMzNDssIHBoeWRldiwgVEFCTEUpOwomIzQzOyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlISgKJiM0MzsgICAgICAgICAgICAmIzM0O21kaW8mIzM0OywgJGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsCiYjNDM7ICAgICAgICAgICAgVEFCTEUsIEBub25lLCBbJCgkZGV2KSwmIzQzO10KJiM0MzsgICAgICAgICk7CiAgICAgfTsKIAogICAgIChkcml2ZXJzOiBbJCgkZHJpdmVyOmlkZW50KSwmIzQzOyAkKCwpP10sIGRldmljZV90YWJsZTogWyQoJGRldjpleHByKSwmIzQzOyAkKCwpP10sICQoJGY6dHQpKikgPSZndDsgewpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb2YucnMgYi9ydXN0L2tlcm5lbC9vZi5ycwppbmRleCA1OGIyMGMzNjdmOTkzZi4uZDAzMThmNjJhZmQ3YzggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL29mLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL29mLnJzCkBAIC0yNSwxMCAmIzQzOzI1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHsKIC8vIFNBRkVUWTogYERSSVZFUl9EQVRBX09GRlNFVGAgaXMgdGhlIG9mZnNldCB0byB0aGUgYGRhdGFgIGZpZWxkLgogdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQgewogICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6Om9mX2RldmljZV9pZCwgZGF0YSk7Ci0KLSAgICBmbiBpbmRleCgmYW1wO3NlbGYpIC0mZ3Q7IHVzaXplIHsKLSAgICAgICAgc2VsZi4wLmRhdGEgYXMgdXNpemUKLSAgICB9CiB9CiAKIGltcGwgRGV2aWNlSWQgewpAQCAtNTMsMTMgJiM0Mzs0OSw3IEBAIHB1YiBjb25zdCBmbiBuZXcoY29tcGF0aWJsZTogJmFtcDsmIzM5O3N0YXRpYyBDU3RyKSAtJmd0OyBTZWxmIHsKIC8vLyBDcmVhdGUgYW4gT0YgYElkVGFibGVgIHdpdGggYW4gJiMzNDthbGlhcyYjMzQ7IGZvciBtb2Rwb3N0LgogI1ttYWNyb19leHBvcnRdCiBtYWNyb19ydWxlcyEgb2ZfZGV2aWNlX3RhYmxlIHsKLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9Jmd0OyB7Ci0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheSZsdDsKLSAgICAgICAgICAgICRjcmF0ZTo6b2Y6OkRldmljZUlkLAotICAgICAgICAgICAgJGlkX2luZm9fdHlwZSwKLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSwKLSAgICAgICAgJmd0OyA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpOwotCi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDtvZiYjMzQ7LCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTsKJiM0MzsgICAgKCQoJHR0OnR0KSopID0mZ3Q7IHsKJiM0MzsgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDtvZiYjMzQ7LCAkY3JhdGU6Om9mOjpEZXZpY2VJZCwgJCgkdHQpKik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5ycwppbmRleCA1MDcxY2FlNjU0M2ZkMi4uOTI1Y2YyODBkYWUyYTkgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wY2kucnMKQEAgLTExMCw3ICYjNDM7MTEwLDExIEBAIGV4dGVybiAmIzM0O0MmIzM0OyBmbiBwcm9iZV9jYWxsYmFjaygKICAgICAgICAgLy8gU0FGRVRZOiBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudCldYCB3cmFwcGVyIG9mIGBzdHJ1Y3QgcGNpX2RldmljZV9pZGAgYW5kCiAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0JiMzOTtzIHNhZmUgdG8gdHJhbnNtdXRlLgogICAgICAgICBsZXQgaWQgPSB1bnNhZmUgeyAmYW1wOyppZC5jYXN0OjombHQ7RGV2aWNlSWQmZ3Q7KCkgfTsKLSAgICAgICAgbGV0IGluZm8gPSBUOjpJRF9UQUJMRS5pbmZvKGlkLmluZGV4KCkpOwomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYFQ6OklEX1RBQkxFYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5Jmx0O18sIFQ6OklkSW5mbyZndDtgIG9yCiYjNDM7ICAgICAgICAvLyBgcGNpX2RldmljZV9pZF9hbnlgIHdoaWNoIGhhcyAwIGFzIGRyaXZlcl9kYXRhLiBJdCBjYW4gYWxzbyBjb21lIGZyb20gZHluYW1pYyBJRHMsIHdoaWNoCiYjNDM7ICAgICAgICAvLyB3aWxsIGVuc3VyZSB0aGF0IGBkcml2ZXJfZGF0YWAgZXhpc3RzIGluIGBUOjpJRF9UQUJMRWAuCiYjNDM7ICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkX29wdDo6Jmx0O1Q6OklkSW5mbyZndDsoKSB9OwogCiAgICAgICAgIGZyb21fcmVzdWx0KHx8IHsKICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUocGRldiwgaW5mbyk7CkBAIC0yMzMsMTAgJiM0MzsyMzcsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQgewogLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkLgogdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQgewogICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OnBjaV9kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTsKLQotICAgIGZuIGluZGV4KCZhbXA7c2VsZikgLSZndDsgdXNpemUgewotICAgICAgICBzZWxmLjAuZHJpdmVyX2RhdGEKLSAgICB9CiB9CiAKIC8vLyBgSWRUYWJsZWAgdHlwZSBmb3IgUENJLgpAQCAtMjQ1LDE0ICYjNDM7MjQ1LDggQEAgZm4gaW5kZXgoJmFtcDtzZWxmKSAtJmd0OyB1c2l6ZSB7CiAvLy8gQ3JlYXRlIGEgUENJIGBJZFRhYmxlYCB3aXRoIGl0cyBhbGlhcyBmb3IgbW9kcG9zdC4KICNbbWFjcm9fZXhwb3J0XQogbWFjcm9fcnVsZXMhIHBjaV9kZXZpY2VfdGFibGUgewotICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID0mZ3Q7IHsKLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5Jmx0OwotICAgICAgICAgICAgJGNyYXRlOjpwY2k6OkRldmljZUlkLAotICAgICAgICAgICAgJGlkX2luZm9fdHlwZSwKLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSwKLSAgICAgICAgJmd0OyA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpOwotCi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDtwY2kmIzM0OywgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7CiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9Jmd0OyB7CiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKCYjMzQ7cGNpJiMzNDssICRjcmF0ZTo6cGNpOjpEZXZpY2VJZCwgJCgkdHQpKik7CiAgICAgfTsKIH0KIApAQCAtMjY3LDcgJiM0MzsyNjEsNiBAQCBtYWNyb19ydWxlcyEgcGNpX2RldmljZV90YWJsZSB7CiAvLy8KIC8vLyBrZXJuZWw6OnBjaV9kZXZpY2VfdGFibGUhKAogLy8vICAgICBQQ0lfVEFCTEUsCi0vLy8gICAgIE1PRFVMRV9QQ0lfVEFCTEUsCiAvLy8gICAgICZsdDtNeURyaXZlciBhcyBwY2k6OkRyaXZlciZndDs6OklkSW5mbywKIC8vLyAgICAgWwogLy8vICAgICAgICAgKApAQCAtMjg0LDcgJiM0MzsyNzcsNyBAQCBtYWNyb19ydWxlcyEgcGNpX2RldmljZV90YWJsZSB7CiAvLy8KIC8vLyAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAvLy8gICAgICAgICBfcGRldjogJmFtcDsmIzM5O2JvdW5kIHBjaTo6RGV2aWNlJmx0O0NvcmUmbHQ7JiMzOTtfJmd0OyZndDssCi0vLy8gICAgICAgICBfaWRfaW5mbzogJmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbywKJiM0MzsvLy8gICAgICAgICBfaWRfaW5mbzogT3B0aW9uJmx0OyZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8mZ3Q7LAogLy8vICAgICApIC0mZ3Q7IGltcGwgUGluSW5pdCZsdDtTZWxmOjpEYXRhJmx0OyYjMzk7Ym91bmQmZ3Q7LCBFcnJvciZndDsgJiM0MzsgJiMzOTtib3VuZCB7CiAvLy8gICAgICAgICBFcnIoRU5PREVWKQogLy8vICAgICB9CkBAIC0zMTMsNyAmIzQzOzMwNiw3IEBAIHB1YiB0cmFpdCBEcml2ZXIgewogICAgIC8vLyBhdHRlbXB0IHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBoZXJlLgogICAgIGZuIHByb2JlJmx0OyYjMzk7Ym91bmQmZ3Q7KAogICAgICAgICBkZXY6ICZhbXA7JiMzOTtib3VuZCBEZXZpY2UmbHQ7ZGV2aWNlOjpDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7LAotICAgICAgICBpZF9pbmZvOiAmYW1wOyYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLAomIzQzOyAgICAgICAgaWRfaW5mbzogT3B0aW9uJmx0OyZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8mZ3Q7LAogICAgICkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGY6OkRhdGEmbHQ7JiMzOTtib3VuZCZndDssIEVycm9yJmd0OyAmIzQzOyAmIzM5O2JvdW5kOwogCiAgICAgLy8vIFBDSSBkcml2ZXIgdW5iaW5kLgpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwppbmRleCA5YjM2MmUwNDk1ZDMyMy4uZTEyZTg4MTEzY2E1ZDIgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCkBAIC0xMDAsNyAmIzQzOzEwMCw4IEBAIGV4dGVybiAmIzM0O0MmIzM0OyBmbiBwcm9iZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwbGF0Zm9ybV9kZXZpY2UpIC0mZ3Q7IGtlcm5lbDo6ZmYKICAgICAgICAgLy8KICAgICAgICAgLy8gSU5WQVJJQU5UOiBgcGRldmAgaXMgdmFsaWQgZm9yIHRoZSBkdXJhdGlvbiBvZiBgcHJvYmVfY2FsbGJhY2soKWAuCiAgICAgICAgIGxldCBwZGV2ID0gdW5zYWZlIHsgJmFtcDsqcGRldi5jYXN0OjombHQ7RGV2aWNlJmx0O2RldmljZTo6Q29yZUludGVybmFsJmx0OyYjMzk7XyZndDsmZ3Q7Jmd0OygpIH07Ci0gICAgICAgIGxldCBpbmZvID0gJmx0O1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyJmd0Ozo6aWRfaW5mbyhwZGV2LmFzX3JlZigpKTsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYHBkZXZgIG1hdGNoZWQgZGF0YSBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLgomIzQzOyAgICAgICAgbGV0IGluZm8gPSB1bnNhZmUgeyAmbHQ7U2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXImZ3Q7OjppZF9pbmZvKHBkZXYuYXNfcmVmKCkpIH07CiAKICAgICAgICAgZnJvbV9yZXN1bHQofHwgewogICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShwZGV2LCBpbmZvKTsKQEAgLTE3Niw3ICYjNDM7MTc3LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIgewogLy8vCiAvLy8ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKAogLy8vICAgICBPRl9UQUJMRSwKLS8vLyAgICAgTU9EVUxFX09GX1RBQkxFLAogLy8vICAgICAmbHQ7TXlEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlciZndDs6OklkSW5mbywKIC8vLyAgICAgWwogLy8vICAgICAgICAgKG9mOjpEZXZpY2VJZDo6bmV3KGMmIzM0O3Rlc3QsZGV2aWNlJiMzNDspLCAoKSkKQEAgLTE4NSw3ICYjNDM7MTg1LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIgewogLy8vCiAvLy8ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoCiAvLy8gICAgIEFDUElfVEFCTEUsCi0vLy8gICAgIE1PRFVMRV9BQ1BJX1RBQkxFLAogLy8vICAgICAmbHQ7TXlEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlciZndDs6OklkSW5mbywKIC8vLyAgICAgWwogLy8vICAgICAgICAgKGFjcGk6OkRldmljZUlkOjpuZXcoYyYjMzQ7TE5VWEJFRUYmIzM0OyksICgpKQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdXNiLnJzIGIvcnVzdC9rZXJuZWwvdXNiLnJzCmluZGV4IDdhZmYwYzgyZDBhZmMwLi5hZWM3ZGNlMDQ5NTUzMiAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VzYi5ycwpAQCAtODksNyAmIzQzOzg5LDEwIEBAIGV4dGVybiAmIzM0O0MmIzM0OyBmbiBwcm9iZV9jYWxsYmFjaygKICAgICAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0JiMzOTtzIHNhZmUgdG8gdHJhbnNtdXRlLgogICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgJmFtcDsqaWQuY2FzdDo6Jmx0O0RldmljZUlkJmd0OygpIH07CiAKLSAgICAgICAgICAgIGxldCBpbmZvID0gVDo6SURfVEFCTEUuaW5mbyhpZC5pbmRleCgpKTsKJiM0MzsgICAgICAgICAgICAvLyBTQUZFVFk6IGBpZGAgY29tZXMgZnJvbSBgVDo6SURfVEFCTEVgIHdoaWNoIGlzIG9mIHR5cGUgYElkQXJyYXkmbHQ7XywgVDo6SWRJbmZvJmd0O2AuIEl0CiYjNDM7ICAgICAgICAgICAgLy8gY2FuIGFsc28gY29tZSBmcm9tIGR5bmFtaWMgSURzLCB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGBkcml2ZXJfZGF0YWAgZXhpc3RzIGluCiYjNDM7ICAgICAgICAgICAgLy8gYFQ6OklEX1RBQkxFYCBvciBpcyAwLgomIzQzOyAgICAgICAgICAgIGxldCBpbmZvID0gdW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWRfb3B0OjombHQ7VDo6SWRJbmZvJmd0OygpIH07CiAgICAgICAgICAgICBsZXQgZGF0YSA9IFQ6OnByb2JlKGludGYsIGlkLCBpbmZvKTsKIAogICAgICAgICAgICAgbGV0IGRldjogJmFtcDtkZXZpY2U6OkRldmljZSZsdDtkZXZpY2U6OkNvcmVJbnRlcm5hbCZsdDsmIzM5O18mZ3Q7Jmd0OyA9IGludGYuYXNfcmVmKCk7CkBAIC0yNDIsMTAgJiM0MzsyNDUsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQgewogLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2luZm9gIGZpZWxkLgogdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQgewogICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OnVzYl9kZXZpY2VfaWQsIGRyaXZlcl9pbmZvKTsKLQotICAgIGZuIGluZGV4KCZhbXA7c2VsZikgLSZndDsgdXNpemUgewotICAgICAgICBzZWxmLjAuZHJpdmVyX2luZm8KLSAgICB9CiB9CiAKIC8vLyBbYElkVGFibGVgXShrZXJuZWw6OmRldmljZV9pZDo6SWRUYWJsZSkgdHlwZSBmb3IgVVNCLgpAQCAtMjU0LDE0ICYjNDM7MjUzLDggQEAgZm4gaW5kZXgoJmFtcDtzZWxmKSAtJmd0OyB1c2l6ZSB7CiAvLy8gQ3JlYXRlIGEgVVNCIGBJZFRhYmxlYCB3aXRoIGl0cyBhbGlhcyBmb3IgbW9kcG9zdC4KICNbbWFjcm9fZXhwb3J0XQogbWFjcm9fcnVsZXMhIHVzYl9kZXZpY2VfdGFibGUgewotICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID0mZ3Q7IHsKLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5Jmx0OwotICAgICAgICAgICAgJGNyYXRlOjp1c2I6OkRldmljZUlkLAotICAgICAgICAgICAgJGlkX2luZm9fdHlwZSwKLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSwKLSAgICAgICAgJmd0OyA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpOwotCi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoJiMzNDt1c2ImIzM0OywgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7CiYjNDM7ICAgICgkKCR0dDp0dCkqKSA9Jmd0OyB7CiYjNDM7ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKCYjMzQ7dXNiJiMzNDssICRjcmF0ZTo6dXNiOjpEZXZpY2VJZCwgJCgkdHQpKik7CiAgICAgfTsKIH0KIApAQCAtMjc3LDcgJiM0MzsyNzAsNiBAQCBtYWNyb19ydWxlcyEgdXNiX2RldmljZV90YWJsZSB7CiAvLy8KIC8vLyBrZXJuZWw6OnVzYl9kZXZpY2VfdGFibGUhKAogLy8vICAgICBVU0JfVEFCTEUsCi0vLy8gICAgIE1PRFVMRV9VU0JfVEFCTEUsCiAvLy8gICAgICZsdDtNeURyaXZlciBhcyB1c2I6OkRyaXZlciZndDs6OklkSW5mbywKIC8vLyAgICAgWwogLy8vICAgICAgICAgKHVzYjo6RGV2aWNlSWQ6OmZyb21faWQoMHgxMjM0LCAweDU2NzgpLCAoKSksCkBAIC0yOTMsNyAmIzQzOzI4NSw3IEBAIG1hY3JvX3J1bGVzISB1c2JfZGV2aWNlX3RhYmxlIHsKIC8vLyAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAvLy8gICAgICAgICBfaW50ZXJmYWNlOiAmYW1wOyYjMzk7Ym91bmQgdXNiOjpJbnRlcmZhY2UmbHQ7Q29yZSZsdDsmIzM5O18mZ3Q7Jmd0OywKIC8vLyAgICAgICAgIF9pZDogJmFtcDt1c2I6OkRldmljZUlkLAotLy8vICAgICAgICAgX2luZm86ICZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sCiYjNDM7Ly8vICAgICAgICAgX2luZm86IE9wdGlvbiZsdDsmYW1wOyYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvJmd0OywKIC8vLyAgICAgKSAtJmd0OyBpbXBsIFBpbkluaXQmbHQ7U2VsZjo6RGF0YSZsdDsmIzM5O2JvdW5kJmd0OywgRXJyb3ImZ3Q7ICYjNDM7ICYjMzk7Ym91bmQgewogLy8vICAgICAgICAgRXJyKEVOT0RFVikKIC8vLyAgICAgfQpAQCAtMzIyLDcgJiM0MzszMTQsNyBAQCBwdWIgdHJhaXQgRHJpdmVyIHsKICAgICBmbiBwcm9iZSZsdDsmIzM5O2JvdW5kJmd0OygKICAgICAgICAgaW50ZXJmYWNlOiAmYW1wOyYjMzk7Ym91bmQgSW50ZXJmYWNlJmx0O2RldmljZTo6Q29yZSZsdDsmIzM5O18mZ3Q7Jmd0OywKICAgICAgICAgaWQ6ICZhbXA7RGV2aWNlSWQsCi0gICAgICAgIGlkX2luZm86ICZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sCiYjNDM7ICAgICAgICBpZF9pbmZvOiBPcHRpb24mbHQ7JmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyZndDssCiAgICAgKSAtJmd0OyBpbXBsIFBpbkluaXQmbHQ7U2VsZjo6RGF0YSZsdDsmIzM5O2JvdW5kJmd0OywgRXJyb3ImZ3Q7ICYjNDM7ICYjMzk7Ym91bmQ7CiAKICAgICAvLy8gVVNCIGRyaXZlciBkaXNjb25uZWN0LgpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMKaW5kZXggMWY1OWUwOGFhYTRiMGQuLjE4MWZkOThhZTViNjYzIDEwMDY0NAotLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMKQEAgLTExMCw3ICYjNDM7MTEwLDYgQEAgZm4gZnJvbV9zdHIoczogJmFtcDtzdHIpIC0mZ3Q7IFJlc3VsdCZsdDtTZWxmJmd0OyB7CiAKIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKAogICAgIEFDUElfVEFCTEUsCi0gICAgTU9EVUxFX0FDUElfVEFCTEUsCiAgICAgJmx0O1J1c3REZWJ1Z0ZzIGFzIHBsYXRmb3JtOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGMmIzM0O0xOVVhCRUVGJiMzNDspLCAoKSldCiApOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzCmluZGV4IDUwNDZiNDYyOGQwZTI5Li44MGMzMDljZTA3ZTkzZSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycwpAQCAtNTEsNyAmIzQzOzUxLDYgQEAgdW5zYWZlIGltcGwga2VybmVsOjp0cmFuc211dGU6OkZyb21CeXRlcyBmb3IgTXlTdHJ1Y3Qge30KIAoga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlISgKICAgICBQQ0lfVEFCTEUsCi0gICAgTU9EVUxFX1BDSV9UQUJMRSwKICAgICAmbHQ7RG1hU2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogICAgIFsocGNpOjpEZXZpY2VJZDo6ZnJvbV9pZChwY2k6OlZlbmRvcjo6UkVESEFULCAweDUpLCAoKSldCiApOwpAQCAtNjMsNyAmIzQzOzYyLDcgQEAgaW1wbCBwY2k6OkRyaXZlciBmb3IgRG1hU2FtcGxlRHJpdmVyIHsKIAogICAgIGZuIHByb2JlJmx0OyYjMzk7Ym91bmQmZ3Q7KAogICAgICAgICBwZGV2OiAmYW1wOyYjMzk7Ym91bmQgcGNpOjpEZXZpY2UmbHQ7Q29yZSZsdDsmIzM5O18mZ3Q7Jmd0OywKLSAgICAgICAgX2luZm86ICZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sCiYjNDM7ICAgICAgICBfaW5mbzogT3B0aW9uJmx0OyZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8mZ3Q7LAogICAgICkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGYsIEVycm9yJmd0OyAmIzQzOyAmIzM5O2JvdW5kIHsKICAgICAgICAgcGluX2luaXQ6OnBpbl9pbml0X3Njb3BlKG1vdmUgfHwgewogICAgICAgICAgICAgZGV2X2luZm8hKHBkZXYsICYjMzQ7UHJvYmUgRE1BIHRlc3QgZHJpdmVyLlxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnMKaW5kZXggMmMxMzUxMDQwZTQ1ZTUuLjcwNDU2N2EwNzJiYWMzIDEwMDY0NAotLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnMKQEAgLTI0LDcgJiM0MzsyNCw2IEBACiAKIGtlcm5lbDo6YXV4aWxpYXJ5X2RldmljZV90YWJsZSEoCiAgICAgQVVYX1RBQkxFLAotICAgIE1PRFVMRV9BVVhfVEFCTEUsCiAgICAgJmx0O0F1eGlsaWFyeURyaXZlciBhcyBhdXhpbGlhcnk6OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKGF1eGlsaWFyeTo6RGV2aWNlSWQ6Om5ldyhNT0RVTEVfTkFNRSwgQVVYSUxJQVJZX05BTUUpLCAoKSldCiApOwpAQCAtNjYsNyAmIzQzOzY1LDYgQEAgc3RydWN0IFBhcmVudERhdGEmbHQ7JiMzOTtib3VuZCZndDsgewogCiBrZXJuZWw6OnBjaV9kZXZpY2VfdGFibGUhKAogICAgIFBDSV9UQUJMRSwKLSAgICBNT0RVTEVfUENJX1RBQkxFLAogICAgICZsdDtQYXJlbnREcml2ZXIgYXMgcGNpOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksICgpKV0KICk7CkBAIC03OSw3ICYjNDM7NzcsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBQYXJlbnREcml2ZXIgewogCiAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAgICAgICAgIHBkZXY6ICZhbXA7JiMzOTtib3VuZCBwY2k6OkRldmljZSZsdDtDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7LAotICAgICAgICBfaW5mbzogJmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbywKJiM0MzsgICAgICAgIF9pbmZvOiBPcHRpb24mbHQ7JmFtcDsmIzM5O2JvdW5kIFNlbGY6OklkSW5mbyZndDssCiAgICAgKSAtJmd0OyBpbXBsIFBpbkluaXQmbHQ7U2VsZjo6RGF0YSZsdDsmIzM5O2JvdW5kJmd0OywgRXJyb3ImZ3Q7ICYjNDM7ICYjMzk7Ym91bmQgewogICAgICAgICBPayhQYXJlbnREYXRhIHsKICAgICAgICAgICAgIC8vIFNBRkVUWTogYFBhcmVudERhdGFgIGlzIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhLCB3aGljaCBpcyBkcm9wcGVkIHdoZW4gdGhlCmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycwppbmRleCBlYWQ4MjYzYTdkNDg5YS4uYTBkZjBjNjA5N2M0ZjUgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycwpAQCAtMTQsMjEgJiM0MzsxNCwxOCBAQAogCiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlISB7CiAgICAgQUNQSV9UQUJMRSwKLSAgICBNT0RVTEVfQUNQSV9UQUJMRSwKICAgICAmbHQ7U2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjJiMzNDtMTlVYQkVFRiYjMzQ7KSwgMCldCiB9CiAKIGtlcm5lbDo6aTJjX2RldmljZV90YWJsZSEgewogICAgIEkyQ19UQUJMRSwKLSAgICBNT0RVTEVfSTJDX1RBQkxFLAogICAgICZsdDtTYW1wbGVEcml2ZXIgYXMgaTJjOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhpMmM6OkRldmljZUlkOjpuZXcoYyYjMzQ7cnVzdF9kcml2ZXJfaTJjJiMzNDspLCAwKV0KIH0KIAoga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhIHsKICAgICBPRl9UQUJMRSwKLSAgICBNT0RVTEVfT0ZfVEFCTEUsCiAgICAgJmx0O1NhbXBsZURyaXZlciBhcyBpMmM6OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGMmIzM0O3Rlc3QscnVzdF9kcml2ZXJfaTJjJiMzNDspLCAwKV0KIH0KZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzCmluZGV4IDFhYTgxOTdkODY5OGMwLi42NTI4MTlkZmYwODI0YiAxMDA2NDQKLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzCkBAIC03NCwxMiAmIzQzOzc0LDEwIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXJEYXRhJmx0OyYjMzk7Ym91bmQmZ3Q7IHsKIAoga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlISgKICAgICBQQ0lfVEFCTEUsCi0gICAgTU9EVUxFX1BDSV9UQUJMRSwKICAgICAmbHQ7U2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyJmd0Ozo6SWRJbmZvLAotICAgIFsoCi0gICAgICAgIHBjaTo6RGV2aWNlSWQ6OmZyb21faWQocGNpOjpWZW5kb3I6OlJFREhBVCwgMHg1KSwKLSAgICAgICAgVGVzdEluZGV4OjpOT19FVkVOVEZECi0gICAgKV0KJiM0MzsgICAgewomIzQzOyAgICAgICAgcGNpOjpEZXZpY2VJZDo6ZnJvbV9pZChwY2k6OlZlbmRvcjo6UkVESEFULCAweDUpID0mZ3Q7IFRlc3RJbmRleDo6Tk9fRVZFTlRGRCwKJiM0MzsgICAgfQogKTsKIAogaW1wbCBTYW1wbGVEcml2ZXJEYXRhJmx0OyYjMzk7XyZndDsgewpAQCAtMTQ0LDcgJiM0MzsxNDIsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIgewogCiAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAgICAgICAgIHBkZXY6ICZhbXA7JiMzOTtib3VuZCBwY2k6OkRldmljZSZsdDtDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7LAotICAgICAgICBpbmZvOiAmYW1wOyYjMzk7Ym91bmQgU2VsZjo6SWRJbmZvLAomIzQzOyAgICAgICAgaW5mbzogT3B0aW9uJmx0OyZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8mZ3Q7LAogICAgICkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGY6OkRhdGEmbHQ7JiMzOTtib3VuZCZndDssIEVycm9yJmd0OyAmIzQzOyAmIzM5O2JvdW5kIHsKICAgICAgICAgbGV0IHZlbmRvciA9IHBkZXYudmVuZG9yX2lkKCk7CiAgICAgICAgIGRldl9kYmchKApAQCAtMTUzLDYgJiM0MzsxNTEsNyBAQCBmbiBwcm9iZSZsdDsmIzM5O2JvdW5kJmd0OygKICAgICAgICAgICAgIHZlbmRvciwKICAgICAgICAgICAgIHBkZXYuZGV2aWNlX2lkKCkKICAgICAgICAgKTsKJiM0MzsgICAgICAgIGxldCBpbmZvID0gaW5mby5va19vcihFTk9ERVYpPzsKIAogICAgICAgICBwZGV2LmVuYWJsZV9kZXZpY2VfbWVtKCk/OwogICAgICAgICBwZGV2LnNldF9tYXN0ZXIoKTsKZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycwppbmRleCBlYzBkNmNhYzRmNTcwYi4uNzEwMTQ1YjM2MDVhMjEgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMKQEAgLTg3LDE0ICYjNDM7ODcsMTIgQEAgc3RydWN0IFNhbXBsZURyaXZlciB7CiAKIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlISgKICAgICBPRl9UQUJMRSwKLSAgICBNT0RVTEVfT0ZfVEFCTEUsCiAgICAgJmx0O1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogICAgIFsob2Y6OkRldmljZUlkOjpuZXcoYyYjMzQ7dGVzdCxydXN0LWRldmljZSYjMzQ7KSwgSW5mbyg0MikpXQogKTsKIAoga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoCiAgICAgQUNQSV9UQUJMRSwKLSAgICBNT0RVTEVfQUNQSV9UQUJMRSwKICAgICAmbHQ7U2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGMmIzM0O0xOVVhCRUVGJiMzNDspLCBJbmZvKDApKV0KICk7CmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycwppbmRleCAwMmJkNTA4NWY5YmM3Ni4uN2VmMDRlMTc3YzgwOTQgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycwpAQCAtMTksNyAmIzQzOzE5LDYgQEAgc3RydWN0IFNhbXBsZURyaXZlciB7CiAKIGtlcm5lbDo6dXNiX2RldmljZV90YWJsZSEoCiAgICAgVVNCX1RBQkxFLAotICAgIE1PRFVMRV9VU0JfVEFCTEUsCiAgICAgJmx0O1NhbXBsZURyaXZlciBhcyB1c2I6OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKHVzYjo6RGV2aWNlSWQ6OmZyb21faWQoMHgxMjM0LCAweDU2NzgpLCAoKSksXQogKTsKQEAgLTMyLDcgJiM0MzszMSw3IEBAIGltcGwgdXNiOjpEcml2ZXIgZm9yIFNhbXBsZURyaXZlciB7CiAgICAgZm4gcHJvYmUmbHQ7JiMzOTtib3VuZCZndDsoCiAgICAgICAgIGludGY6ICZhbXA7JiMzOTtib3VuZCB1c2I6OkludGVyZmFjZSZsdDtDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7LAogICAgICAgICBfaWQ6ICZhbXA7dXNiOjpEZXZpY2VJZCwKLSAgICAgICAgX2luZm86ICZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8sCiYjNDM7ICAgICAgICBfaW5mbzogT3B0aW9uJmx0OyZhbXA7JiMzOTtib3VuZCBTZWxmOjpJZEluZm8mZ3Q7LAogICAgICkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGYsIEVycm9yJmd0OyAmIzQzOyAmIzM5O2JvdW5kIHsKICAgICAgICAgbGV0IGRldjogJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDb3JlJmx0OyYjMzk7XyZndDsmZ3Q7ID0gaW50Zi5hc19yZWYoKTsKICAgICAgICAgZGV2X2luZm8hKGRldiwgJiMzNDtSdXN0IFVTQiBkcml2ZXIgc2FtcGxlIHByb2JlZFxuJiMzNDspOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMKaW5kZXggMmQ4NzZmNGUzZWUwYTIuLmM4YTIzODc1ZWY1YmM1IDEwMDY0NAotLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMKQEAgLTg3LDE0ICYjNDM7ODcsMTIgQEAgc3RydWN0IFNhbXBsZURyaXZlciB7CiAKIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlISgKICAgICBPRl9UQUJMRSwKLSAgICBNT0RVTEVfT0ZfVEFCTEUsCiAgICAgJmx0O1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyJmd0Ozo6SWRJbmZvLAogICAgIFsob2Y6OkRldmljZUlkOjpuZXcoYyYjMzQ7dGVzdCxydXN0LWRldmljZSYjMzQ7KSwgKCkpXQogKTsKIAoga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoCiAgICAgQUNQSV9UQUJMRSwKLSAgICBNT0RVTEVfQUNQSV9UQUJMRSwKICAgICAmbHQ7U2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGMmIzM0O0xOVVhCRUVGJiMzNDspLCAoKSldCiApOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzCmluZGV4IDgwOGQ1ODIwMGViNjc3Li5mNWU1ZjJmOWFkZjc2MiAxMDA2NDQKLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycwpAQCAtMjMsMTQgJiM0MzsyMywxMiBAQCBzdHJ1Y3QgU2FtcGxlU29jRHJpdmVyIHsKIAoga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKAogICAgIE9GX1RBQkxFLAotICAgIE1PRFVMRV9PRl9UQUJMRSwKICAgICAmbHQ7U2FtcGxlU29jRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXImZ3Q7OjpJZEluZm8sCiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjJiMzNDt0ZXN0LHJ1c3QtZGV2aWNlJiMzNDspLCAoKSldCiApOwogCiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlISgKICAgICBBQ1BJX1RBQkxFLAotICAgIE1PRFVMRV9BQ1BJX1RBQkxFLAogICAgICZsdDtTYW1wbGVTb2NEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlciZndDs6OklkSW5mbywKICAgICBbKGFjcGk6OkRldmljZUlkOjpuZXcoYyYjMzQ7TE5VWEJFRUYmIzM0OyksICgpKV0KICk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTMyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIFJ1c3QgRGV2aWNlIElEIFRhYmxlIEdlbmVyYXRpb246IEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIGhvdyBSdXN0IGRldmljZSBJRCB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhbmQgaG93IGRyaXZlciBtYXRjaCBkYXRhIGlzIGhhbmRsZWQuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciB2YXJpb3VzIGRyaXZlciB0eXBlcyDigJMgUENJLCBVU0IsIHBsYXRmb3JtLCBJMkMsIEF1eGlsaWFyeSwgYW5kIEFDUEkuCgpTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgdGhleSYjMzk7cmUgcmVtb3ZpbmcgdGhlIGBNT0RVTEVfT0ZfVEFCTEVgIGFyZ3VtZW50cyBmcm9tIHRob3NlIGBfZGV2aWNlX3RhYmxlIWAgbWFjcm9zIGFuZCB0d2Vha2luZyB0aGUgYElkQXJyYXlgIHRvIHN0b3JlIHJlZmVyZW5jZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyBhbiBpbmRleC4gVGhleSYjMzk7dmUgYWxzbyByaXBwZWQgb3V0IGBhY3BpX29mX21hdGNoX2RldmljZWAgZnJvbSBhIGNvdXBsZSBvZiBwbGFjZXMsIGFuZCB0aGUgYHByb2JlYCBzaWduYXR1cmVzIGluIHRoZSBgcGNpOjpEcml2ZXJgIGFuZCBgdXNiOjpEcml2ZXJgIHRyYWl0cyBhcmUgYmVpbmcgdXBkYXRlZCB0byB1c2UgYE9wdGlvbmAgZm9yIHRoZSBgSWRJbmZvYC4gUGx1cywgdGhleSYjMzk7cmUgdXNpbmcgYGJpbmRpbmdzOjpkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZvciB0aGUgYGlkX2luZm9gIGluIHRoZSBgQWRhcHRlcmAgdHJhaXQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsICp5ZXMqLCB0aGlzIG5lZWRzIGZ1enppbmcuIEl0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyBkcml2ZXJzIGFyZSBwcm9iZWQgYW5kIGhvdyB0aGV5IHJlY2VpdmUgdGhlaXIgY3JpdGljYWwgbWF0Y2ggZGF0YS4gSWYgc29tZXRoaW5nIGdvZXMgd3JvbmcgaGVyZSwgZHJpdmVycyBjb3VsZCBlYXNpbHkgY3Jhc2ggZHVyaW5nIHByb2JlIG9yLCB3b3JzZSwgb3BlcmF0ZSB3aXRoIGluY29ycmVjdCBkYXRhLiBUaGlzIGlzIHJpZ2h0IGluIHRoZSBjcml0aWNhbCBwYXRoLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgc2VlbSB0byBiZSBpbiBtYWNyb3MgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgSWRBcnJheWAsIGJ1dCB0aGUgcmVhbCBhY3Rpb24gaGFwcGVucyBkdXJpbmcgZHJpdmVyIHByb2JlLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGNvZGUgd2hlcmUgdGhlIGRyaXZlcnMgYWN0dWFsbHkgZ2V0IGNhbGxlZC4KClNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCB0aGUgYHByb2JlX2NhbGxiYWNrYCBmdW5jdGlvbnMgd2l0aGluIHRoZSByZXNwZWN0aXZlIGRyaXZlciBpbXBsZW1lbnRhdGlvbnM6IGBwY2kucnNgLCBgdXNiLnJzYCwgYHBsYXRmb3JtLnJzYCwgYGkyYy5yc2AsIGFuZCBgYXV4aWxpYXJ5LnJzYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpOb3csIGNhbiBJIGZ1enogdGhlc2UgdGhpbmdzIGVmZmVjdGl2ZWx5PyBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBuYXRpdmUgUnVzdCBkcml2ZXIgc3VwcG9ydCAqeWV0Kiwgd2hpY2ggaXMgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBIb3dldmVyLCBpdCAqZG9lcyogc3VwcG9ydCBmdXp6aW5nIFBDSSwgVVNCLCBwbGF0Zm9ybSwgYW5kIEkyQyBkZXZpY2VzLiBJZiBJIGVuYWJsZSBSdXN0IHN1cHBvcnQgYW5kIHRoZSBzYW1wbGUgZHJpdmVycywgSSAqc2hvdWxkKiBiZSBhYmxlIHRvIHRlc3QgdGhlc2UgY29kZSBwYXRocy4gV2hlcmUgYXJlIHRob3NlIHNhbXBsZSBkcml2ZXJzPyBSaWdodCwgdGhleSYjMzk7cmUgaW4gYHNhbXBsZXMvcnVzdC9gLiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX1NBTVBMRVNfUlVTVD15YCBvciB0aGUgYXBwcm9wcmlhdGUgc2FtcGxlIGNvbmZpZ3MgdG8gZ2V0IHRoZW0gYnVpbHQuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0FNUExFX1JVU1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL3J1c3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL3J1c3QvS2NvbmZpZz0xMT1pZiBTQU1QTEVTX1JVU1RcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEyLVxuc2FtcGxlcy9ydXN0L0tjb25maWc6MTM6Y29uZmlnIFNBTVBMRV9SVVNUX0NPTkZJR0ZTXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNC1cdHRyaXN0YXRlIFwmIzM0O0NvbmZpZ2ZzIHNhbXBsZVwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTIzLVxuc2FtcGxlcy9ydXN0L0tjb25maWc6MjQ6Y29uZmlnIFNBTVBMRV9SVVNUX01JTklNQUxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7TWluaW1hbFwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTMzLVxuc2FtcGxlcy9ydXN0L0tjb25maWc6MzQ6Y29uZmlnIFNBTVBMRV9SVVNUX01JU0NfREVWSUNFXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0zNS1cdHRyaXN0YXRlIFwmIzM0O01pc2MgZGV2aWNlXCYjMzQ7XG4tLVxuc2FtcGxlcy9ydXN0L0tjb25maWctNDMtXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo0NDpjb25maWcgU0FNUExFX1JVU1RfUFJJTlRcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7UHJpbnRpbmcgbWFjcm9zXCYjMzQ7XG4tLVxuc2FtcGxlcy9ydXN0L0tjb25maWctNTMtXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo1NDpjb25maWcgU0FNUExFX1JVU1RfRE1BXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O0RNQSBUZXN0IERyaXZlclwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTY0LVxuc2FtcGxlcy9ydXN0L0tjb25maWc6NjU6Y29uZmlnIFNBTVBMRV9SVVNUX0RFQlVHRlNcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7RGVidWdGUyBUZXN0IE1vZHVsZVwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTc1LVxuc2FtcGxlcy9ydXN0L0tjb25maWc6NzY6Y29uZmlnIFNBTVBMRV9SVVNUX0RFQlVHRlNfU0NPUEVEXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy03Ny1cdHRyaXN0YXRlIFwmIzM0O1Njb3BlZCBEZWJ1Z0ZTIFRlc3QgTW9kdWxlXCYjMzQ7XG4tLVxuc2FtcGxlcy9ydXN0L0tjb25maWctODYtXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo4Nzpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX0kyQ1xuc2FtcGxlcy9ydXN0L0tjb25maWctODgtXHR0cmlzdGF0ZSBcJiMzNDtJMkMgRHJpdmVyXCYjMzQ7XG4tLVxuc2FtcGxlcy9ydXN0L0tjb25maWctOTctXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo5ODpjb25maWcgU0FNUExFX1JVU1RfSTJDX0NMSUVOVFxuc2FtcGxlcy9ydXN0L0tjb25maWctOTktXHR0cmlzdGF0ZSBcJiMzNDtJMkMgQ2xpZW50IFJlZ2lzdHJhdGlvblwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEwOS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnOjExMDpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX1BDSVxuc2FtcGxlcy9ydXN0L0tjb25maWctMTExLVx0dHJpc3RhdGUgXCYjMzQ7UENJIERyaXZlclwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEyMC1cbnNhbXBsZXMvcnVzdC9LY29uZmlnOjEyMTpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX1BMQVRGT1JNXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xMjItXHR0cmlzdGF0ZSBcJiMzNDtQbGF0Zm9ybSBEcml2ZXJcJiMzNDtcbi0tXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xMzAtXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzoxMzE6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9VU0JcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEzMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBEcml2ZXJcJiMzNDtcbi0tXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNDEtXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzoxNDI6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9GQVVYXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNDMtXHR0cmlzdGF0ZSBcJiMzNDtGYXV4IERyaXZlclwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTE1MS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnOjE1Mjpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWVxuc2FtcGxlcy9ydXN0L0tjb25maWctMTUzLVx0dHJpc3RhdGUgXCYjMzQ7QXV4aWxpYXJ5IERyaXZlclwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTE2My1cbnNhbXBsZXMvcnVzdC9LY29uZmlnOjE2NDpjb25maWcgU0FNUExFX1JVU1RfU09DXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNjUtXHR0cmlzdGF0ZSBcJiMzNDtTb0MgRHJpdmVyXCYjMzQ7XG4tLVxuc2FtcGxlcy9ydXN0L0tjb25maWctMTc0LVxuc2FtcGxlcy9ydXN0L0tjb25maWc6MTc1OmNvbmZpZyBTQU1QTEVfUlVTVF9IT1NUUFJPR1NcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7SG9zdCBwcm9ncmFtc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTI4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUnVzdCBEcml2ZXIgQWJzdHJhY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGRpdmluZyBpbnRvIHRoZSBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIHVzZWQgZm9yIGRldmljZSBkcml2ZXJzLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZDogYFJVU1RgLCBgU0FNUExFU19SVVNUYCwgYW5kIGEgYnVuY2ggb2Ygc2FtcGxlcyByZWxhdGVkIHRvIERNQSwgSTJDLCBQQ0ksIHBsYXRmb3JtIGRldmljZXMsIFVTQiwgYXV4aWxpYXJ5IGRyaXZlcnMsIGFuZCB0aGUgU3lzdGVtLW9uLWEtQ2hpcC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgc2V0IG9mIGV4YW1wbGVzLCBjb3ZlcmluZyBhIGdvb2QgcmFuZ2Ugb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLgoKTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIEkgaGF2ZSB0byBzZWUgaWYgYW55IGV4aXN0aW5nIGRyaXZlcnMgb3V0IHRoZXJlIGFyZSBhbHJlYWR5IG1ha2luZyB1c2Ugb2YgdGhlc2UgYWJzdHJhY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2Ygc29tZSBmaWxlcyB0byBjaGVjazogYGRyaXZlcnMvZ3B1L2RybS9ub3ZhL2RyaXZlci5yc2AsIGBkcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5yc2AsIGBkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzYCwgYGRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNgLCBhbmQgYGRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yc2AuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZHJpdmVycyBhbmQgc2VlIGlmIHRoZXkgaGF2ZSBhbnkgaW50ZXJhY3Rpb25zIHdpdGggd2hhdCBpcyBpbiB0aGUgcGF0Y2guIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBmaWxlcyBkb24mIzM5O3QgdXNlIHRoZSBtYWNyb3MgYmVpbmcgY2hhbmdlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2NvcGUgYW5kIHBvdGVudGlhbCBmb3IgY29uZmxpY3RzIG9yIHJlZ3Jlc3Npb25zLiBHb3R0YSBtYWtlIHN1cmUgd2UgZG9uJiMzOTt0IGJyZWFrIGFueXRoaW5nIGluIHRoZSBwcm9jZXNzLiBUaW1lIHRvIGRpZyBpbiBhbmQgY29ycmVsYXRlIHRoZXNlIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9OT1ZBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnOjE6Y29uZmlnIERSTV9OT1ZBXG5kcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtOb3ZhIERSTSBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE1MgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZWVwIERpdmUgSW5jb21pbmc6IEluaXRpYWwgQ29kZSBSZXZpZXcgVGhvdWdodHMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LiBUaGUgaW5pdGlhbCBmb2N1cyBpcyBvbiBgRFJNX1RZUmAsIGBOT1ZBX0NPUkVgLCBgUFdNX1RIMTUyMGAsIGFuZCBgQVJNX0RUX0NQVUZSRVFfUlVTVGAuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGhlcmUuIGBEUk1fVFlSYCBzdWdnZXN0cyBkaXNwbGF5IG9yIGdyYXBoaWNzIHByb2Nlc3NpbmcsIGxpa2VseSBvbiBhIGBUWVJgIHBsYXRmb3JtIG9yIHJlbGF0ZWQgdGVjaG5vbG9neS4gYE5PVkFfQ09SRWAuLi4gdGhhdCYjMzk7cyBsZXNzIGltbWVkaWF0ZWx5IG9idmlvdXMgd2l0aG91dCBjb250ZXh0LCBidXQgdGhlICYjMzQ7Q09SRSYjMzQ7IGltcGxpZXMgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBwZXJoYXBzIGEgY2VudHJhbCBjb250cm9sIG9yIHN5c3RlbSBtb2R1bGUgcmVsYXRlZCB0byBhIHByb2plY3QmIzM5O3MgYXJjaGl0ZWN0dXJlLiBgUFdNX1RIMTUyMGAganVtcHMgb3V0IGFzIGEgUHVsc2UtV2lkdGggTW9kdWxhdGlvbiBpbXBsZW1lbnRhdGlvbiByZWxhdGVkIHRvIGEgYFRIMTUyMGAgZGV2aWNlLiBUaGlzIHRlbGxzIG1lIHdlIGNvdWxkIGJlIGxvb2tpbmcgYXQgcG93ZXIgY29udHJvbCwgZGltbWluZywgb3IgbW90b3IgY29udHJvbCwgcG9zc2libHkgc29tZXRoaW5nIGZvciBlbWJlZGRlZCBzeXN0ZW1zLiBGaW5hbGx5LCBgQVJNX0RUX0NQVUZSRVFfUlVTVGAgaXMgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkOiBDUFUgZnJlcXVlbmN5IHNjYWxpbmcgb24gYW4gQVJNIHN5c3RlbSwgcG90ZW50aWFsbHkgdXNpbmcgYSBkZXZpY2UgdHJlZSAoYERUYCkgZm9yIGNvbmZpZ3VyYXRpb24sIGFuZCB3cml0dGVuIGluIFJ1c3QuCgpJJiMzOTttIGluc3RhbnRseSBjb25zaWRlcmluZyBob3cgdGhlc2UgZm91ciByZWxhdGUuIElzIHRoZSBkaXNwbGF5IGxpbmtlZCB0byBDUFUgZnJlcXVlbmN5IHNjYWxpbmc/IElzIHRoZXJlIGEgZGlzcGxheSBpbnRlcmZhY2UgdXNpbmcgUFdNPyBBcmUgd2UgYnVpbGRpbmcgb24gYSBuZXcgUnVzdCBmcmFtZXdvcmsgd2l0aCBhIGNvcmU/IEkmIzM5O20gYWxyZWFkeSBlbnZpc2lvbmluZyBwb3RlbnRpYWwgYm90dGxlbmVja3MgYW5kIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLiBNeSBtaW5kJiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gaXNzdWVzIHdpdGggZnJlcXVlbmN5IHNjYWxpbmcgYW5kIFBXTTogcG93ZXIgY29uc3VtcHRpb24gdHJhZGUtb2ZmcywgcmVzcG9uc2UgdGltZXMsIHBvdGVudGlhbCBmb3IgZGlzcGxheSBmbGlja2VyaW5nIG9yIGJhbmRpbmcsIGV0Yy4gVGhlIHVzZSBvZiBSdXN0IHN1Z2dlc3RzIGEgZm9jdXMgb24gbWVtb3J5IHNhZmV0eSBhbmQgY29uY3VycmVuY3ksIHdoaWNoIGNvdWxkIGJlIHJlbGV2YW50IGdpdmVuIGhvdyBwb3dlciBhbmQgcGVyZm9ybWFuY2UgbWFuYWdlbWVudCB0ZW5kcyB0byBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGVhY2ggb2YgdGhlc2UgY29tcG9uZW50cyBjb250cmlidXRlcyB0byB0aGUgd2hvbGUgc3lzdGVtIGRlc2lnbiBhbmQgd2hhdCB0aGVpciBpbnRlcmZhY2VzIGFyZS4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgc2V0dGluZyB0aGUgc3RhZ2UgYW5kIGFudGljaXBhdGluZyB3aGVyZSB0aGUgcmVhbCBjaGFsbGVuZ2VzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgKERSTV9UWVJ8Tk9WQV9DT1JFfFBXTV9USDE1MjB8QVJNX0RUX0NQVUZSRVFfUlVTVCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdHlyL0tjb25maWctMi1cbmRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZzozOmNvbmZpZyBEUk1fVFlSXG5kcml2ZXJzL2dwdS9kcm0vdHlyL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1R5ciAoUnVzdCBEUk0gc3VwcG9ydCBmb3IgQVJNIE1hbGkgQ1NGLWJhc2VkIEdQVXMpXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWc6MTpjb25maWcgTk9WQV9DT1JFXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7Tm92YSBDb3JlIEdQVSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3B3bS9LY29uZmlnPTc2Mj1jb25maWcgUFdNX1RFR1JBXG4tLVxuZHJpdmVycy9wd20vS2NvbmZpZy03NzItXG5kcml2ZXJzL3B3bS9LY29uZmlnOjc3Mzpjb25maWcgUFdNX1RIMTUyMFxuZHJpdmVycy9wd20vS2NvbmZpZy03NzQtXHR0cmlzdGF0ZSBcJiMzNDtUSDE1MjAgUFdNIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg1NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBDUFUgRnJlcXVlbmN5IFNjYWxpbmcgT3B0aW9ucyoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byBmcmVxdWVuY3kgc2NhbGluZyBtZWNoYW5pc21zLiBXZSYjMzk7cmUgbG9va2luZyBhdCB3YXlzIHRvIG9wdGltaXplIHBvd2VyIGNvbnN1bXB0aW9uIGFuZCBwZXJmb3JtYW5jZSwgYW5kIHRoZSBwb3NzaWJpbGl0aWVzIGFyZSBlbmRsZXNzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIGhlcmUuIE9uZSBhcmVhIHRoYXQmIzM5O3MgYWx3YXlzIGludHJpZ3VlZCBtZSwgYW5kIG5lZWRzIGZ1cnRoZXIgYXR0ZW50aW9uLCBpcyB0aGUgYHJjcHVmcmVxX2R0YCBkcml2ZXIuIFdoYXQmIzM5O3MgdGhlIGxhdGVzdCB3aXRoIHRoYXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIERldmljZSBUcmVlIChEVCkgYW5kIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBDUFVGcmVxIGNvcmUuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBzcGVjaWZpY3Mgb2YgaXRzIGdvdmVybm9yIGltcGxlbWVudGF0aW9ucywgYW5kIHdoZXRoZXIgaXQmIzM5O3MgaGFuZGxpbmcgZnJlcXVlbmN5IHRyYW5zaXRpb25zIG9wdGltYWxseS4gVGhlcmUgbWlnaHQgYmUgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgdGhhdCBJIG5lZWQgdG8gYmVuY2htYXJrIGFnYWluc3QgdGhlIG90aGVyIGRyaXZlcnMuIEFyZSB3ZSBzZWVpbmcgYW55IG5ldyBwYXRjaGVzIG9yIGZlYXR1cmVzPyBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHNwZWNpZmljIGFyY2hpdGVjdHVyZXMgb3IgU29Dcz8gV2hhdCBpcyBpdHMgbGV2ZWwgb2YgY29tbXVuaXR5IHN1cHBvcnQgYW5kIG1haW50ZW5hbmNlIGxpa2U/IElzIGl0IGNvbXBhdGlibGUgd2l0aCB0aGUgbmV3ZXIgcG93ZXIgbWFuYWdlbWVudCBmcmFtZXdvcmtzPyBJIHNob3VsZCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB3aXRoIHRoZSByZWxldmFudCBrZXJuZWwgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIHVwc3RyZWFtIG1haWxpbmcgbGlzdHMuIEkgc2hvdWxkIG1ha2Ugc3VyZSBJJiMzOTttIHVwIHRvIHNwZWVkIG9uIHRoZSBsYXRlc3QgY2hhbmdlcy4gTXkgcmVzZWFyY2ggaGFzIGJlZW4gZmFpcmx5IHJlY2VudCwgYnV0IHRoaXMgaXMgYSBjcml0aWNhbCBkcml2ZXIgZm9yIGVtYmVkZGVkIHN5c3RlbXMgYW5kIG1vYmlsZSBkZXZpY2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGRvY3VtZW50YXRpb24gc2F5cyBhYm91dCB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyY3B1ZnJlcV9kdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY3B1ZnJlcS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVmcmVxL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19DUFVGUkVRX0RUKVx0XHQmIzQzOz0gY3B1ZnJlcS1kdC5vXG5kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0NQVUZSRVFfRFRfUlVTVClcdFx0JiM0Mzs9IHJjcHVmcmVxX2R0Lm9cbmRyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZS0xOS1vYmotJChDT05GSUdfQ1BVRlJFUV9EVF9QTEFUREVWKVx0JiM0Mzs9IGNwdWZyZXEtZHQtcGxhdGRldi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjk1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uczoKCioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKgoKT2theSwgbGV0JiMzOTtzIHNlZS4gV2UmIzM5O3ZlIGdvdCBhIGxpc3Qgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjb25zaWRlcjogYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBlc3RhYmxpc2ggaWYgYENQVUZSRVFfRFRfUlVTVGAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsLiBXaXRob3V0IHRoYXQsIHdlIGNhbiYjMzk7dCBiZSBzdXJlIHRoaXMgaXMgYSB2aWFibGUgcGFydCBvZiB0aGUgb3ZlcmFsbCBkZXNpZ24uIE15IG5leHQgc3RlcCBpbnZvbHZlcyBjaGVja2luZyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gVGhlIGluaXRpYWwgbGlzdCBpcyB0aGVyZSwgdGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENQVUZSRVFfRFRfUlVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY3B1ZnJlcS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVmcmVxL0tjb25maWc9MjA3PWNvbmZpZyBDUFVGUkVRX0RUXG4tLVxuZHJpdmVycy9jcHVmcmVxL0tjb25maWctMjE4LVxuZHJpdmVycy9jcHVmcmVxL0tjb25maWc6MjE5OmNvbmZpZyBDUFVGUkVRX0RUX1JVU1RcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLTIyMC1cdHRyaXN0YXRlIFwmIzM0O1J1c3QgYmFzZWQgR2VuZXJpYyBEVCBiYXNlZCBjcHVmcmVxIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzMgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUHJvYmUgQ2FsbGJhY2tzIGluIHRoZSBLZXJuZWwqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBoZXJlLiBUaGUgZmlyc3QgcXVlc3Rpb24gaXMsICYjMzQ7QXJlIHRoZXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzIG9yIHJlbGV2YW50IHN0cnVjdHVyZXMgSSYjMzk7bSBtaXNzaW5nPyYjMzQ7ICBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZXNlIGBwcm9iZV9jYWxsYmFja2AgZnVuY3Rpb25zLiBJIGtub3cgSSYjMzk7dmUgc2VlbiBpdCBkZWZpbmVkIGluIHNldmVyYWwgcGxhY2VzIGxpa2UgYHJ1c3Qva2VybmVsL3BjaS5yc2AsIGJ1dCBJIGFsc28gc2VlIGl0IGluIGBydXN0L2tlcm5lbC91c2IucnNgLCBgcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNgLCBgcnVzdC9rZXJuZWwvaTJjLnJzYCBhbmQgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2AuCgpHaXZlbiB0aG9zZSBmaWxlcywgSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRob3NlIGZpdmUgaW5zdGFuY2VzIG9mIHRoZSBgcHJvYmVfY2FsbGJhY2tgIGZ1bmN0aW9uIHNwZWNpZmljYWxseTogdGhlIG9uZSBpbiBQQ0ksIFVTQiwgcGxhdGZvcm0sIGkyYyBhbmQgYXV4aWxpYXJ5IGZpbGVzLgoKSG93ZXZlciwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgc2luY2UgdGhpcyBpcyBhbiBgZXh0ZXJuICYjMzQ7QyYjMzQ7YCBmdW5jdGlvbiwgdGhlIG5hbWUgaW4gdGhlIGNvbXBpbGVkIGJpbmFyeSBtaWdodCBiZSBhIGJpdCB0cmlja3kuIEl0IGNvdWxkIGJlIG1hbmdsZWQgZHVyaW5nIHRoZSBsaW5raW5nIHByb2Nlc3MsIG9yIHBvc3NpYmx5IGV2ZW4gYmUgc3RhdGljYWxseSBsaW5rZWQsIHNvIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBleGFjdCBkZWZpbml0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtydXN0L2tlcm5lbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzPTgyPWltcGxcdTAwM2NUOiBEcml2ZXJcdTAwM2UgQWRhcHRlclx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzOjgzOiAgICBleHRlcm4gXCYjMzQ7Q1wmIzM0OyBmbiBwcm9iZV9jYWxsYmFjayhcbnJ1c3Qva2VybmVsL2F1eGlsaWFyeS5ycy04NC0gICAgICAgIGFkZXY6ICptdXQgYmluZGluZ3M6OmF1eGlsaWFyeV9kZXZpY2UsXG4tLVxucnVzdC9rZXJuZWwvZXJyb3IucnM9NDk5PXB1YiBmbiBmcm9tX2Vycl9wdHJcdTAwM2NUXHUwMDNlKHB0cjogKm11dCBUKSAtXHUwMDNlIFJlc3VsdFx1MDAzYyptdXQgVFx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvZXJyb3IucnMtNTM0LS8vLyAjIHVzZSBrZXJuZWw6OmJpbmRpbmdzO1xucnVzdC9rZXJuZWwvZXJyb3IucnM6NTM1Oi8vLyB1bnNhZmUgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soXG5ydXN0L2tlcm5lbC9lcnJvci5ycy01MzYtLy8vICAgICBwZGV2OiAqbXV0IGJpbmRpbmdzOjpwbGF0Zm9ybV9kZXZpY2UsXG4tLVxucnVzdC9rZXJuZWwvaTJjLnJzPTE0ND1pbXBsXHUwMDNjVDogRHJpdmVyXHUwMDNlIEFkYXB0ZXJcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2kyYy5yczoxNDU6ICAgIGV4dGVybiBcJiMzNDtDXCYjMzQ7IGZuIHByb2JlX2NhbGxiYWNrKGlkZXY6ICptdXQgYmluZGluZ3M6OmkyY19jbGllbnQpIC1cdTAwM2Uga2VybmVsOjpmZmk6OmNfaW50IHtcbnJ1c3Qva2VybmVsL2kyYy5ycy0xNDYtICAgICAgICAvLyBTQUZFVFk6IFRoZSBJMkMgYnVzIG9ubHkgZXZlciBjYWxscyB0aGUgcHJvYmUgY2FsbGJhY2sgd2l0aCBhIHZhbGlkIHBvaW50ZXIgdG8gYVxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9MzA4PWltcGxcdTAwM2NUOiBEcml2ZXJcdTAwM2UgQWRhcHRlclx1MDAzY1RcdTAwM2Uge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMzI1LSAgICAvLy8gYHBoeWRldmAgbXVzdCBiZSBwYXNzZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgaW4gYHBoeV9kcml2ZXJgLlxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczozMjY6ICAgIHVuc2FmZSBleHRlcm4gXCYjMzQ7Q1wmIzM0OyBmbiBwcm9iZV9jYWxsYmFjayhwaHlkZXY6ICptdXQgYmluZGluZ3M6OnBoeV9kZXZpY2UpIC1cdTAwM2UgY19pbnQge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0zMjctICAgICAgICBmcm9tX3Jlc3VsdCh8fCB7XG4tLVxucnVzdC9rZXJuZWwvcGNpLnJzPTk5PWltcGxcdTAwM2NUOiBEcml2ZXJcdTAwM2UgQWRhcHRlclx1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvcGNpLnJzOjEwMDogICAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soXG5ydXN0L2tlcm5lbC9wY2kucnMtMTAxLSAgICAgICAgcGRldjogKm11dCBiaW5kaW5nczo6cGNpX2Rldixcbi0tXG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycz05Nj1pbXBsXHUwMDNjVDogRHJpdmVyXHUwMDNlIEFkYXB0ZXJcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzOjk3OiAgICBleHRlcm4gXCYjMzQ7Q1wmIzM0OyBmbiBwcm9iZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwbGF0Zm9ybV9kZXZpY2UpIC1cdTAwM2Uga2VybmVsOjpmZmk6OmNfaW50IHtcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzLTk4LSAgICAgICAgLy8gU0FGRVRZOiBUaGUgcGxhdGZvcm0gYnVzIG9ubHkgZXZlciBjYWxscyB0aGUgcHJvYmUgY2FsbGJhY2sgd2l0aCBhIHZhbGlkIHBvaW50ZXIgdG8gYVxuLS1cbnJ1c3Qva2VybmVsL3VzYi5ycz03Nj1pbXBsXHUwMDNjVDogRHJpdmVyXHUwMDNlIEFkYXB0ZXJcdTAwM2NUXHUwMDNlIHtcbnJ1c3Qva2VybmVsL3VzYi5yczo3NzogICAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcHJvYmVfY2FsbGJhY2soXG5ydXN0L2tlcm5lbC91c2IucnMtNzgtICAgICAgICBpbnRmOiAqbXV0IGJpbmRpbmdzOjp1c2JfaW50ZXJmYWNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzgxMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9sIFZpc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gZWZmZWN0aXZlbHkgcHJlc2VudCBmdW5jdGlvbiBzeW1ib2xzIHJlbGF0ZWQgdG8gb3VyIGRyaXZlcnMuIFdlJiMzOTt2ZSBnb3QgYHByb2JlX2NhbGxiYWNrYCBuZXN0ZWQgd2l0aGluIHRoZSBgQWRhcHRlciZsdDtUJmd0O2Agc3RydWN0dXJlLiBDcnVjaWFsbHksIHRoZXNlIGFyZSBnZW5lcmljIG92ZXIgYFQ6IERyaXZlcmAsIG1lYW5pbmcgdGhleSYjMzk7bGwgYmUgaW5zdGFudGlhdGVkIHNlcGFyYXRlbHkgZm9yIGVhY2ggc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBUaGF0JiMzOTtzIGdvaW5nIHRvIGxlYWQgdG8gbWFuZ2xlZCBzeW1ib2wgbmFtZXMsIHNvbWV0aGluZyBsaWtlIGAqQWRhcHRlcipwcm9iZV9jYWxsYmFjaypgLiBCdXQgdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgaGVscGZ1bCB0byB0aGUgdXNlci4KCkxpc3RpbmcgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaXRzZWxmLCBvciB0aGVzZSBwb3RlbnRpYWxseSBtdWx0aXBseSBpbnN0YW50aWF0ZWQgdmVyc2lvbnMsIGlzIGEgcmVjaXBlIGZvciBjb25mdXNpb24gYW5kIGRpZmZpY3VsdHkgaW4gbWF0Y2hpbmcgdGhlbSB0byB0aGUgZHJpdmVycyBwZW9wbGUgYXJlIGFjdHVhbGx5IHVzaW5nLiBJdCB3aWxsIGJlIG11Y2ggY2xlYXJlciB0byBqdXN0IHNob3cgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgcHJvYmUuCgpTbywgaW5zdGVhZCBvZiB0aGUgbWFuZ2xlZCBuYW1lcywgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBgcHJvYmVgIGZ1bmN0aW9ucyBvZiB0aGUgKnNhbXBsZSogZHJpdmVycy4gTGlzdGluZyBgU2FtcGxlRHJpdmVyOjpwcm9iZWAsIGBEbWFTYW1wbGVEcml2ZXI6OnByb2JlYCwgZXRjLiB3b3VsZCBiZSBmYXIgbW9yZSBpbnR1aXRpdmUuIEl0IGRpcmVjdGx5IG1hcHMgdGhlIGNvZGUgYmFjayB0byB0aGUgY29uY3JldGUgZHJpdmVycy4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yc2AgdG8gbWFrZSBzdXJlIHRoZSBzYW1wbGUgZHJpdmVycyBwcm92aWRlIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZuIHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c2FtcGxlcy9ydXN0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzPTExNz1pbXBsIHBsYXRmb3JtOjpEcml2ZXIgZm9yIFJ1c3REZWJ1Z0ZzIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTEyMi1cbnNhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnM6MTIzOiAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTEyNC0gICAgICAgIHBkZXY6IFx1MDAyNiYjMzk7Ym91bmQgcGxhdGZvcm06OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzPTU4PWltcGwgcGNpOjpEcml2ZXIgZm9yIERtYVNhbXBsZURyaXZlciB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTYyLVxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzOjYzOiAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnMtNjQtICAgICAgICBwZGV2OiBcdTAwMjYmIzM5O2JvdW5kIHBjaTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzPTMxPWltcGwgYXV4aWxpYXJ5OjpEcml2ZXIgZm9yIEF1eGlsaWFyeURyaXZlciB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycy0zNi1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnM6Mzc6ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnMtMzgtICAgICAgICBhZGV2OiBcdTAwMjYmIzM5O2JvdW5kIGF1eGlsaWFyeTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzPTcyPWltcGwgcGNpOjpEcml2ZXIgZm9yIFBhcmVudERyaXZlciB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycy03Ny1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnM6Nzg6ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnMtNzktICAgICAgICBwZGV2OiBcdTAwMjYmIzM5O2JvdW5kIHBjaTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzPTMzPWltcGwgaTJjOjpEcml2ZXIgZm9yIFNhbXBsZURyaXZlciB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycy00MC1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnM6NDE6ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMtNDItICAgICAgICBpZGV2OiBcdTAwMjYmIzM5O2JvdW5kIGkyYzo6STJjQ2xpZW50XHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzPTEzNz1pbXBsIHBjaTo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIge1xuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnMtMTQyLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yczoxNDM6ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnMtMTQ0LSAgICAgICAgcGRldjogXHUwMDI2JiMzOTtib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzPTEwMD1pbXBsIHBsYXRmb3JtOjpEcml2ZXIgZm9yIFNhbXBsZURyaXZlciB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzLTEwNS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yczoxMDY6ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycy0xMDctICAgICAgICBwZGV2OiBcdTAwMjYmIzM5O2JvdW5kIHBsYXRmb3JtOjpEZXZpY2VcdTAwM2NDb3JlXHUwMDNjJiMzOTtfXHUwMDNlXHUwMDNlLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnM9MjY9aW1wbCB1c2I6OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzLTMwLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yczozMTogICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy0zMi0gICAgICAgIGludGY6IFx1MDAyNiYjMzk7Ym91bmQgdXNiOjpJbnRlcmZhY2VcdTAwM2NDb3JlXHUwMDNjJiMzOTtfXHUwMDNlXHUwMDNlLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnM9MTA1PWltcGwgcGxhdGZvcm06OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzLTExMC1cbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnM6MTExOiAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzLTExMi0gICAgICAgIHBkZXY6IFx1MDAyNiYjMzk7Ym91bmQgcGxhdGZvcm06OkRldmljZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnM9MzY9aW1wbCBwbGF0Zm9ybTo6RHJpdmVyIGZvciBTYW1wbGVTb2NEcml2ZXIge1xuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycy00MS1cbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5yczo0MjogICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTQzLSAgICAgICAgcGRldjogXHUwMDI2JiMzOTtib3VuZCBwbGF0Zm9ybTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMzQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA4NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIENvbnVuZHJ1bSBhbmQgQ29uZmlnIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIGJlc3QgaW50ZWdyYXRlIHRoZXNlIFJ1c3QgZHJpdmVyIGNoYW5nZXMgd2l0aCB0aGUgZnV6emVyLCBzcGVjaWZpY2FsbHkgY29uc2lkZXJpbmcgYEZvY3VzU3ltYm9sc2AuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gdXNlIHRoZSBgcHJvYmVgIGZ1bmN0aW9ucyBmcm9tIHRoZSBzYW1wbGUgZHJpdmVycyBhcyB0YXJnZXRzLiBIb3dldmVyLCB0aGUgaXNzdWUgaXMgdGhhdCBzeXprYWxsZXIgcmVsaWVzIG9uIHN5bWJvbCBuYW1lcywgYW5kIFJ1c3QgdXNlcyBuYW1lIG1hbmdsaW5nLiBGb3IgaW5zdGFuY2UsIGBydXN0X2RyaXZlcl9wY2k6OlNhbXBsZURyaXZlcjo6cHJvYmVgIGJlY29tZXMgc29tZXRoaW5nIHVucmVhZGFibGUuCgpJJiMzOTttIHF1ZXN0aW9uaW5nIHdoZXRoZXIgc3l6a2FsbGVyIGV2ZW4gKnN1cHBvcnRzKiBSdXN0IGRlbWFuZ2xpbmcgb3IgbWF0Y2hpbmcuIEkgY291bGQgcHJvdmlkZSBlaXRoZXIgbmFtZSwgbWFuZ2xlZCBvciBkZW1hbmdsZWQsIGJ1dCB0aGUgc2FmZXN0IGFwcHJvYWNoIGlzIHRoZSBleGFjdCBuYW1lIGlmIGF2YWlsYWJsZS4gT3IsIHBlcmhhcHMsIEkgc2hvdWxkIGp1c3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGNoYW5nZXMgd2VyZSBtYWRlIGluIGBydXN0L2tlcm5lbC9wY2kucnNgIGFuZCBvdGhlciBzaW1pbGFyIGZpbGVzLiBJIHRob3VnaHQgYWJvdXQgYElkQXJyYXk6Om5ld2AgYW5kIGBJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleGAgYXMgcG9zc2liaWxpdGllcywgYnV0IHRoZXNlIGFyZSBgY29uc3QgZm5gIGFuZCBldmFsdWF0ZWQgYXQgY29tcGlsZS10aW1lLCBzbyB0aGV5IHdvbiYjMzk7dCBldmVuIGJlIGluIHRoZSBiaW5hcnksIHJpZ2h0PwoKVGhlbiBJIHdlbnQgdGhyb3VnaCB0aGUgcnVudGltZSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBGcm9tIGBydXN0L2tlcm5lbC9kZXZpY2VfaWQucnNgIGl0JiMzOTtzIGBpbmZvX3VuY2hlY2tlZGAsIGBpbmZvX3VuY2hlY2tlZF9vcHRgLiBUaGVzZSBhcmUgbWFya2VkIGFzIGB1bnNhZmUgZm5gIGFuZCBsaWtlbHkgaW5saW5lZC4gSW4gYHJ1c3Qva2VybmVsL2RyaXZlci5yc2AsIEkmIzM5O20gc2VlaW5nIGBpZF9pbmZvYCwgYWxzbyBgdW5zYWZlIGZuYCBhbmQgbGlrZWx5IGlubGluZWQuIE5vdyB0aGUgaW50ZXJlc3Rpbmcgb25lczogYHByb2JlX2NhbGxiYWNrYCBpbiBgcnVzdC9rZXJuZWwvcGNpLnJzYCwgYHJ1c3Qva2VybmVsL3VzYi5yc2AsIGBydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc2AsIGBydXN0L2tlcm5lbC9pMmMucnNgLCBhbmQgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2AuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIGhvdyBgcHJvYmVfY2FsbGJhY2tgIGlzIGV4cG9ydGVkLiBJdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIEMgY29kZSwgbGlrZSBpbiBgcnVzdC9rZXJuZWwvcGNpLnJzYCwgc28gaXQmIzM5O3MgKmRlZmluaXRlbHkqIGluIHRoZSBiaW5hcnkuIFRoZSBtYW5nbGVkIG5hbWUgaXMgZ29pbmcgdG8gYmUgc29tZXRoaW5nIGNyeXB0aWMgbGlrZSBgX1pOLi4ucHJvYmVfY2FsbGJhY2suLi5FYC4gR2l2ZW4gdGhlIG1hbmdsaW5nLCBpdCBzZWVtcyBjaGFsbGVuZ2luZyB0byBnZXQgdGhlIGV4YWN0IG5hbWUgd2l0aG91dCBkaWdnaW5nIGRlZXBlci4gTWF5YmUgSSBzaG91bGRuJiMzOTt0IHNwZWNpZnkgYEZvY3VzU3ltYm9sc2AgZm9yIHRoZXNlIFJ1c3QgZ2VuZXJpYyBmdW5jdGlvbnMsIG9yIGp1c3Qgb21pdCBgRm9jdXNTeW1ib2xzYCBjb21wbGV0ZWx5LiBJZiBJIHNraXAgYEZvY3VzU3ltYm9sc2AsIHRoZSBmdXp6ZXIgd2lsbCBzdGlsbCBoaXQgdGhlc2UgY29kZSBwYXRocyBuYXR1cmFsbHkgaWYgcmVhY2hhYmxlLCBzbyB0aGF0IG1ha2VzIHRoaW5ncyBlYXNpZXIuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzY2FuIGZvciBub24tZ2VuZXJpYyBmdW5jdGlvbnMuIEkgc2VlIGBhY3BpX29mX21hdGNoX2RldmljZWAgaW4gYGRyaXZlcnMvYWNwaS9idXMuY2AgY2hhbmdlZCB0byBgc3RhdGljYCwgYW5kIHRoZSByZW1vdmFsIG9mIGBydXN0X2hlbHBlcl9hY3BpX29mX21hdGNoX2RldmljZWAsIHNvIG5vIG5ldyBDIGZ1bmN0aW9ucyBhcmUgYWRkZWQuCgpOb3cgZm9yIHRoZSBjb25maWdzOiBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCB0byBlbmFibGUuIFRoZSBvbmVzIEkmIzM5O3ZlIGxpc3RlZCBhcmUgYFJVU1RgLCBgU0FNUExFU19SVVNUYCwgYFNBTVBMRV9SVVNUX0RNQWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfSTJDYCwgYFNBTVBMRV9SVVNUX0kyQ19DTElFTlRgLCBgU0FNUExFX1JVU1RfRFJJVkVSX1BDSWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk1gLCBgU0FNUExFX1JVU1RfRFJJVkVSX1VTQmAsIGBTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZYCwgYFNBTVBMRV9SVVNUX1NPQ2AsIGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAsIGBQV01fVEgxNTIwYCwgYW5kIGBDUFVGUkVRX0RUX1JVU1RgLgoKVGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAsIGBQV01fVEgxNTIwYCwgYW5kIGBDUFVGUkVRX0RUX1JVU1RgIGFyZSBhY3R1YWxseSBwcmVzZW50IGluIHRoZSB0cmVlIGFuZCBjYW4gYmUgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIChEUk1fTk9WQXxEUk1fVFlSfE5PVkFfQ09SRXxQV01fVEgxNTIwfENQVUZSRVFfRFRfUlVTVCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVmcmVxL0tjb25maWc9MjA3PWNvbmZpZyBDUFVGUkVRX0RUXG4tLVxuZHJpdmVycy9jcHVmcmVxL0tjb25maWctMjE4LVxuZHJpdmVycy9jcHVmcmVxL0tjb25maWc6MjE5OmNvbmZpZyBDUFVGUkVRX0RUX1JVU1RcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLTIyMC1cdHRyaXN0YXRlIFwmIzM0O1J1c3QgYmFzZWQgR2VuZXJpYyBEVCBiYXNlZCBjcHVmcmVxIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWc6MTpjb25maWcgRFJNX05PVkFcbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O05vdmEgRFJNIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZy0yLVxuZHJpdmVycy9ncHUvZHJtL3R5ci9LY29uZmlnOjM6Y29uZmlnIERSTV9UWVJcbmRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7VHlyIChSdXN0IERSTSBzdXBwb3J0IGZvciBBUk0gTWFsaSBDU0YtYmFzZWQgR1BVcylcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZzoxOmNvbmZpZyBOT1ZBX0NPUkVcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtOb3ZhIENvcmUgR1BVIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvcHdtL0tjb25maWc9NzYyPWNvbmZpZyBQV01fVEVHUkFcbi0tXG5kcml2ZXJzL3B3bS9LY29uZmlnLTc3Mi1cbmRyaXZlcnMvcHdtL0tjb25maWc6NzczOmNvbmZpZyBQV01fVEgxNTIwXG5kcml2ZXJzL3B3bS9LY29uZmlnLTc3NC1cdHRyaXN0YXRlIFwmIzM0O1RIMTUyMCBQV00gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzI1NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipSdXN0IERyaXZlciBMYW5kc2NhcGUgQXNzZXNzbWVudCoqCgpZZXMsIHRoYXQmIzM5O3MgYWJzb2x1dGVseSByaWdodC4gVGhlIGluaXRpYWwgYXNzZXNzbWVudCBjb25maXJtcyB0aGUgbmVlZCB0byBldmFsdWF0ZSBhdmFpbGFibGUgUnVzdCBkcml2ZXJzLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IG1hdHVyaXR5IGFuZCBhdmFpbGFiaWxpdHkgb2YgZHJpdmVycyBzcGVjaWZpY2FsbHkgd3JpdHRlbiBpbiBSdXN0LiBTbywgbm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSBvdGhlciBSdXN0IGRyaXZlcnMgb3V0IHRoZXJlPyBJIG5lZWQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIG9mIGxldmVyYWdpbmcgdGhpcyBsYW5ndWFnZSBmb3Igb3VyIHJlcXVpcmVtZW50cy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRoZSBsYW5kc2NhcGUgYWN0dWFsbHkgbG9va3MgbGlrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXIhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL3BjaS5ycz0xMjc9ICAgIGV4dGVybiBcJiMzNDtDXCYjMzQ7IGZuIHJlbW92ZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwY2lfZGV2KSB7XG4tLVxucnVzdC9rZXJuZWwvcGNpLnJzLTE0Ny0vLy9gYGBpZ25vcmVcbnJ1c3Qva2VybmVsL3BjaS5yczoxNDg6Ly8vIGtlcm5lbDo6bW9kdWxlX3BjaV9kcml2ZXIhIHtcbnJ1c3Qva2VybmVsL3BjaS5ycy0xNDktLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L21hY3Jvcy9tb2R1bGUucnM9NDI4PXB1YihjcmF0ZSkgZm4gbW9kdWxlKGluZm86IE1vZHVsZUluZm8pIC1cdTAwM2UgUmVzdWx0XHUwMDNjVG9rZW5TdHJlYW1cdTAwM2Uge1xuLS1cbnJ1c3QvbWFjcm9zL21vZHVsZS5ycy01MTYtICAgICAgICAvLy8gVGhlIGBMb2NhbE1vZHVsZWAgdHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIGNyZWF0ZWQgYnkgYG1vZHVsZSFgLFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzOjUxNzogICAgICAgIC8vLyBgbW9kdWxlX3BjaV9kcml2ZXIhYCwgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhYCwgZXRjLlxucnVzdC9tYWNyb3MvbW9kdWxlLnJzLTUxOC0gICAgICAgIHR5cGUgTG9jYWxNb2R1bGUgPSAjdHlwZV87XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzPTExMD0gICAgZm4gZHJvcChzZWxmOiBQaW5cdTAwM2NcdTAwMjZtdXQgU2VsZlx1MDAzZSkge1xuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycy0xMjUtXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnM6MTI2Omtlcm5lbDo6bW9kdWxlX3BjaV9kcml2ZXIhIHtcbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycy0xMjctICAgIHR5cGU6IERtYVNhbXBsZURyaXZlcixcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzPTE4Mj0gICAgZm4gZHJvcChcdTAwMjZtdXQgc2VsZikge1xuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnMtMTg2LVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yczoxODc6a2VybmVsOjptb2R1bGVfcGNpX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xODgtICAgIHR5cGU6IFNhbXBsZURyaXZlcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NDMKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhYCBNYWNybyoqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhYC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleHBhbnNpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcGxhdGZvcm0gZHJpdmVyIGluZnJhc3RydWN0dXJlIGluIHRoZSBrZXJuZWwuIEkgYWxyZWFkeSBrbm93IHRoZSBiYXNpY3MsIGJ1dCBJIG5lZWQgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgbWFjcm8mIzM5O3Mgc3BlY2lmaWMgcm9sZS4gSSB3YW50IHRvIHNlZSBob3cgaXQgcmVnaXN0ZXJzIHRoZSBkcml2ZXIsIGhhbmRsZXMgcHJvYmUvcmVtb3ZlIGZ1bmN0aW9ucywgYW5kIGxpa2VseSBtYW5hZ2VzIHRoZSBkcml2ZXImIzM5O3MgbGlmZXRpbWUgd2l0aGluIHRoZSBwbGF0Zm9ybSBidXMgc3lzdGVtLiBJIGV4cGVjdCBpdCYjMzk7cyBhIGNvbnZlbmllbmNlIG1hY3JvLCBidXQgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnZlbmllbmNlIGZhY3RvciBpcyBpbXBsZW1lbnRlZCB1bmRlciB0aGUgaG9vZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIGhvdyBkZXZpY2UgbWF0Y2hpbmcgaXMgaGFuZGxlZCwgYW5kIHdoYXQgbWVjaGFuaXNtcyBhcmUgdXNlZCBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGRyaXZlci4gTGV0JiMzOTtzIHNlZSBob3cgbXVjaCBib2lsZXJwbGF0ZSBpdCBhYnN0cmFjdHMgYW5kIHdoYXQgcmVtYWlucyBleHBvc2VkLiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIG9uZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzPTIwNj0gICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuLS1cbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTQtXG5kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnM6MjE1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTYtICAgIHR5cGU6IENQVUZyZXFEVERyaXZlcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHlyL3R5ci5ycy0xNS1cbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzOjE2Omtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xuZHJpdmVycy9ncHUvZHJtL3R5ci90eXIucnMtMTctICAgIHR5cGU6IFR5clBsYXRmb3JtRHJpdmVyLFxuLS1cbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzPTEzNz0gICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cdTAwM2UgT3B0aW9uXHUwMDNjYWNwaTo6SWRUYWJsZVx1MDAzY1NlbGY6OklkSW5mb1x1MDAzZVx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMtMTQ2LS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzOjE0NzovLy8ga2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycy0xNDgtLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L2tlcm5lbC9wd20ucnM9NzM0PW1hY3JvX3J1bGVzISBtb2R1bGVfcHdtX3BsYXRmb3JtX2RyaXZlciB7XG5ydXN0L2tlcm5lbC9wd20ucnMtNzM1LSAgICAoJCgkdXNlcl9hcmdzOnR0KSopID1cdTAwM2Uge1xucnVzdC9rZXJuZWwvcHdtLnJzOjczNjogICAgICAgICRjcmF0ZTo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xucnVzdC9rZXJuZWwvcHdtLnJzLTczNy0gICAgICAgICAgICAkKCR1c2VyX2FyZ3MpKlxuLS1cbnJ1c3QvbWFjcm9zL21vZHVsZS5ycz00Mjg9cHViKGNyYXRlKSBmbiBtb2R1bGUoaW5mbzogTW9kdWxlSW5mbykgLVx1MDAzZSBSZXN1bHRcdTAwM2NUb2tlblN0cmVhbVx1MDAzZSB7XG4tLVxucnVzdC9tYWNyb3MvbW9kdWxlLnJzLTUxNi0gICAgICAgIC8vLyBUaGUgYExvY2FsTW9kdWxlYCB0eXBlIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgY3JlYXRlZCBieSBgbW9kdWxlIWAsXG5ydXN0L21hY3Jvcy9tb2R1bGUucnM6NTE3OiAgICAgICAgLy8vIGBtb2R1bGVfcGNpX2RyaXZlciFgLCBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlciFgLCBldGMuXG5ydXN0L21hY3Jvcy9tb2R1bGUucnMtNTE4LSAgICAgICAgdHlwZSBMb2NhbE1vZHVsZSA9ICN0eXBlXztcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTU3LVxuc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5yczo1ODprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbnNhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMtNTktICAgIHR5cGU6IFJ1c3REZWJ1Z0ZzLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycz0xODE9ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMtMTg1LVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzOjE4NjprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycy0xODctICAgIHR5cGU6IFNhbXBsZURyaXZlcixcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzPTEzMT0gICAgZm4gdW5iaW5kXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzLTE0MS1cbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnM6MTQyOmtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycy0xNDMtICAgIHR5cGU6IFNhbXBsZURyaXZlcixcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnM9NDI9ICAgIGZuIHByb2JlXHUwMDNjJiMzOTtib3VuZFx1MDAzZShcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnMtNzEtXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnM6NzI6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnMtNzMtICAgIHR5cGU6IFNhbXBsZVNvY0RyaXZlcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgRHJpdmVycyBhbmQgTW9kdWxlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgcG9pbnRzIHRvIGEgZmV3IGtleSBkcml2ZXJzIGFuZCBtb2R1bGVzIHRoYXQgbmVlZCBjbG9zZXIgZXhhbWluYXRpb24uIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYENQVUZSRVFfRFRfUlVTVGAsIHdoaWNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGxpa2VseSByZWxhdGluZyB0byBDUFUgZnJlcXVlbmN5IHNjYWxpbmcgYW5kIGRldmljZSB0cmVlIGludGVncmF0aW9uLCBhbGwgd3JpdHRlbiBpbiBSdXN0LiBUaGVuIHRoZXJlJiMzOTtzIGBEUk1fVFlSYCwgc3VnZ2VzdGluZyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIGRpc3BsYXkgZHJpdmVyLCBhbmQgYFBXTV9USDE1MjBgIHZpYSBgbW9kdWxlX3B3bV9wbGF0Zm9ybV9kcml2ZXIhYCwgd2hpY2ggcHJvYmFibHkgZGVhbHMgd2l0aCBwdWxzZS13aWR0aCBtb2R1bGF0aW9uLCBsaWtlbHkgdGhlIFRIMTUyMCB2YXJpYW50LiBUaGUgaW5jbHVzaW9uIG9mIGBtb2R1bGVfcHdtX3BsYXRmb3JtX2RyaXZlciFgIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc3VnZ2VzdHMgYSBjZXJ0YWluIHBsYXRmb3JtIGFic3RyYWN0aW9uIGxheWVyIGFuZCBob3cgdGhlIFBXTSBkcml2ZXIgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLgoKTm93LCBgRFJNX05PVkFgIGlzIGFsc28gb24gdGhlIGxpc3Qg4oCTIGNvdWxkIGJlIGFub3RoZXIgZGlzcGxheSBkcml2ZXIsIG9yIHBlcmhhcHMgYXV4aWxpYXJ5IHRvIGBEUk1fVFlSYC4gRmluYWxseSwgdGhlcmUmIzM5O3MgYE5PVkFfQ09SRWAsIGZsYWdnZWQgYXMgUENJLiBUaGlzIG9uZSBuZWVkcyBhIHRob3JvdWdoIGxvb2suIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGBOT1ZBX0NPUkVgIGlzIHRoZSBjcnVjaWFsIHBpZWNlLCBhY3RpbmcgYXMgdGhlIGNvcmUgUENJIGRyaXZlciBmb3IgdGhlICYjMzQ7Tk9WQSYjMzQ7IGhhcmR3YXJlLiBJIHRoaW5rIEkmIzM5O2xsIHN0YXJ0IHRoZXJlLiBVbmRlcnN0YW5kaW5nIGBOT1ZBX0NPUkVgIHdpbGwgbGlrZWx5IHNoZWQgbGlnaHQgb24gaG93IGFsbCB0aGVzZSBvdGhlciBkcml2ZXJzLCBlc3BlY2lhbGx5IHRoZSBkaXNwbGF5LXJlbGF0ZWQgb25lcywgaW50ZXJmYWNlIGFuZCBhcmUgbWFuYWdlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXIhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvbm92YS1jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzYzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIE5vdmEgR1BVIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbm92YWAgR1BVIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5yc2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgdGhlICYjMzQ7Y29yZSYjMzQ7IGRpcmVjdG9yeSBvZnRlbiBob3VzZXMgdGhlIGVzc2VudGlhbCBsb2dpYyBmb3IgYSBkcml2ZXIuIE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZpbGUgd2lsbCBjb250YWluIHRoZSBtYWluIGRyaXZlciBlbnRyeSBwb2ludHMgYW5kLCB2ZXJ5IGxpa2VseSwgdGhlIGRlZmluaXRpb24gb3IgdXNhZ2Ugb2YgYSBgbW9kdWxlX2AgdmFyaWFibGUgb3Igc3RydWN0dXJlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gaW4ga2VybmVsIG1vZHVsZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgdGhlIGNvcmUgbW9kdWxlLCBvciBwb3NzaWJseSBhIGhlbHBlciBtb2R1bGUuIEkmIzM5O2xsIGxvb2sgZm9yIGhvdyB0aGUga2VybmVsIGlzIGhhbmRsaW5nIHRoaXMgZHJpdmVyIG1vZHVsZSYjMzk7cyBpbnRlcmFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L25vdmEtY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvbm92YS1jb3JlL2Zpcm13YXJlLnJzPTQ0NT0gICAgcHViKGNyYXRlKSBjb25zdCBmbiBjcmVhdGUoXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUucnM6NDQ2OiAgICAgICAgbW9kdWxlX25hbWU6IFx1MDAyNiYjMzk7c3RhdGljIGNvcmU6OmZmaTo6Q1N0cixcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5ycy00NDctICAgICkgLVx1MDAzZSBmaXJtd2FyZTo6TW9kSW5mb0J1aWxkZXJcdTAwM2NOXHUwMDNlIHtcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5yczo0NDg6ICAgICAgICBsZXQgbXV0IHRoaXMgPSBTZWxmKGZpcm13YXJlOjpNb2RJbmZvQnVpbGRlcjo6bmV3KG1vZHVsZV9uYW1lKSk7XG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUucnMtNDQ5LSAgICAgICAgbGV0IG11dCBpID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzPTU2PSAgICBmbiBpbml0KG1vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMga2VybmVsOjpUaGlzTW9kdWxlKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGYsIEVycm9yXHUwMDNlIHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzLTc4LVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL25vdmFfY29yZS5yczo3OTprZXJuZWw6Om1vZHVsZV9maXJtd2FyZSEoZmlybXdhcmU6Ok1vZEluZm9CdWlsZGVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4NDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBgbm92YV9jb3JlYCBEcml2ZXIgSW1wbGVtZW50YXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIGEgcmVmZXJlbmNlIHRvIGBub3ZhX2NvcmVgLi4uIGFuZCBJIGltbWVkaWF0ZWx5IGFzc3VtZSBpdCYjMzk7cyBlbXBsb3lpbmcgYSBtYWNybywgbW9zdCBsaWtlbHkgYG1vZHVsZSFgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGdpdmVuIGl0cyBsaWtlbHkgcm9sZSBpbiBhIGtlcm5lbCBkcml2ZXIuIEdvb2QgcGxhY2UgdG8gc3RhcnQuIExldCYjMzk7cyBnZXQgcmlnaHQgdG8gdGhlIHNvdXJjZS4gVGhlIG5hdHVyYWwgcGxhY2UgdG8gbG9vayBpcyBgZHJpdmVycy9ncHUvbm92YS1jb3JlL25vdmFfY29yZS5yc2AuIFRpbWUgdG8gb3BlbiB1cCB0aGF0IGZpbGUgYW5kIHN0YXJ0IGRpc3NlY3RpbmcgdGhlIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoZSBtb2R1bGUgYW5kIHdoYXQgaW5pdGlhbGl6YXRpb24vbWFuYWdlbWVudCBzdHJhdGVnaWVzIGFyZSBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGUhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvbm92YS1jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzPTU2PSAgICBmbiBpbml0KG1vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMga2VybmVsOjpUaGlzTW9kdWxlKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGYsIEVycm9yXHUwMDNlIHtcbi0tXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzLTY5LVxuZHJpdmVycy9ncHUvbm92YS1jb3JlL25vdmFfY29yZS5yczo3MDptb2R1bGUhIHtcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9ub3ZhX2NvcmUucnMtNzEtICAgIHR5cGU6IE5vdmFDb3JlTW9kdWxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE3NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUnVzdC1CYXNlZCBNb2R1bGUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgdXNpbmcgYG1vZHVsZSFgLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIGJyZWFrIGRvd24gdGhlc2UgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQuIFdlJiMzOTt2ZSBnb3QgYFJVU1RgLCBgU0FNUExFU19SVVNUYCwgYFNBTVBMRV9SVVNUX0RNQWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfSTJDYCwgYFNBTVBMRV9SVVNUX0kyQ19DTElFTlRgLCBgU0FNUExFX1JVU1RfRFJJVkVSX1BDSWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk1gLCBgU0FNUExFX1JVU1RfRFJJVkVSX1VTQmAsIGBTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZYCwgYW5kIGBTQU1QTEVfUlVTVF9TT0NgLiBUaGF0IGNvdmVycyBhIGdvb2QgcmFuZ2Ugb2Ygc2FtcGxlIGRyaXZlcnMuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBkaXNwbGF5IG9wdGlvbnMgYXMgd2UgaGF2ZSBgRFJNX05PVkFgLCBgRFJNX1RZUmAsIGBOT1ZBX0NPUkVgLiBXYWl0LCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIHRoYXQgYERSTV9OT1ZBYCBhbmQgYE5PVkFfQ09SRWAgaW5oZXJlbnRseSBkZXBlbmQgb24gYERSTWAsIHNvIGVuYWJsaW5nIHRob3NlIG1lYW5zIGBEUk1gIGlzIGltcGxpZWQuIFRoZW4gd2UgaGF2ZSBgUFdNX1RIMTUyMGAgd2hpY2ggcmVxdWlyZXMgYFBXTWAsIGFuZCB0aGVuIHRoZXJlJiMzOTtzIGBDUFVGUkVRX0RUX1JVU1RgIHJlcXVpcmluZyBgQ1BVRlJFUV9EVGAuIEkyQywgUENJLCBVU0IsIHBsYXRmb3JtIGFuZCBhdXhpbGlhcnkgYXJlIGFsbCB0YWtlbiBjYXJlIG9mIGluIHRoaXMgc2FtcGxlLgoKU28sIGBTQU1QTEVfUlVTVF9EUklWRVJfSTJDYCBuZWVkcyBgSTJDYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QQ0lgIG5lZWRzIGBQQ0lgLCBhbmQgYFNBTVBMRV9SVVNUX0RSSVZFUl9VU0JgIGRlcGVuZHMgb24gYFVTQmAuIEl0IGxvb2tzIGxpa2UgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAgaXMgb24gdGhlIHBsYXRmb3JtIGJ1cywgd2hpY2ggc2hvdWxkIGFsd2F5cyBiZSBvbi4gYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgIG5lZWRzIGBBVVhJTElBUllfQlVTYCwgc28gdGhhdCYjMzk7cyBhbGwuCgpJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IG90aGVyIFJ1c3QtYmFzZWQgZHJpdmVycyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZCBpbiBhZGRpdGlvbiB0byB0aGVzZSBzYW1wbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaTJjX2RyaXZlciEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvaTJjLnJzPTIyNT0gICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cdTAwM2UgT3B0aW9uXHUwMDNjYWNwaTo6SWRUYWJsZVx1MDAzY1NlbGY6OklkSW5mb1x1MDAzZVx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvaTJjLnJzLTIzNC0vLy8gYGBgaWdub3JlXG5ydXN0L2tlcm5lbC9pMmMucnM6MjM1Oi8vLyBrZXJuZWw6Om1vZHVsZV9pMmNfZHJpdmVyISB7XG5ydXN0L2tlcm5lbC9pMmMucnMtMjM2LS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycz02MD0gICAgZm4gdW5iaW5kXHUwMDNjJiMzOTtib3VuZFx1MDAzZShpZGV2OiBcdTAwMjYmIzM5O2JvdW5kIGkyYzo6STJjQ2xpZW50XHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSwgX3RoaXM6IFBpblx1MDAzY1x1MDAyNlNlbGZcdTAwM2UpIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzLTY0LVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5yczo2NTprZXJuZWw6Om1vZHVsZV9pMmNfZHJpdmVyISB7XG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzLTY2LSAgICB0eXBlOiBTYW1wbGVEcml2ZXIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTgwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBVU0IgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgVVNCIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4uLiBhbmQgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiB3aGF0JiMzOTtzIHRoZSBkZWFsIHdpdGggYG1vZHVsZV91c2JfZHJpdmVyIWA/IFRoYXQgbWFjcm8gb3IgZnVuY3Rpb24sIHdoYXRldmVyIGl0JiMzOTtzIGRlZmluZWQgYXMsIGlzIHRoZSBjcnVjaWFsIGVudHJ5IHBvaW50LCBpc24mIzM5O3QgaXQ/IEl0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHdoZXJlIHRoZSBrZXJuZWwgYW5kIG91ciBkcml2ZXIgYXJlIGxpbmtlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwaWVjZSBmaXJzdC4gSXMgaXQgdXNlZCB0byByZWdpc3RlciB0aGUgZHJpdmVyPyBEZXNjcmliZSB0aGUgaW50ZXJmYWNlcyB0aGUgVVNCIGRldmljZSBzdXBwb3J0cz8gT3IgaXMgaXQgbW9yZSBpbnZvbHZlZCB0aGFuIHRoYXQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG5hbWU/IElzIGl0IGEgcnVzdCBzcGVjaWZpYyB0aGluZywgb3IgaXMgaXQgY29tbW9uIGluIG90aGVyIGxhbmd1YWdlcz8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCB3aGVyZSBJIGZpbmQgaXQgdXNlZD8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGdvdGNoYXM/IEkgbmVlZCB0byBhbmFseXplIGl0cyBzdHJ1Y3R1cmUuIElzIGl0IGEgY29tcGlsZS10aW1lIG1lY2hhbmlzbSwgbGlua2luZyBhIGRyaXZlciBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5PyBPciBkb2VzIGl0IHBlcmZvcm0gcnVudGltZSByZWdpc3RyYXRpb24/IERlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBpdCBjb3VsZCBiZSBhIHNpbXBsZSBpbnRlcmZhY2UuIElmIEkgdW5kZXJzdGFuZCB0aGF0IG1hY3JvJiMzOTtzIGZ1bmN0aW9uIHRoZW4gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBtYWtlIG1vcmUgc2Vuc2UuIE15IHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBtYWNybyBpcyBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV91c2JfZHJpdmVyISYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC91c2IucnM9NDcyPXVuc2FmZSBpbXBsIFN5bmMgZm9yIERldmljZVx1MDAzY2RldmljZTo6Qm91bmRcdTAwM2Uge31cbi0tXG5ydXN0L2tlcm5lbC91c2IucnMtNDc4LS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL3VzYi5yczo0Nzk6Ly8vIG1vZHVsZV91c2JfZHJpdmVyISB7XG5ydXN0L2tlcm5lbC91c2IucnMtNDgwLS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycz00Mj0gICAgZm4gZGlzY29ubmVjdFx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoaW50ZjogXHUwMDI2JiMzOTtib3VuZCB1c2I6OkludGVyZmFjZVx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsIF9kYXRhOiBQaW5cdTAwM2NcdTAwMjZTZWxmXHUwMDNlKSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy00Ny1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnM6NDg6a2VybmVsOjptb2R1bGVfdXNiX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy00OS0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY3NwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0JiMzOTtzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIENvZGUgQXJjaGl0ZWN0dXJlIEVsZW1lbnQqKgoKSG1tLCBJJiMzOTttIGp1c3QgY29uc2lkZXJpbmcgYSBzcGVjaWZpYyBwb2ludCB3aXRoaW4gdGhpcyBhcmNoaXRlY3R1cmUuIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCBgbW9kdWxlX2F1eGlsaWFyeV9kcml2ZXIhYD8gSXQgaW1tZWRpYXRlbHkganVtcHMgb3V0LiBJcyBpdCBhIGNlbnRyYWwgY29tcG9uZW50LCBhIHV0aWxpdHksIG9yIGEgbW9yZSBvYnNjdXJlIHBhcnQgb2YgdGhlIG92ZXJhbGwgZmxvdz8gSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgaXRzIHB1cnBvc2UsIGl0cyBwb3RlbnRpYWwgZm9yIHJldXNlLCBhbmQgaWYgaXQgY291bGQgYmVjb21lIGEgYm90dGxlbmVjayBvciBhIHBvaW50IG9mIGNyaXRpY2FsIGZhaWx1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyB0aGVyZSBhIGJldHRlciB3YXk/IFBlcmhhcHMgaXQgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIG9yIGltcHJvdmVkPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfYXV4aWxpYXJ5X2RyaXZlciEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5ycy0xMC1cbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL25vdmEucnM6MTE6a2VybmVsOjptb2R1bGVfYXV4aWxpYXJ5X2RyaXZlciEge1xuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5ycy0xMi0gICAgdHlwZTogTm92YURyaXZlcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE5MzkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipSdXN0IERyaXZlciBNb2R1bGUgRGl2ZSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJiMzOTttIHJldmlld2luZyB0aGlzIFJ1c3QgY29kZSwgYW5kIEkmIzM5O3ZlIGp1c3QgbGFuZGVkIG9uIGBzYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzYC4gQW5kIHdoYXQmIzM5O3MgdGhpcz8gSSYjMzk7bSBzZWVpbmcgYSBgbW9kdWxlX2F1eGlsaWFyeV9kcml2ZXIhYCBtYWNybyBpbnZvY2F0aW9uLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgc3BlY2lmaWMgYXV4aWxpYXJ5IGZpbGUgaXMgbGV2ZXJhZ2luZyBhIGRyaXZlciBtYWNybyBhbmQsIGJ5IGV4dGVuc2lvbiwgd2hlcmUgZWxzZSB0aGlzIGRlc2lnbiBkZWNpc2lvbiBtYXkgcHJlc2VudC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIG1vcmUgbnVhbmNlZCBiZWhhdmlvcnMgdGhhdCBzaG91bGQgaW5mbHVlbmNlIGZ1cnRoZXIgd29yay4gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBnZW5lcmFsIHBhdHRlcm4gb2YgdGhpcyBtb2R1bGUgZGVzaWduLi4uIHJpZ2h0LCB0aGUgaW50ZW50aW9uIGhlcmUgaXMgbGlrZWx5IHRvIGRlZmluZSB0aGUgZHJpdmVyIGxvZ2ljIGluIGEgbW9kdWxhciBhbmQgcmV1c2FibGUgd2F5LCBwcmVzdW1hYmx5IGZvciBtYW5hZ2luZyBzb21lIGF1eGlsaWFyeSBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gdGhlIG1haW4gZHJpdmVyIG9yIHRvIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uIGFuZCBlbmhhbmNlIG1haW50YWluYWJpbGl0eSwgcGVyaGFwcyB3aXRoaW4gYSBsYXJnZXIgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gZGlnIGludG8gYG1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyIWAgYW5kIHRyYWNlIGl0cyB1c2FnZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcyBhbmQgZGV0ZXJtaW5lIGV4YWN0bHkgd2hhdCBhdXhpbGlhcnkgZnVuY3Rpb25hbGl0eSBpdCYjMzk7cyBvcmNoZXN0cmF0aW5nIGhlcmUuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSBtYWNybyB0cmFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfYXV4aWxpYXJ5X2RyaXZlciEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL3J1c3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNDIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQXV4aWxpYXJ5IFJ1c3QgRHJpdmVyIENvZGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgUnVzdCBkcml2ZXIgYXV4aWxpYXJ5IGNvZGUuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBzYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzYC4gVGhpcyBmaWxlIGlzIGxpa2VseSBwcm92aWRpbmcgY3JpdGljYWwgc3VwcG9ydGluZyBmdW5jdGlvbnMgb3Igc3RydWN0dXJlcyBmb3IgdGhlIG1haW4gZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIGFuYWx5emUgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIGl0cyBjb3JlIHJlc3BvbnNpYmlsaXRpZXMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucywgaGVscGVyIGZ1bmN0aW9ucywgYW5kIGVycm9yIGhhbmRsaW5nIG1lY2hhbmlzbXMuIFVuZGVyc3RhbmRpbmcgdGhpcyBhdXhpbGlhcnkgY29kZSBpcyBjcnVjaWFsIGZvciBhIGNvbXBsZXRlIGdyYXNwIG9mIGhvdyB0aGUgUnVzdCBkcml2ZXIgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZSEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnM9MTQ2PSAgICBmbiBpbml0KG1vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMga2VybmVsOjpUaGlzTW9kdWxlKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGYsIEVycm9yXHUwMDNlIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzLTE1My1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnM6MTU0Om1vZHVsZSEge1xuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycy0xNTUtICAgIHR5cGU6IFNhbXBsZU1vZHVsZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1NTkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCBJIHNlZSB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdXNpbmcgYG1vZHVsZSFgIHRvIGRlZmluZSBpdHMgc3RydWN0dXJlLiBUaGF0JiMzOTtzIGEgZmFtaWxpYXIgcGF0dGVybi4gTGV0IG1lIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGVuYWJsZWQgY29uZmlndXJhdGlvbnMgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIHNjb3BlLiBPa2F5LCBoZXJlJiMzOTtzIHRoZSBsaXN0OiBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBgU0FNUExFX1JVU1RfU09DYCwgYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBgQ1BVRlJFUV9EVF9SVVNUYCwgYW5kIGBBVVhJTElBUllfQlVTYC4gSG1tLCBpdCYjMzk7cyBhIHByZXR0eSBkaXZlcnNlIHNldCwgY292ZXJpbmcgZHJpdmVycywgc2FtcGxlcywgYW5kIFNvQy1zcGVjaWZpYyBlbGVtZW50cy4KCldhaXQgYSBzZWNvbmQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBTZWVpbmcgYEFVWElMSUFSWV9CVVNgIGluIHRoZXJlIHJhaXNlcyBhIGZsYWcuIEkgcmVjYWxsIHRoYXQgYmVpbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gdmFsdWUuIEl0JiMzOTtzIGEgY29tbW9uIGFyZWEgZm9yIGVycm9ycyBpbiB0aGVzZSBzZXR1cHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG5hbWUgYW5kIHVzZSBhcmUgY29ycmVjdCBoZXJlLCBjb25zaWRlcmluZyBpdHMgcG90ZW50aWFsIHRvIGluZmx1ZW5jZSBhIG51bWJlciBvZiBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuIExldCBtZSBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBuYW1lIGlzIGFwcHJvcHJpYXRlLCBnaXZlbiB0aGUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFVWElMSUFSWV9CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL0tjb25maWc9Mj1tZW51IFwmIzM0O0dlbmVyaWMgRHJpdmVyIE9wdGlvbnNcJiMzNDtcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTMtXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZzo0OmNvbmZpZyBBVVhJTElBUllfQlVTXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy01LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE2NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUgQ2hhbmdlcyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhlIGBBVVhJTElBUllfQlVTYC4gR290IGl0LiBOb3csIHdoYXQmIzM5O3MgYmVlbiBzcGVjaWZpY2FsbHkgYWx0ZXJlZD8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29yZSBjaGFuZ2VzIHNlZW0gdG8gYmUgaW4gdGhlIGBwcm9iZWAgc2lnbmF0dXJlcyB3aXRoaW4gYm90aCBgcGNpOjpEcml2ZXJgIGFuZCBgdXNiOjpEcml2ZXJgLCBhbmQgYWxzbyB0b3VjaGVzIG9uIGBJZEFycmF5OjpuZXdgIGFuZCBgSWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXhgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIHBvdGVudGlhbCBhZGp1c3RtZW50cyB0byBob3cgZGV2aWNlIElEcyBhcmUgaGFuZGxlZCBkdXJpbmcgdGhlIHByb2JpbmcgcHJvY2Vzcy4gQmV5b25kIHRoYXQsIHRoZXJlIGhhdmUgYmVlbiBlZGl0cyB0byBgcHJvYmVfY2FsbGJhY2tgIGFjcm9zcyBgcGNpLnJzYCwgYHVzYi5yc2AsIGBwbGF0Zm9ybS5yc2AsIGBpMmMucnNgLCBhbmQgYGF1eGlsaWFyeS5yc2AuIEFuZCwgdGhlcmUgYXJlIGNoYW5nZXMgdG8gdGhlIGBpZF9pbmZvYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBBZGFwdGVyYCB0cmFpdC4gVGhpcyBpcyBsaWtlbHkgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIGRldmljZSBtYXRjaGluZyBwcm9jZXNzIGFjcm9zcyBhIHZhcmlldHkgb2YgYnVzc2VzLgoKRmluYWxseSwgdGhlcmUmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gYGFjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBpbiBgZHJpdmVycy9hY3BpL2J1cy5jYC4gUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBvbmUuIEFoLCBpdCYjMzk7cyBiZWVuIGNoYW5nZWQgdG8gYHN0YXRpY2AuIE9rYXksIGN1cmlvdXMuIFRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzOiB3aGVyZSBpcyBpdCBjYWxsZWQgZnJvbT8gTGV0JiMzOTtzIGNoZWNrLi4uIEl0IHNlZW1zIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBhY3BpX2NvbXBhbmlvbl9tYXRjaGAgYWxzbyBpbiBgZHJpdmVycy9hY3BpL2J1cy5jYC4gT2theSwgbGV0JiMzOTtzIGdvIGNoZWNrIGBhY3BpX2NvbXBhbmlvbl9tYXRjaGAgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FjcGlfY29tcGFuaW9uX21hdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY3BpL2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNwaS9idXMuYz04NTA9Ym9vbCBhY3BpX2RldmljZV9pc19maXJzdF9waHlzaWNhbF9ub2RlKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtODU2LS8qXG5kcml2ZXJzL2FjcGkvYnVzLmM6ODU3OiAqIGFjcGlfY29tcGFuaW9uX21hdGNoKCkgLSBDYW4gd2UgbWF0Y2ggdmlhIEFDUEkgY29tcGFuaW9uIGRldmljZVxuZHJpdmVycy9hY3BpL2J1cy5jLTg1OC0gKiBAZGV2OiBEZXZpY2UgaW4gcXVlc3Rpb25cbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtODc2LSAqL1xuZHJpdmVycy9hY3BpL2J1cy5jOjg3Nzpjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFjcGlfY29tcGFuaW9uX21hdGNoKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9idXMuYy04Nzgte1xuLS1cbmRyaXZlcnMvYWNwaS9idXMuYz0xMDc2PWNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqYWNwaV9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkICppZHMsXG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jLTEwNzgte1xuZHJpdmVycy9hY3BpL2J1cy5jOjEwNzk6XHRyZXR1cm4gYWNwaV9tYXRjaF9hY3BpX2RldmljZShpZHMsIGFjcGlfY29tcGFuaW9uX21hdGNoKGRldikpO1xuZHJpdmVycy9hY3BpL2J1cy5jLTEwODAtfVxuLS1cbmRyaXZlcnMvYWNwaS9idXMuYz0xMDgzPWNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4Ni1cdGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcyA9IGRldi1cdTAwM2Vkcml2ZXItXHUwMDNlb2ZfbWF0Y2hfdGFibGU7XG5kcml2ZXJzL2FjcGkvYnVzLmM6MTA4NzpcdGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldiA9IGFjcGlfY29tcGFuaW9uX21hdGNoKGRldik7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4OC1cdGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqYWNwaV9pZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jPTExMTE9Ym9vbCBhY3BpX2RyaXZlcl9tYXRjaF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYWNwaS9idXMuYy0xMTE5LVxuZHJpdmVycy9hY3BpL2J1cy5jOjExMjA6XHRyZXR1cm4gX19hY3BpX21hdGNoX2RldmljZShhY3BpX2NvbXBhbmlvbl9tYXRjaChkZXYpLCBhY3BpX2lkcywgb2ZfaWRzLCBOVUxMLCBOVUxMKTtcbmRyaXZlcnMvYWNwaS9idXMuYy0xMTIxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyNzYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBBQ1BJL09GIE1hdGNoaW5nIENsZWFudXAgb24gUnVzdCBEcml2ZXJzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBhIGNsZWFudXAsIGVzc2VudGlhbGx5LiBXZSYjMzk7cmUgbWFraW5nIGBhY3BpX29mX21hdGNoX2RldmljZWAgc3RhdGljIGFuZCByZW1vdmluZyBhIFJ1c3QgaGVscGVyIGZ1bmN0aW9uLCB3aGljaCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFRoZSBrZXkgaXMgdGhhdCB0aGUgUnVzdCBjb2RlIG5vdyBjYWxscyBgYmluZGluZ3M6OmRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZm9yIG1hdGNoIGRhdGEgaW5zdGVhZCBvZiBkb2luZyB0aGUgQUNQSS9PRiBtYXRjaGluZyBpdHNlbGYsIHdoaWNoICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgYW5kIEkmIzM5O20gdXNpbmcgbXkgZXhwZXJpZW5jZSBhcyBhIGtlcm5lbCBleHBlcnQgdG8gYXNzZXNzLiBJZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBiZWhhdmVzIGRpZmZlcmVudGx5LCB3ZSBjb3VsZCBoYXZlIGlzc3Vlcy4gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGEgbWl4IG9mIEFDUEksIE9GLCBhbmQgSTJDL1NQSSB0YWJsZXMsIHNvIHRoZSBvbGQgYXBwcm9hY2ggb2YgbWFudWFsIGNoZWNrcyBpbiBSdXN0IGlzIGdvbmUuCgpUaGUgY29yZSBvZiB0aGlzIGxvZ2ljIGNoYW5nZSBpcyBhY3R1YWxseSBpbiBgcnVzdC9rZXJuZWwvZHJpdmVyLnJzYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWRfaW5mb2AgZnVuY3Rpb24sIHdoaWNoIGlzLCBpbXBvcnRhbnRseSwgaW5saW5lLiBUaGlzIG1lYW5zIGl0IGdldHMgY29tcGlsZWQgZGlyZWN0bHkgaW50byBlYWNoIGRyaXZlciYjMzk7cyBgcHJvYmVfY2FsbGJhY2tgLiBUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBwb2ludCBmb3IgdmFsaWRhdGlvbiBpcyB0aGUgYHByb2JlYCBmdW5jdGlvbnMgb2YgdGhlIHNhbXBsZSBkcml2ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGVzZSBhcmUgYWxsIGV4ZWN1dGVkLgoKTGV0JiMzOTtzIHF1aWNrbHkgbGlzdCB0aGVtOiBgcnVzdF9kcml2ZXJfcGNpOjpTYW1wbGVEcml2ZXI6OnByb2JlYCwgYHJ1c3RfZHJpdmVyX3VzYjo6U2FtcGxlRHJpdmVyOjpwcm9iZWAsIGFuZCBzbyBvbi4KCk5vdywgYSByZWxhdGVkIHRob3VnaHQgb2NjdXJzOiBIb3cgZG9lcyB0aGlzIGltcGFjdCBvdXIgZnV6emluZyBzdHJhdGVneT8gSSYjMzk7bSB1c2luZyBzeXprYWxsZXIsIGFuZCBJJiMzOTttIGltbWVkaWF0ZWx5IGNvbmNlcm5lZCBhYm91dCBzeW1ib2wgbmFtZXMuIFJ1c3QgbWFuZ2xlcyBzeW1ib2wgbmFtZXMuIEZvciBleGFtcGxlLCBgU2FtcGxlRHJpdmVyOjpwcm9iZWAgaXMgZ29pbmcgdG8gYmUgYF9aTjE1cnVzdF9kcml2ZXJfcGNpMTJTYW1wbGVEcml2ZXI1cHJvYmUxN2guLi5FYCwgc28gcHJvdmlkaW5nIGBTYW1wbGVEcml2ZXI6OnByb2JlYCB0byBzeXprYWxsZXImIzM5O3MgYEZvY3VzU3ltYm9sc2AgbWlnaHQgbm90IHdvcmsuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIHN1YnN0cmluZyBtYXRjaGluZyBidXQgdGhlbiByZW1lbWJlcmVkIHRoYXQgdGhlIHN5emthbGxlciBgRm9jdXNTeW1ib2xzYCByZXF1aXJlcyBleGFjdCBtYXRjaGVzLgoKU2luY2UgUnVzdCBzeW1ib2wgbWFuZ2xpbmcgaW5jbHVkZXMgYSBoYXNoIHRoYXQgd2lsbCBjaGFuZ2UgYmV0d2VlbiBidWlsZHMsIGl0IHNlZW1zIGJldHRlciB0byBhdm9pZCBgRm9jdXNTeW1ib2xzYCBmb3IgUnVzdCBmdW5jdGlvbnMgdW5sZXNzIHdlIHVzZSBgI1tub19tYW5nbGVdYC4gSG93ZXZlciwgbm93IEkmIzM5O3ZlIG5vdGljZWQgYHByb2JlX2NhbGxiYWNrYCBpcyBgZXh0ZXJuICYjMzQ7QyYjMzQ7YCBidXQgaXQmIzM5O3MgZ2VuZXJpYywgc28gaXRzIG5hbWUgaXMgYWxzbyBtYW5nbGVkLgoKTGV0JiMzOTtzIHNlZTogYGFjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBpcyBhIEMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBub3cgc3RhdGljLCB3aGljaCBkb2VzbiYjMzk7dCBoZWxwIHdpdGggZXh0ZXJuYWwgc3ltYm9sIGxvb2t1cC4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgYSBDIGZ1bmN0aW9uLCBidXQgaXQmIzM5O3Mgbm90IG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIHNvIHRoZXJlJiMzOTtzIG5vIHN5bWJvbCBjaGFuZ2UuCgpPa2F5LCBzbyB0aGUgY2hhbmdlZCBDIGZ1bmN0aW9ucyBhcmU6IGBhY3BpX29mX21hdGNoX2RldmljZWAgaW4gYGRyaXZlcnMvYWNwaS9idXMuY2AgKG1hZGUgc3RhdGljKSBhbmQgcmVtb3ZpbmcgYHJ1c3RfaGVscGVyX2FjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBhbmQgYHJ1c3RfaGVscGVyX3RvX2FjcGlfZGV2aWNlX25vZGVgLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyAobWFjcm9zLCBpbmxpbmUgZnVuY3Rpb25zLCBhbmQgdGhlIGNoYWxsZW5nZXMgb2YgcHJvdmlkaW5nIFJ1c3Qgc3ltYm9scyB0byBgRm9jdXNTeW1ib2xzYCksIGl0IG1ha2VzIHNlbnNlIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LiBUaGUgZnV6emVyIHdpbGwgc3RpbGwgaGl0IHRoZSBtb2RpZmllZCBjb2RlIGJlY2F1c2UgaXQmIzM5O3Mgb24gdGhlIGBwcm9iZWAgcGF0aHMgb2YgdGhlIFJ1c3QgZHJpdmVycywgYW5kIHdlIGFyZSBlbmFibGluZyB0aGUgc2FtcGxlIGRyaXZlcnMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgbXkgY29uZmlndXJhdGlvbnMuIEkmIzM5O3ZlIGdvdCBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgIGV0Yy4sIGFuZCBhbGwgdGhlIFJ1c3Qgc2FtcGxlIGRyaXZlcnMgZW5hYmxlZC4KCldhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBzb21ldGhpbmcuIEkgc2VlIGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYW5kIGBOT1ZBX0NPUkVgLiBUaGVzZSBtaWdodCBoYXZlIGRlcGVuZGVuY2llcyBvbiBgRFJNYCwgYW5kIG90aGVyIHRoaW5ncy4gU28gbm93IGxldCYjMzk7cyBkb3VibGUgY2hlY2sgYERSTV9OT1ZBYCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9OT1ZBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL25vdmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWc6MTpjb25maWcgRFJNX05PVkFcbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O05vdmEgRFJNIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjIzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZWFkaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEZWx2aW5nIGludG8gdGhlIE5vdmEgRFJNIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBkcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTm92YSBEUk0gZHJpdmVyLiBJIGV4cGVjdCB0byBzZWUgYSBzZWN0aW9uIG91dGxpbmluZyB0aGUgY29yZSBmZWF0dXJlcywgbWF5YmUgdGhpbmdzIGxpa2UgZnJhbWVidWZmZXIgc3VwcG9ydCwgZGlzcGxheSBjb250cm9sbGVyIGZ1bmN0aW9uYWxpdGllcywgb3IgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuCgpNeSBicmFpbiBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgdXNlIGNhc2VzIOKAkyBlbWJlZGRlZCBzeXN0ZW1zLCBwZXJoYXBzIHNwZWNpZmljIGdyYXBoaWNzIGNoaXBzLCBvciBtYXliZSBpdCYjMzk7cyBzb21ldGhpbmcgbW9yZSBleHBlcmltZW50YWwuIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgY2xlYXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLCBsaWtlIFBDSSBvciBJMkMsIHdoaWNoIHdvdWxkIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIGhhcmR3YXJlIHRoaXMgZHJpdmVyIGlzIGludGVuZGVkIGZvci4gSSYjMzk7bGwgYWxzbyBiZSB3YXRjaGluZyBmb3IgYW55IGNvbmRpdGlvbmFsIGJsb2NrcywgYGlmYCBzdGF0ZW1lbnRzLCBvciBib29sZWFuIHZhcmlhYmxlcy4gVGhlc2Ugd2lsbCBzaG93IG1lIGhvdyB2YXJpb3VzIHBhcnRzIG9mIHRoZSBkcml2ZXIgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLCB3aGljaCBpcyB0aGUgaGVhcnQgb2YgS2NvbmZpZy4KCkkmIzM5O20gYWxzbyBhbnRpY2lwYXRpbmcgdGhlIGluY2x1c2lvbiBvZiBtb2R1bGUgb3B0aW9ucy4gQXJlIHRoZXJlIHdheXMgdG8gdHdlYWsgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBkcml2ZXIsIGxpa2UgZGVidWdnaW5nIGxldmVsIG9yIGRlZmF1bHQgc2V0dGluZ3M/IEkga25vdyB0aGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBjYW4gbWFrZSBhIGh1Z2UgZGlmZmVyZW5jZSwgcGFydGljdWxhcmx5IGR1cmluZyBkZXZlbG9wbWVudCBvciB3aGVuIHRyeWluZyB0byBpc29sYXRlIGhhcmR3YXJlIGlzc3Vlcy4gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgdW51c3VhbCBvciBvYnNjdXJlIG9wdGlvbnMsIHRoaW5ncyB0aGF0IG1pZ2h0IGhpbnQgYXQgYSBzcGVjaWZpYyBoYXJkd2FyZSBxdWlyayBvciBhIG5pY2hlIHVzZS1jYXNlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBBbGwgb2YgdGhpcyBoZWxwcyB0byBnZXQgYSBicm9hZGVyIHNjb3BlIG9mIHRoZSBOb3ZhIERSTSBhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgb3ZlcmFsbCBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL25vdmEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBEUk1fTk9WQVxuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7Tm92YSBEUk0gZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIDY0QklUXG4gICA0Olx0XHRkZXBlbmRzIG9uIERSTT15XG4gICA1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNjpcdFx0ZGVwZW5kcyBvbiBSVVNUXG4gICA3Olx0XHRkZXBlbmRzIG9uICFDUFVfQklHX0VORElBTlxuICAgODpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAgIDk6XHRcdHNlbGVjdCBOT1ZBX0NPUkVcbiAgMTA6XHRcdGRlZmF1bHQgblxuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBDaG9vc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgTm92YSBEUk0gZHJpdmVyIGZvciBOdmlkaWFcbiAgMTM6XHRcdCAgR1NQLWJhc2VkIEdQVXMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRoaXMgZHJpdmVyIGlzIHdvcmsgaW4gcHJvZ3Jlc3MgYW5kIG1heSBub3QgYmUgZnVuY3Rpb25hbC5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgSWYgTSBpcyBzZWxlY3RlZCwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBub3ZhLWRybS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4MzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRFJNIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9OT1ZBYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgaGluZ2VzIG9uIGBEUk09eWAsIHdoaWNoIG1ha2VzIHNlbnNlLCBvYnZpb3VzbHkuIFdlIGFsc28gbmVlZCBgUENJYCwgYFJVU1RgLCBhbmQgaW1wb3J0YW50bHksIHRoZSBhcmNoaXRlY3R1cmUgY2FuJiMzOTt0IGJlIGJpZy1lbmRpYW4sIHNvIGAhQ1BVX0JJR19FTkRJQU5gLiBHb3QgaXQuIFRoYXQgZGljdGF0ZXMgdGhlIGhhcmR3YXJlIGFuZCBzb21lIGltcG9ydGFudCBsYW5ndWFnZSByZXF1aXJlbWVudHMuCgpOb3csIGZyb20gdGhlIGxvb2sgb2YgaXQsIGBEUk1fTk9WQWAgYWxzbyBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgYEFVWElMSUFSWV9CVVNgIGFuZCBgTk9WQV9DT1JFYC4gR29vZC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgSSBkb24mIzM5O3QgaGF2ZSB0byB0cmFjZSB0aG9zZSBkb3duIHNlcGFyYXRlbHkgcmlnaHQgbm93LgoKQWxyaWdodCwgbm93IGxldCYjMzk7cyBxdWlja2x5IHBpdm90IGFuZCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgRFJNX1RZUmAuIFNlZSBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIG92ZXJsYXBzIG9yIGRpZmZlcmVuY2VzIHRoZXJlIHRoYXQgbWlnaHQgYmUgaW5mb3JtYXRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3R5ci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBvciBNSVRcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgRFJNX1RZUlxuICAgNDpcdFx0dHJpc3RhdGUgXCYjMzQ7VHlyIChSdXN0IERSTSBzdXBwb3J0IGZvciBBUk0gTWFsaSBDU0YtYmFzZWQgR1BVcylcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gRFJNPXlcbiAgIDY6XHRcdGRlcGVuZHMgb24gUlVTVFxuICAgNzpcdFx0ZGVwZW5kcyBvbiBBUk0gfHwgQVJNNjQgfHwgQ09NUElMRV9URVNUXG4gICA4Olx0XHRkZXBlbmRzIG9uICFHRU5FUklDX0FUT01JQzY0ICAjIGZvciBJT01NVV9JT19QR1RBQkxFX0xQQUVcbiAgIDk6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRzZWxlY3QgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBSdXN0IERSTSBkcml2ZXIgZm9yIEFSTSBNYWxpIENTRi1iYXNlZCBHUFVzLlxuICAxNDpcdFxuICAxNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgTWFsaSAob3IgSW1tb3J0YWxpcykgVmFsaGFsbCBHeHh4IEdQVXMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIE5vdGUgdGhhdCB0aGUgTWFsaS1HNjggYW5kIE1hbGktRzc4LCB3aGlsZSBWYWxoYWxsIGFyY2hpdGVjdHVyZSwgd2lsbFxuICAxODpcdFx0ICBiZSBzdXBwb3J0ZWQgd2l0aCB0aGUgcGFuZnJvc3QgZHJpdmVyIGFzIHRoZXkgYXJlIG5vdCBDU0YgR1BVcy5cbiAgMTk6XHRcbiAgMjA6XHRcdCAgaWYgTSBpcyBzZWxlY3RlZCwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB0eXIuIFRoaXMgZHJpdmVyIGlzIHdvcmtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc0MjgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYFBXTV9USDE1MjBgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGBQV01fVEgxNTIwYC4gQmVmb3JlIEkgZG8gYW55dGhpbmcgZWxzZSwgbGV0JiMzOTtzIHRha2UgYSBnb29kLCBoYXJkIGxvb2sgYXQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSByZXNvdXJjZXMgaXMgdGhpcyB0aGluZyByZWx5aW5nIG9uPyBJcyBpdCB0aWVkIHRvIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBvciBkYXRhIGludGVyZmFjZXM/IEkgbmVlZCB0byBrbm93IHRoZSByaXBwbGUgZWZmZWN0IGlmIEkgd2VyZSB0byBjaGFuZ2Ugb3IgdXBkYXRlIHRoaXMuIEFyZSB0aGVyZSBhbnkga25vd24gY29uZmxpY3RzIHdpdGggZXhpc3RpbmcgY29tcG9uZW50cz8gSWRlbnRpZnlpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIHVwZnJvbnQgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2Ugd2lsbCBicmVhayBpZiBJIGdvIHBva2luZyBhcm91bmQgYXQgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBXTV9USDE1MjAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3B3bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wd20vS2NvbmZpZz03NjI9Y29uZmlnIFBXTV9URUdSQVxuLS1cbmRyaXZlcnMvcHdtL0tjb25maWctNzcyLVxuZHJpdmVycy9wd20vS2NvbmZpZzo3NzM6Y29uZmlnIFBXTV9USDE1MjBcbmRyaXZlcnMvcHdtL0tjb25maWctNzc0LVx0dHJpc3RhdGUgXCYjMzQ7VEgxNTIwIFBXTSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgUFdNIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL3B3bS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNzczLiBJJiMzOTt2ZSBnb3QgYSBmZWVsaW5nIHRoZXJlJiMzOTtzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBvciBjb25kaXRpb25hbCBzdGF0ZW1lbnQgcmVsYXRlZCB0byB0aGUgUFdNIHN1YnN5c3RlbSB0aGF0JiMzOTtzIHJlbGV2YW50IHRvIHdoYXRldmVyIGlzc3VlIG9yIGludmVzdGlnYXRpb24gaXMgYXQgaGFuZC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCBsaW5lIHByb2JhYmx5IGNvbnRhaW5zIGEgY3JpdGljYWwgZGVwZW5kZW5jeSBvciBmZWF0dXJlLWVuYWJsZW1lbnQgY29uZGl0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJIGNvdWxkIGJlIGxvb2tpbmcgYXQgYSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24sIGEgZ2VuZXJpYyBQV00gY29udHJvbGxlciBvcHRpb24sIG9yIHBvc3NpYmx5IGEgZmVhdHVyZSBmbGFnIGFmZmVjdGluZyBob3cgdGhlIFBXTSBjb3JlIGJlaGF2ZXMuIE15IGd1ZXNzIGlzIHRoYXQgaXTigJlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBwYXJ0aWN1bGFyIFBXTSBmZWF0dXJlIG9yIGEgc3BlY2lmaWMgZHJpdmVyIHRoYXQgSSYjMzk7bSB0cnlpbmcgdG8gZW5hYmxlIG9yIGRlYnVnLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBUaGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXMsIHNvIEkmIzM5O20gbW92aW5nIHRoZXJlIGRpcmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcHdtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc3MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gNzcxOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHB3bS10ZWdyYS5cbiA3NzI6XHRcbiA3NzM6XHRjb25maWcgUFdNX1RIMTUyMFxuIDc3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7VEgxNTIwIFBXTSBzdXBwb3J0XCYjMzQ7XG4gNzc1Olx0XHRkZXBlbmRzIG9uIEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUXG4gNzc2Olx0XHRkZXBlbmRzIG9uIFJVU1RcbiA3Nzc6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG4gNzc4Olx0XHRzZWxlY3QgUlVTVF9QV01fQUJTVFJBQ1RJT05TXG4gNzc5Olx0XHRoZWxwXG4gNzgwOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGRyaXZlciBmb3IgdGhlIFBXTSBjb250cm9sbGVyIGZvdW5kIG9uIHRoZVxuIDc4MTpcdFx0ICBULUhFQUQgVEgxNTIwIFNvQy5cbiA3ODI6XHRcbiA3ODM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTsgdGhlIG1vZHVsZVxuIDc4NDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwd20tdGgxNTIwLiBJZiB5b3UgYXJlIHVuc3VyZSwgc2F5IE4uXG4gNzg1Olx0XG4gNzg2Olx0Y29uZmlnIFBXTV9USUVDQVBcbiA3ODc6XHRcdHRyaXN0YXRlIFwmIzM0O0VDQVAgUFdNIHN1cHBvcnRcJiMzNDtcbiA3ODg6XHRcdGRlcGVuZHMgb24gQVJDSF9PTUFQMlBMVVMgfHwgQVJDSF9EQVZJTkNJX0RBOFhYIHx8IEFSQ0hfS0VZU1RPTkUgfHwgQVJDSF9LMyB8fCBDT01QSUxFX1RFU1RcbiA3ODk6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MzM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBDUFVGUkVRX0RUX1JVU1RgIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncyByZWxhdGVkIHRvIGBDUFVGUkVRX0RUX1JVU1RgLiBCZWZvcmUgSSBjYW4gbWFrZSBhbnkgaW5mb3JtZWQgZGVjaXNpb25zIG9yIHByb3Bvc2UgYW55IGNoYW5nZXMsIEkgYWJzb2x1dGVseSBoYXZlIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBtb2R1bGVzLCBjcmF0ZXMsIG9yIGV2ZW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBkb2VzIHRoaXMgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHVwc3RyZWFtIHByb2plY3RzIG9yIGxpYnJhcmllcyB0aGF0IGl0IGNhbGxzIGludG8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSB3ZWIgb2YgY29ubmVjdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBsaWtlIHBvdGVudGlhbGx5IG91dGRhdGVkIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyB2ZXJzaW9ucyBuZWVkZWQ/IEkmIzM5O20gdGhpbmtpbmcgb2YgbG9va2luZyBmb3IgYnVpbGQgY29uZmlndXJhdGlvbnMgb3IgZG9jdW1lbnRhdGlvbiB0aGF0IGRlc2NyaWJlcyBhbnkgcHJlcmVxdWlzaXRlcy4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBpbmNvbXBhdGliaWxpdGllcywgb3IgYXJlYXMgdGhhdCBtaWdodCByZXF1aXJlIHNwZWNpYWwgYXR0ZW50aW9uIGR1cmluZyB0ZXN0aW5nIG9yIGRldmVsb3BtZW50LiBJdOKAmXMgYWJvdXQgYnVpbGRpbmcgYSBzb2xpZCBmb3VuZGF0aW9uIG9mIGtub3dsZWRnZSBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTU6XHRcdCAgc3lzdGVtcy5cbiAyMTY6XHRcbiAyMTc6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxuIDIxODpcdFxuIDIxOTpcdGNvbmZpZyBDUFVGUkVRX0RUX1JVU1RcbiAyMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1J1c3QgYmFzZWQgR2VuZXJpYyBEVCBiYXNlZCBjcHVmcmVxIGRyaXZlclwmIzM0O1xuIDIyMTpcdFx0ZGVwZW5kcyBvbiBIQVZFX0NMSyBcdTAwMjZcdTAwMjYgT0YgXHUwMDI2XHUwMDI2IFJVU1RcbiAyMjI6XHRcdHNlbGVjdCBDUFVGUkVRX0RUX1BMQVRERVZcbiAyMjM6XHRcdHNlbGVjdCBQTV9PUFBcbiAyMjQ6XHRcdGhlbHBcbiAyMjU6XHRcdCAgVGhpcyBhZGRzIGEgUnVzdCBiYXNlZCBnZW5lcmljIERUIGJhc2VkIGNwdWZyZXEgZHJpdmVyIGZvciBmcmVxdWVuY3lcbiAyMjY6XHRcdCAgbWFuYWdlbWVudC4gIEl0IHN1cHBvcnRzIGJvdGggdW5pcHJvY2Vzc29yIChVUCkgYW5kIHN5bW1ldHJpY1xuIDIyNzpcdFx0ICBtdWx0aXByb2Nlc3NvciAoU01QKSBzeXN0ZW1zLlxuIDIyODpcdFxuIDIyOTpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IE4uXG4gMjMwOlx0XG4gMjMxOlx0Y29uZmlnIENQVUZSRVFfVklSVFxuIDIzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBjcHVmcmVxIGRyaXZlclwmIzM0O1xuIDIzMzpcdFx0ZGVwZW5kcyBvbiBHRU5FUklDX0FSQ0hfVE9QT0xPR1lcbiAyMzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4NTcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBBYm91dCBSdXN0IEtlcm5lbCBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlLiBJJiMzOTt2ZSBnb3QgYSB3aG9sZSBsaXN0OiBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYW5kIGEgYnVuY2ggb2YgZHJpdmVyczogYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBgU0FNUExFX1JVU1RfU09DYC4gVGhlbiB3ZSBoYXZlIGEgZmV3IERSTS1yZWxhdGVkIG9uZXM6IGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAuIFBsdXMsIGBQV01fVEgxNTIwYCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuCgpXYWl0LCBob2xkIG9uLi4uIGBEUk1fTk9WQWAgZGVwZW5kcyBvbiBgRFJNPXlgLCByaWdodD8gTm8gbmVlZCB0byBsaXN0IHRoYXQgZGVwZW5kZW5jeSwgdGhlIGZ1enplciBzaG91bGQgaGFuZGxlIHRoYXQuIEluIGZhY3QsIEkgY2FuIGp1c3QgbGlzdCB0aGUga2V5IGZlYXR1cmVzIGhlcmU6IGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAsIGBQV01fVEgxNTIwYCwgYW5kIGBDUFVGUkVRX0RUX1JVU1RgLiBJIHRydXN0IHRoZSBmdXp6ZXIgdG8gZW5hYmxlIHRob3NlIGlmIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldC4gVGhhdCYjMzk7cyB0aGUgY2xlYW5lciBhcHByb2FjaC4KCk5vdywgbGV0IG1lIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgKm90aGVyKiBSdXN0IGRyaXZlcnMgdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIHRoaXMgc3dlZXA/IEkgc2VlIHRoYXQgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIHdhcyByZWNlbnRseSBtb2RpZmllZC4gSW50cmlndWluZy4gV2FzIHRoZXJlIGEgc2FtcGxlIFBIWSBkcml2ZXI/IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYG1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8gaW4gdGhhdCBmaWxlLiBUaGF0JiMzOTtzIGEgZ29vZCBsZWFkLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGViYXNlIHRvIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBhY3R1YWxseSAqdXNpbmcqIHRoYXQgYG1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8uIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgaXMgYWN0dWFsbHkgYmVpbmcgYXBwbGllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BoeV9kcml2ZXIhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTM6a2VybmVsOjptb2R1bGVfcGh5X2RyaXZlciEge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTQtICAgIGRyaXZlcnM6IFtQaHlBWDg4NzcyQSwgUGh5QVg4ODc3MkMsIFBoeUFYODg3OTZCXSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzLTIzLVxuZHJpdmVycy9uZXQvcGh5L3F0MjAyNS5yczoyNDprZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzLTI1LSAgICBkcml2ZXJzOiBbUGh5UVQyMDI1XSxcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTc2MD0gICAgY29uc3QgZm4gYXNfaW50KFx1MDAyNnNlbGYpIC1cdTAwM2UgdTMyIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTc4Mi0vLy9cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NzgzOi8vLyBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTc4NC0vLy8gICAgIGRyaXZlcnM6IFtQaHlTYW1wbGVdLFxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9ODA0PW1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDctICAgIChAY291bnRfZGV2aWNlcyAkKCR4OmV4cHIpLCopID1cdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo4MDg6ICAgICAgICAwdXNpemUgJCgmIzQzOyAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAcmVwbGFjZV9leHByICR4IDF1c2l6ZSkpKlxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDktICAgIH07XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MTk9ICAgICAgICBzdHJ1Y3QgTW9kdWxlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgyOS0gICAgICAgICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFskY3JhdGU6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjgzMDogICAgICAgICAgICAgICAgJGNyYXRlOjptb2R1bGVfcGh5X2RyaXZlciEoQGNvdW50X2RldmljZXMgJCgkZHJpdmVyKSwmIzQzOyldID1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODMxLSAgICAgICAgICAgICAgICBbJCgkY3JhdGU6Om5ldDo6cGh5OjpjcmVhdGVfcGh5X2RyaXZlcjo6XHUwMDNjJGRyaXZlclx1MDAzZSgpKSwmIzQzO107XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MzQ9ICAgICAgICAgICAgICAgIGZuIGluaXQobW9kdWxlOiBcdTAwMjYmIzM5O3N0YXRpYyAkY3JhdGU6OlRoaXNNb2R1bGUpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04NDYtXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjg0NzogICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBkZXZpY2VfdGFibGUgWyQoJGRldiksJiM0MztdKTtcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODQ4LSAgICB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjM2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBIWSBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGRyaXZlcnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhcmUgYEFYODg3OTZCX1JVU1RfUEhZYCBhbmQgYFFUMjAyNV9QSFlgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlaXIgY29uZmlndXJhdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGVpciBrZXkgcGFyYW1ldGVycywgdW5kZXJzdGFuZCB0aGVpciByZXNvdXJjZSBtYXBwaW5ncywgYW5kIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlaXIgcmVnaXN0ZXIgc2V0dGluZ3MuIFRoaXMgZWFybHkgYXNzZXNzbWVudCBpcyBjcnVjaWFsLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueXRoaW5nIHRoYXQgaW1tZWRpYXRlbHkganVtcHMgb3V0IOKAkyBzcGVjaWZpYyBjbG9jayBmcmVxdWVuY2llcywgaW50ZXJydXB0IGxpbmVzLCBQSFkgYWRkcmVzc2VzLCBwb3dlci1kb3duIG1vZGVzLi4uIGFueXRoaW5nIHRoYXQgbWlnaHQgaW1wYWN0IHRoZWlyIGludGVncmF0aW9uIGludG8gdGhlIHN5c3RlbSBvciBzdWdnZXN0IHBvdGVudGlhbCBkcml2ZXItc3BlY2lmaWMgcXVpcmtzLiBBIHF1aWNrIHNjYW4gb2YgdGhlIGRlZmluZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncyB3aWxsIGFsc28gcHJvdmlkZSBjcnVjaWFsIGNvbnRleHQuIEkmIzM5O20gbWVudGFsbHkgY29tcGFyaW5nIHRoZW0gYWxyZWFkeSwgbG9va2luZyBmb3Igb3ZlcmxhcCBvciBkaXZlcmdlbmNlcyB0aGF0IHdpbGwgZ3VpZGUgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgKEFYODg3OTZCX1JVU1RfUEhZfFFUMjAyNV9QSFkpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNDg9Y29uZmlnIEFYODg3OTZCX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE1My1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1NDpjb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7UnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhhdCBDb25maWcgTmFtZSoqCgpPa2F5LCBzbyBJIHNlZSBgUVQyMDI1X1BIWWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQgYSBtaW51dGUsIHRoYXQgY29uZmlnIG5hbWUgZm9ybWF0PyBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IHRlbGxpbmcgbWUgYSBmZXcgdGhpbmdzLiBUaGUgYFFUYCBwcmVmaXggaXMgcHJvYmFibHkgdmVuZG9yLXNwZWNpZmljLCB3aGljaCBpcyBmaW5lLCBidXQgaXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBwbGF5aW5nIGZpZWxkLiBUaGVuIEkgc2VlIHRoZSBudW1lcmljYWwgcG9ydGlvbiwgYDIwMjVgLiBUaGF0JiMzOTtzIGxpa2VseSBhIGRhdGUgY29kZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyBhIHByb2R1Y3QgZ2VuZXJhdGlvbiBvciByZXZpc2lvbiwgcHJvYmFibHkgcmVmZXJlbmNpbmcgYSBzcGVjaWZpYyB5ZWFyLiBUaGUgYFBIWWAgYXQgdGhlIGVuZC4uLiB0aGF0IHNjcmVhbXMgJiMzNDtQaHlzaWNhbCBMYXllciYjMzQ7IHRvIG1lLCByaWdodD8gU28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBjb25maWd1cmF0aW9uIHNwZWNpZmljIHRvIGEgUEhZIGNoaXAsIG9yIGEgUEhZIGNvbXBvbmVudC4gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IGZvcm1pbmcgYW4gaWRlYSBvZiB3aGF0IGNvbnRleHQgdGhpcyBjb25maWcgbWlnaHQgYmUgcmVsZXZhbnQgdG8sIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBhIGRhdGUtc3RhbXBlZCByZXZpc2lvbi4gSSB3b25kZXIgd2hhdCB0aGUgY29ycmVzcG9uZGluZyBzb2Z0d2FyZSB2ZXJzaW9uIG1pZ2h0IGJlPyBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAuKlFUMjAyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTMyPWNvbmZpZyBBRElOMTEwMF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMzk6Y29uZmlnIEFNQ0NfUVQyMDI1X1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7QU1DQyBRVDIwMjUgUEhZXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTcxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJ1c3QgRGV2aWNlIERyaXZlciBBYnN0cmFjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgY29uZmlndXJhdGlvbnMgaW52b2x2aW5nIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgYW5kIGBBTUNDX1FUMjAyNV9QSFlgLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBSdXN0IGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgY29udGV4dC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSByZWxldmFudCBjb25maWdzIGFyZTogYFJVU1RgLCBgU0FNUExFU19SVVNUYCwgYFNBTVBMRV9SVVNUX0RNQWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfSTJDYCwgYFNBTVBMRV9SVVNUX0kyQ19DTElFTlRgLCBgU0FNUExFX1JVU1RfRFJJVkVSX1BDSWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk1gLCBgU0FNUExFX1JVU1RfRFJJVkVSX1VTQmAsIGBTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZYCwgYFNBTVBMRV9SVVNUX1NPQ2AsIGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAsIGBQV01fVEgxNTIwYCwgYENQVUZSRVFfRFRfUlVTVGAsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgQU1DQ19RVDIwMjVfUEhZYC4gVGhhdCBsb29rcyBsaWtlIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgc2V0LgoKSSBzZWUgdGhhdCB0aGUgcGF0Y2ggc2lnbmlmaWNhbnRseSBtb2RpZmllcyB0aGUgY29yZSBSdXN0IGRldmljZSBkcml2ZXIgYWJzdHJhY3Rpb25zLiBUaGlzIGRlZmluaXRlbHkgd2FycmFudHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIHNob3VsZCBiZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSdXN0IGFic3RyYWN0aW9ucyBmb3IgZGV2aWNlIGRyaXZlcnMgKFBDSSwgVVNCLCBQbGF0Zm9ybSwgSTJDLCBBdXhpbGlhcnksIEFDUEksIE9GKSwgY2hhbmdpbmcgaG93IGRldmljZSBJRCB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhbmQgaG93IG1hdGNoIGRhdGEgaXMgcmV0cmlldmVkIGR1cmluZyBkcml2ZXIgcHJvYmUuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSBSdXN0IGRyaXZlcnMgY2FuIHN0aWxsIHByb2JlIHN1Y2Nlc3NmdWxseSBhbmQgcmVjZWl2ZSBjb3JyZWN0IG1hdGNoIGRhdGEuJiMzNDsKCkdpdmVuIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucywgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGlzICoqV29ydGhGdXp6aW5nKiouCgpUaGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eS4gVGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIHdpdGhpbiBnZW5lcmljIGlubGluZSBmdW5jdGlvbnMgYW5kIG1hY3Jvcy4gQmVjYXVzZSBvZiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCB0aGUgZnV6emVyIHdpbGwgbmF0dXJhbGx5IGhpdCB0aGVtIGFzIGl0IHByb2JlcyBhbmQgZXhlcmNpc2VzIHRoZSBlbmFibGVkIFJ1c3QgZHJpdmVycy4KCkkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBjb3ZlcnMgdGhlIGV4dGVudCBvZiBSdXN0IGRyaXZlcnMgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXy4qX2RyaXZlciEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzPTIwNj0gICAgZm4gcHJvYmVcdTAwM2MmIzM5O2JvdW5kXHUwMDNlKFxuLS1cbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTQtXG5kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnM6MjE1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTYtICAgIHR5cGU6IENQVUZyZXFEVERyaXZlcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm92YS9ub3ZhLnJzLTEwLVxuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5yczoxMTprZXJuZWw6Om1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyISB7XG5kcml2ZXJzL2dwdS9kcm0vbm92YS9ub3ZhLnJzLTEyLSAgICB0eXBlOiBOb3ZhRHJpdmVyLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzLTE1LVxuZHJpdmVycy9ncHUvZHJtL3R5ci90eXIucnM6MTY6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XG5kcml2ZXJzL2dwdS9kcm0vdHlyL3R5ci5ycy0xNy0gICAgdHlwZTogVHlyUGxhdGZvcm1Ecml2ZXIsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTItXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMzprZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xNC0gICAgZHJpdmVyczogW1BoeUFYODg3NzJBLCBQaHlBWDg4NzcyQywgUGh5QVg4ODc5NkJdLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xdDIwMjUucnMtMjMtXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzOjI0Omtlcm5lbDo6bW9kdWxlX3BoeV9kcml2ZXIhIHtcbmRyaXZlcnMvbmV0L3BoeS9xdDIwMjUucnMtMjUtICAgIGRyaXZlcnM6IFtQaHlRVDIwMjVdLFxuLS1cbmRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnM9MzE1PSAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG4tLVxuZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycy0zNTgtXG5kcml2ZXJzL3B3bS9wd21fdGgxNTIwLnJzOjM1OTprZXJuZWw6Om1vZHVsZV9wd21fcGxhdGZvcm1fZHJpdmVyISB7XG5kcml2ZXJzL3B3bS9wd21fdGgxNTIwLnJzLTM2MC0gICAgdHlwZTogVGgxNTIwUHdtUGxhdGZvcm1Ecml2ZXIsXG4tLVxucnVzdC9rZXJuZWwvZHJpdmVyLnJzLTg2LS8vIVxucnVzdC9rZXJuZWwvZHJpdmVyLnJzOjg3Oi8vISBUeXBpY2FsbHksIGJ1cyBhYnN0cmFjdGlvbnMgd2FudCB0byBwcm92aWRlIGEgYnVzIHNwZWNpZmljIGBtb2R1bGVfYnVzX2RyaXZlciFgIG1hY3JvLCB3aGljaFxucnVzdC9rZXJuZWwvZHJpdmVyLnJzLTg4LS8vISBjcmVhdGVzIGEga2VybmVsIG1vZHVsZSB3aXRoIGV4YWN0bHkgb25lIFtgUmVnaXN0cmF0aW9uYF0gZm9yIHRoZSBidXMgc3BlY2lmaWMgYWRhcHRlci5cbi0tXG5ydXN0L2tlcm5lbC9pMmMucnM9MjI1PSAgICBmbiBhY3BpX2lkX3RhYmxlKCkgLVx1MDAzZSBPcHRpb25cdTAwM2NhY3BpOjpJZFRhYmxlXHUwMDNjU2VsZjo6SWRJbmZvXHUwMDNlXHUwMDNlIHtcbi0tXG5ydXN0L2tlcm5lbC9pMmMucnMtMjM0LS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL2kyYy5yczoyMzU6Ly8vIGtlcm5lbDo6bW9kdWxlX2kyY19kcml2ZXIhIHtcbnJ1c3Qva2VybmVsL2kyYy5ycy0yMzYtLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTc2MD0gICAgY29uc3QgZm4gYXNfaW50KFx1MDAyNnNlbGYpIC1cdTAwM2UgdTMyIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTc4Mi0vLy9cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NzgzOi8vLyBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTc4NC0vLy8gICAgIGRyaXZlcnM6IFtQaHlTYW1wbGVdLFxuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9ODA0PW1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDctICAgIChAY291bnRfZGV2aWNlcyAkKCR4OmV4cHIpLCopID1cdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo4MDg6ICAgICAgICAwdXNpemUgJCgmIzQzOyAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAcmVwbGFjZV9leHByICR4IDF1c2l6ZSkpKlxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDktICAgIH07XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MTk9ICAgICAgICBzdHJ1Y3QgTW9kdWxlIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgyOS0gICAgICAgICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFskY3JhdGU6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjgzMDogICAgICAgICAgICAgICAgJGNyYXRlOjptb2R1bGVfcGh5X2RyaXZlciEoQGNvdW50X2RldmljZXMgJCgkZHJpdmVyKSwmIzQzOyldID1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODMxLSAgICAgICAgICAgICAgICBbJCgkY3JhdGU6Om5ldDo6cGh5OjpjcmVhdGVfcGh5X2RyaXZlcjo6XHUwMDNjJGRyaXZlclx1MDAzZSgpKSwmIzQzO107XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MzQ9ICAgICAgICAgICAgICAgIGZuIGluaXQobW9kdWxlOiBcdTAwMjYmIzM5O3N0YXRpYyAkY3JhdGU6OlRoaXNNb2R1bGUpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04NDYtXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjg0NzogICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBkZXZpY2VfdGFibGUgWyQoJGRldiksJiM0MztdKTtcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODQ4LSAgICB9XG4tLVxucnVzdC9rZXJuZWwvcGNpLnJzPTEyNz0gICAgZXh0ZXJuIFwmIzM0O0NcJiMzNDsgZm4gcmVtb3ZlX2NhbGxiYWNrKHBkZXY6ICptdXQgYmluZGluZ3M6OnBjaV9kZXYpIHtcbi0tXG5ydXN0L2tlcm5lbC9wY2kucnMtMTQ3LS8vL2BgYGlnbm9yZVxucnVzdC9rZXJuZWwvcGNpLnJzOjE0ODovLy8ga2VybmVsOjptb2R1bGVfcGNpX2RyaXZlciEge1xucnVzdC9rZXJuZWwvcGNpLnJzLTE0OS0vLy8gICAgIHR5cGU6IE15RHJpdmVyLFxuLS1cbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzPTEzNz0gICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cdTAwM2UgT3B0aW9uXHUwMDNjYWNwaTo6SWRUYWJsZVx1MDAzY1NlbGY6OklkSW5mb1x1MDAzZVx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMtMTQ2LS8vLyBgYGBpZ25vcmVcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzOjE0NzovLy8ga2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycy0xNDgtLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L2tlcm5lbC9wd20ucnM9NzEwPSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tLVxucnVzdC9rZXJuZWwvcHdtLnJzLTcyNC0vLy9gYGBpZ25vcmVcbnJ1c3Qva2VybmVsL3B3bS5yczo3MjU6Ly8vIGtlcm5lbDo6bW9kdWxlX3B3bV9wbGF0Zm9ybV9kcml2ZXIhIHtcbnJ1c3Qva2VybmVsL3B3bS5ycy03MjYtLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L2tlcm5lbC9wd20ucnM9NzM0PW1hY3JvX3J1bGVzISBtb2R1bGVfcHdtX3BsYXRmb3JtX2RyaXZlciB7XG5ydXN0L2tlcm5lbC9wd20ucnMtNzM1LSAgICAoJCgkdXNlcl9hcmdzOnR0KSopID1cdTAwM2Uge1xucnVzdC9rZXJuZWwvcHdtLnJzOjczNjogICAgICAgICRjcmF0ZTo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xucnVzdC9rZXJuZWwvcHdtLnJzLTczNy0gICAgICAgICAgICAkKCR1c2VyX2FyZ3MpKlxuLS1cbnJ1c3Qva2VybmVsL3VzYi5ycz00NzI9dW5zYWZlIGltcGwgU3luYyBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpCb3VuZFx1MDAzZSB7fVxuLS1cbnJ1c3Qva2VybmVsL3VzYi5ycy00NzgtLy8vIGBgYGlnbm9yZVxucnVzdC9rZXJuZWwvdXNiLnJzOjQ3OTovLy8gbW9kdWxlX3VzYl9kcml2ZXIhIHtcbnJ1c3Qva2VybmVsL3VzYi5ycy00ODAtLy8vICAgICB0eXBlOiBNeURyaXZlcixcbi0tXG5ydXN0L21hY3Jvcy9tb2R1bGUucnM9NDI4PXB1YihjcmF0ZSkgZm4gbW9kdWxlKGluZm86IE1vZHVsZUluZm8pIC1cdTAwM2UgUmVzdWx0XHUwMDNjVG9rZW5TdHJlYW1cdTAwM2Uge1xuLS1cbnJ1c3QvbWFjcm9zL21vZHVsZS5ycy01MTYtICAgICAgICAvLy8gVGhlIGBMb2NhbE1vZHVsZWAgdHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIGNyZWF0ZWQgYnkgYG1vZHVsZSFgLFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzOjUxNzogICAgICAgIC8vLyBgbW9kdWxlX3BjaV9kcml2ZXIhYCwgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhYCwgZXRjLlxucnVzdC9tYWNyb3MvbW9kdWxlLnJzLTUxOC0gICAgICAgIHR5cGUgTG9jYWxNb2R1bGUgPSAjdHlwZV87XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5ycy01Ny1cbnNhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnM6NTg6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTU5LSAgICB0eXBlOiBSdXN0RGVidWdGcyxcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnM9MTEwPSAgICBmbiBkcm9wKHNlbGY6IFBpblx1MDAzY1x1MDAyNm11dCBTZWxmXHUwMDNlKSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTEyNS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5yczoxMjY6a2VybmVsOjptb2R1bGVfcGNpX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTEyNy0gICAgdHlwZTogRG1hU2FtcGxlRHJpdmVyLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnM9NjA9ICAgIGZuIHVuYmluZFx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoaWRldjogXHUwMDI2JiMzOTtib3VuZCBpMmM6OkkyY0NsaWVudFx1MDAzY0NvcmVcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2UsIF90aGlzOiBQaW5cdTAwM2NcdTAwMjZTZWxmXHUwMDNlKSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycy02NC1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnM6NjU6a2VybmVsOjptb2R1bGVfaTJjX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycy02Ni0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnM9MTgyPSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xODYtXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzOjE4NzprZXJuZWw6Om1vZHVsZV9wY2lfZHJpdmVyISB7XG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzLTE4OC0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxuLS1cbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycz0xODE9ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMtMTg1LVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzOjE4NjprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycy0xODctICAgIHR5cGU6IFNhbXBsZURyaXZlcixcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzPTQyPSAgICBmbiBkaXNjb25uZWN0XHUwMDNjJiMzOTtib3VuZFx1MDAzZShpbnRmOiBcdTAwMjYmIzM5O2JvdW5kIHVzYjo6SW50ZXJmYWNlXHUwMDNjQ29yZVx1MDAzYyYjMzk7X1x1MDAzZVx1MDAzZSwgX2RhdGE6IFBpblx1MDAzY1x1MDAyNlNlbGZcdTAwM2UpIHtcbi0tXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzLTQ3LVxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yczo0ODprZXJuZWw6Om1vZHVsZV91c2JfZHJpdmVyISB7XG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzLTQ5LSAgICB0eXBlOiBTYW1wbGVEcml2ZXIsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycz0xMzE9ICAgIGZuIHVuYmluZFx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycy0xNDEtXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzOjE0MjprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMtMTQzLSAgICB0eXBlOiBTYW1wbGVEcml2ZXIsXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzPTQyPSAgICBmbiBwcm9iZVx1MDAzYyYjMzk7Ym91bmRcdTAwM2UoXG4tLVxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTcxLVxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzOjcyOmtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTczLSAgICB0eXBlOiBTYW1wbGVTb2NEcml2ZXIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzMzCgkJCQkJCQlvdXRwdXQ6IDI2OAoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCB0aGUgY29tcGxldGUgY29uZmlndXJhdGlvbiBpbiBmcm9udCBvZiBtZS4gTm93LCBsZXQmIzM5O3MgYnJlYWsgZG93biB3aGF0IHdlJiMzOTtyZSBsb29raW5nIGF0IGFuZCBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGFwcHJvYWNoLiBGaXJzdCwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaXMgd2hhdCBJJiMzOTtkIGV4cGVjdC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFycmF5IGlzIGVtcHR5LCBpbXBseWluZyBhIGJyb2FkIHNjb3BlLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuCgpUaGUgbWVhdCBvZiB0aGlzIGxpZXMgd2l0aGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gSXTigJlzIGV4dGVuc2l2ZSBhbmQgdGFyZ2V0cyBzZXZlcmFsIGtleSBSdXN0IGRyaXZlcnMgYW5kIHJlbGF0ZWQgbW9kdWxlcy4gV2UgaGF2ZSAmIzM0O1JVU1QmIzM0OywgYW5kICYjMzQ7U0FNUExFU19SVVNUJiMzNDsgd2hpY2ggYXJlIGZvdW5kYXRpb25hbC4gVGhlbiwgd2UgaGF2ZSBzcGVjaWZpYyBkcml2ZXJzOiAmIzM0O1NBTVBMRV9SVVNUX0RNQSYjMzQ7LCAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9JMkMmIzM0OywgJiMzNDtTQU1QTEVfUlVTVF9JMkNfQ0xJRU5UJiMzNDssICYjMzQ7U0FNUExFX1JVU1RfRFJJVkVSX1BDSSYjMzQ7LCAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STSYjMzQ7LCAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9VU0ImIzM0OywgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZJiMzNDssIGFuZCAmIzM0O1NBTVBMRV9SVVNUX1NPQyYjMzQ7LiBGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIHNvbWUgRFJNIChEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIpIGNvbmZpZ3VyYXRpb25zIGxpa2UgJiMzNDtEUk1fTk9WQSYjMzQ7IGFuZCAmIzM0O0RSTV9UWVImIzM0OywgYW5kIHBsYXRmb3JtIHNwZWNpZmljIG9uZXMgbGlrZSAmIzM0O05PVkFfQ09SRSYjMzQ7LCAmIzM0O1BXTV9USDE1MjAmIzM0OywgJiMzNDtDUFVGUkVRX0RUX1JVU1QmIzM0OywgJiMzNDtBWDg4Nzk2Ql9SVVNUX1BIWSYjMzQ7LCBhbmQgJiMzNDtBTUNDX1FUMjAyNV9QSFkmIzM0Oy4gVGhpcyBlbmNvbXBhc3NlcyBhIHNpZ25pZmljYW50IHBvcnRpb24gb2YgdGhlIGRyaXZlciBlY29zeXN0ZW0uCgpUaGUgY29yZSByZWFzb25pbmcgaGlnaGxpZ2h0cyB0aGUgY3JpdGljYWwgbW9kaWZpY2F0aW9uOiB0aGUgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyBSdXN0JiMzOTtzIGNvcmUgYWJzdHJhY3Rpb25zIGZvciBkZXZpY2UgZHJpdmVycy4gSXQmIzM5O3MgYWZmZWN0aW5nIGhvdyBkZXZpY2UgSUQgdGFibGVzIGFyZSBjcmVhdGVkIGFuZCBob3cgbWF0Y2ggZGF0YSBpcyBhY2Nlc3NlZCBkdXJpbmcgZHJpdmVyIHByb2JpbmcuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuIElmIHRob3NlIGNoYW5nZXMgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGRyaXZlciBwcm9iaW5nLCB0aGUgZGV2aWNlIHdpbGwgYmUgY29tcGxldGVseSBpbmFjY2Vzc2libGUuIFRoaXMgbmVjZXNzaXRhdGVzIGZ1enppbmcsIGFuZCBpdCYjMzk7cyBiZWluZyBjb3JyZWN0bHkgYXBwbGllZCBoZXJlLCB0byBlbnN1cmUgYWxsIHRoZSBSdXN0IGRyaXZlcnMgY2FuIHByb2JlIGFjY3VyYXRlbHkgYW5kIGNvcnJlY3RseSByZWNlaXZlIGFsbCB0aGUgbWF0Y2ggZGF0YSB0aGV5IG5lZWQgdG8gZnVuY3Rpb24uIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb24gdGhpcyBhcmVhLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBkcml2ZXIgZWNvc3lzdGVtIHJlbWFpbnMgcm9idXN0IGFmdGVyIHRoaXMgdXBkYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTX1JVU1QmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRE1BJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9JMkMmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfSTJDX0NMSUVOVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfUENJJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfVVNCJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUlkmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfU09DJiMzNDssCiAgICAmIzM0O0RSTV9OT1ZBJiMzNDssCiAgICAmIzM0O0RSTV9UWVImIzM0OywKICAgICYjMzQ7Tk9WQV9DT1JFJiMzNDssCiAgICAmIzM0O1BXTV9USDE1MjAmIzM0OywKICAgICYjMzQ7Q1BVRlJFUV9EVF9SVVNUJiMzNDssCiAgICAmIzM0O0FYODg3OTZCX1JVU1RfUEhZJiMzNDssCiAgICAmIzM0O0FNQ0NfUVQyMDI1X1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciBkZXZpY2UgZHJpdmVycyAoUENJLCBVU0IsIFBsYXRmb3JtLCBJMkMsIEF1eGlsaWFyeSwgQUNQSSwgT0YpLCBjaGFuZ2luZyBob3cgZGV2aWNlIElEIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIGFuZCBob3cgbWF0Y2ggZGF0YSBpcyByZXRyaWV2ZWQgZHVyaW5nIGRyaXZlciBwcm9iZS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIFJ1c3QgZHJpdmVycyBjYW4gc3RpbGwgcHJvYmUgc3VjY2Vzc2Z1bGx5IGFuZCByZWNlaXZlIGNvcnJlY3QgbWF0Y2ggZGF0YS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTX1JVU1QmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfRE1BJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9JMkMmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfSTJDX0NMSUVOVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfUENJJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfUlVTVF9EUklWRVJfVVNCJiMzNDssCiAgICAmIzM0O1NBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUlkmIzM0OywKICAgICYjMzQ7U0FNUExFX1JVU1RfU09DJiMzNDssCiAgICAmIzM0O0RSTV9OT1ZBJiMzNDssCiAgICAmIzM0O0RSTV9UWVImIzM0OywKICAgICYjMzQ7Tk9WQV9DT1JFJiMzNDssCiAgICAmIzM0O1BXTV9USDE1MjAmIzM0OywKICAgICYjMzQ7Q1BVRlJFUV9EVF9SVVNUJiMzNDssCiAgICAmIzM0O0FYODg3OTZCX1JVU1RfUEhZJiMzNDssCiAgICAmIzM0O0FNQ0NfUVQyMDI1X1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciBkZXZpY2UgZHJpdmVycyAoUENJLCBVU0IsIFBsYXRmb3JtLCBJMkMsIEF1eGlsaWFyeSwgQUNQSSwgT0YpLCBjaGFuZ2luZyBob3cgZGV2aWNlIElEIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIGFuZCBob3cgbWF0Y2ggZGF0YSBpcyByZXRyaWV2ZWQgZHVyaW5nIGRyaXZlciBwcm9iZS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIFJ1c3QgZHJpdmVycyBjYW4gc3RpbGwgcHJvYmUgc3VjY2Vzc2Z1bGx5IGFuZCByZWNlaXZlIGNvcnJlY3QgbWF0Y2ggZGF0YS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjA5Ljk3Njg0Njc3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjU2OTQ2MzMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJTQU1QTEVTX1JVU1RcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RNQVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX0kyQ1wiLFxuICAgIFwiU0FNUExFX1JVU1RfSTJDX0NMSUVOVFwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1BDSVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1BMQVRGT1JNXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9EUklWRVJfVVNCXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9TT0NcIixcbiAgICBcIkRSTV9OT1ZBXCIsXG4gICAgXCJEUk1fVFlSXCIsXG4gICAgXCJOT1ZBX0NPUkVcIixcbiAgICBcIlBXTV9USDE1MjBcIixcbiAgICBcIkNQVUZSRVFfRFRfUlVTVFwiLFxuICAgIFwiQVg4ODc5NkJfUlVTVF9QSFlcIixcbiAgICBcIkFNQ0NfUVQyMDI1X1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciBkZXZpY2UgZHJpdmVycyAoUENJLCBVU0IsIFBsYXRmb3JtLCBJMkMsIEF1eGlsaWFyeSwgQUNQSSwgT0YpLCBjaGFuZ2luZyBob3cgZGV2aWNlIElEIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIGFuZCBob3cgbWF0Y2ggZGF0YSBpcyByZXRyaWV2ZWQgZHVyaW5nIGRyaXZlciBwcm9iZS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIFJ1c3QgZHJpdmVycyBjYW4gc3RpbGwgcHJvYmUgc3VjY2Vzc2Z1bGx5IGFuZCByZWNlaXZlIGNvcnJlY3QgbWF0Y2ggZGF0YS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTM6MDkuOTc2ODU3MDAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQxMzI0NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWYzY2M5YTVhODY0NzUxZWE0MzkzYmVmNmMzZTg0ODZmNDhiMWE2YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAxMzoxMzowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggMTUwMTFmNTc1MmE5OTQuLjA3MjQwZTBiNzQ1MTgwIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjk3LDcgKzI5Nyw2IEBAIEY6XFx0aW5jbHVkZS9saW51eC9hY3BpLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L2Z3bm9kZS5oXFxuIEY6XFx0aW5jbHVkZS9saW51eC9md190YWJsZS5oXFxuIEY6XFx0bGliL2Z3X3RhYmxlLmNcXG4tRjpcXHRydXN0L2hlbHBlcnMvYWNwaS5jXFxuIEY6XFx0cnVzdC9rZXJuZWwvYWNwaS5yc1xcbiBGOlxcdHRvb2xzL3Bvd2VyL2FjcGkvXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYnVzLmMgYi9kcml2ZXJzL2FjcGkvYnVzLmNcXG5pbmRleCBhMzBhOTA0ZjY1MzVmNC4uMWZiMGIxMGJmOTI0NzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9hY3BpL2J1cy5jXFxuKysrIGIvZHJpdmVycy9hY3BpL2J1cy5jXFxuQEAgLTg5OCw5ICs4OTgsOSBAQCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFjcGlfY29tcGFuaW9uX21hdGNoKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4gICogaWRlbnRpZmllcnMgYW5kIGEgX0RTRCBvYmplY3Qgd2l0aCB0aGUgXFxcImNvbXBhdGlibGVcXFwiIHByb3BlcnR5LCB1c2UgdGhhdFxcbiAgKiBwcm9wZXJ0eSB0byBtYXRjaCBhZ2FpbnN0IHRoZSBnaXZlbiBsaXN0IG9mIGlkZW50aWZpZXJzLlxcbiAgKi9cXG4tYm9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXFxuLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKVxcbitzdGF0aWMgYm9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuK1xcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSxcXG4rXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKipvZl9pZClcXG4ge1xcbiBcXHRjb25zdCB1bmlvbiBhY3BpX29iamVjdCAqb2ZfY29tcGF0aWJsZSwgKm9iajtcXG4gXFx0aW50IGksIG52YWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycyBiL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yc1xcbmluZGV4IDEwMTA2ZmExMzA5NWU0Li4xNDVkYWExMjA3MmY0OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnNcXG4rKysgYi9kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnNcXG5AQCAtMTk0LDcgKzE5NCw2IEBAIGZuIHJlZ2lzdGVyX2VtKHBvbGljeTogXFx1MDAyNm11dCBjcHVmcmVxOjpQb2xpY3kpIHtcXG4gXFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcXG4gICAgIE9GX1RBQkxFLFxcbi0gICAgTU9EVUxFX09GX1RBQkxFLFxcbiAgICAgXFx1MDAzY0NQVUZyZXFEVERyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXFxcIm9wZXJhdGluZy1wb2ludHMtdjJcXFwiKSwgKCkpXVxcbiApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnNcXG5pbmRleCA0ODkzM2Q4NmRkZGE5Yi4uNDNmMTVjZGZlYjA5YjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdmEvZHJpdmVyLnJzXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdmEvZHJpdmVyLnJzXFxuQEAgLTQzLDcgKzQzLDYgQEAgcHViKGNyYXRlKSBzdHJ1Y3QgTm92YURhdGEge1xcbiBcXG4ga2VybmVsOjphdXhpbGlhcnlfZGV2aWNlX3RhYmxlIShcXG4gICAgIEFVWF9UQUJMRSxcXG4tICAgIE1PRFVMRV9BVVhfVEFCTEUsXFxuICAgICBcXHUwMDNjTm92YURyaXZlciBhcyBhdXhpbGlhcnk6OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsoXFxuICAgICAgICAgYXV4aWxpYXJ5OjpEZXZpY2VJZDo6bmV3KE5PVkFfQ09SRV9NT0RVTEVfTkFNRSwgQVVYSUxJQVJZX05BTUUpLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5ycyBiL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzXFxuaW5kZXggZDA2M2JjNjY0Y2MxMTcuLjIxOGU5YWY4OTljN2M3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnNcXG5AQCAtODcsNyArODcsNiBAQCBmbiBpc3N1ZV9zb2Z0X3Jlc2V0KGRldjogXFx1MDAyNkRldmljZSwgaW9tZW06IFxcdTAwMjZJb01lbVxcdTAwM2MnX1xcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdCB7XFxuIFxcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXFxuICAgICBPRl9UQUJMRSxcXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcXG4gICAgIFxcdTAwM2NUeXJQbGF0Zm9ybURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgW1xcbiAgICAgICAgIChvZjo6RGV2aWNlSWQ6Om5ldyhjXFxcInJvY2tjaGlwLHJrMzU4OC1tYWxpXFxcIiksICgpKSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNcXG5pbmRleCA1NzM4ZDRhYzUyMWI3Mi4uMGM1M2I3MjM5YWM5ZTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5yc1xcbisrKyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNcXG5AQCAtNDAsNyArNDAsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhQ29yZVxcdTAwM2MnYm91bmRcXHUwMDNlIHtcXG4gXFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXFxuICAgICBQQ0lfVEFCTEUsXFxuLSAgICBNT0RVTEVfUENJX1RBQkxFLFxcbiAgICAgXFx1MDAzY05vdmFDb3JlRHJpdmVyIGFzIHBjaTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgW1xcbiAgICAgICAgIC8vIE1vZGVybiBOVklESUEgR1BVcyB3aWxsIHNob3cgdXAgYXMgZWl0aGVyIFZHQSBvciAzRCBjb250cm9sbGVycy5cXG5AQCAtNzAsNyArNjksNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBOb3ZhQ29yZURyaXZlciB7XFxuIFxcbiAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tICAgICAgICBfaW5mbzogXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm8sXFxuKyAgICAgICAgX2luZm86IE9wdGlvblxcdTAwM2NcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mb1xcdTAwM2UsXFxuICAgICApIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmOjpEYXRhXFx1MDAzYydib3VuZFxcdTAwM2UsIEVycm9yXFx1MDAzZSArICdib3VuZCB7XFxuICAgICAgICAgcGluX2luaXQ6OnBpbl9pbml0X3Njb3BlKG1vdmUgfHwge1xcbiAgICAgICAgICAgICBkZXZfZGJnIShwZGV2LCBcXFwiUHJvYmUgTm92YSBDb3JlIEdQVSBkcml2ZXIuXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcXG5pbmRleCAzZTNmYTUxY2NlZjkxMS4uMWRmNzUyMzMwZThmZDkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5yc1xcbisrKyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcXG5AQCAtMzAzLDcgKzMwMyw2IEBAIGZuIGRyb3Aoc2VsZjogUGluXFx1MDAzY1xcdTAwMjZtdXQgU2VsZlxcdTAwM2UpIHtcXG4gXFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcXG4gICAgIE9GX1RBQkxFLFxcbi0gICAgTU9EVUxFX09GX1RBQkxFLFxcbiAgICAgXFx1MDAzY1RoMTUyMFB3bVBsYXRmb3JtRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcXFwidGhlYWQsdGgxNTIwLXB3bVxcXCIpLCAoKSldXFxuICk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oIGIvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmhcXG5pbmRleCA3MTRkMTExZDgwNTMwZi4uN2U1N2Y5Njk4ZjdjZWQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmhcXG4rKysgYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaFxcbkBAIC0xODksMTAgKzE4OSw2IEBAIHN0cnVjdCBhY3BpX2RyaXZlciB7XFxuICAqIC0tLS0tLS0tLS0tXFxuICAqL1xcbiBcXG4tYm9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXFxuLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKTtcXG4tXFxuIC8qIFN0YXR1cyAoX1NUQSkgKi9cXG4gXFxuIHN0cnVjdCBhY3BpX2RldmljZV9zdGF0dXMge1xcbkBAIC0xMDAwLDEzICs5OTYsNiBAQCBpbnQgYWNwaV9zY2FuX2FkZF9kZXAoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9oYW5kbGVfbGlzdCAqZGVwX2RldmljZXMpO1xcbiB1MzIgYXJjaF9hY3BpX2FkZF9hdXRvX2RlcChhY3BpX2hhbmRsZSBoYW5kbGUpO1xcbiAjZWxzZVxcdC8qIENPTkZJR19BQ1BJICovXFxuIFxcbi1zdGF0aWMgaW5saW5lIGJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSxcXG4tXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKVxcbi17XFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4gc3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfYWNwaV9idXNfdHlwZSh2b2lkICpidXMpIHsgcmV0dXJuIDA7IH1cXG4gc3RhdGljIGlubGluZSBpbnQgdW5yZWdpc3Rlcl9hY3BpX2J1c190eXBlKHZvaWQgKmJ1cykgeyByZXR1cm4gMDsgfVxcbiBcXG5kaWZmIC0tZ2l0IGEvcnVzdC9oZWxwZXJzL2FjcGkuYyBiL3J1c3QvaGVscGVycy9hY3BpLmNcXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCBlNzVjOTgwN2JiYWRjYy4uMDAwMDAwMDAwMDAwMDBcXG4tLS0gYS9ydXN0L2hlbHBlcnMvYWNwaS5jXFxuKysrIC9kZXYvbnVsbFxcbkBAIC0xLDE2ICswLDAgQEBcXG4tLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4tXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NhY3BpL2FjcGlfYnVzLmhcXHUwMDNlXFxuLVxcbi1fX3J1c3RfaGVscGVyIGJvb2wgcnVzdF9oZWxwZXJfYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICoqb2ZfaWQpXFxuLXtcXG4tXFx0cmV0dXJuIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGFkZXYsIG9mX21hdGNoX3RhYmxlLCBvZl9pZCk7XFxuLX1cXG4tXFxuLV9fcnVzdF9oZWxwZXIgc3RydWN0IGFjcGlfZGV2aWNlICpydXN0X2hlbHBlcl90b19hY3BpX2RldmljZV9ub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpXFxuLXtcXG4tXFx0cmV0dXJuIHRvX2FjcGlfZGV2aWNlX25vZGUoZndub2RlKTtcXG4tfVxcbmRpZmYgLS1naXQgYS9ydXN0L2hlbHBlcnMvaGVscGVycy5jIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xcbmluZGV4IDk5OGUzMTA1MmU2NjAxLi5mYWRkN2FjZGQ4MWM5MyAxMDA2NDRcXG4tLS0gYS9ydXN0L2hlbHBlcnMvaGVscGVycy5jXFxuKysrIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xcbkBAIC0zOCw3ICszOCw2IEBAXFxuICNkZWZpbmUgX19ydXN0X2hlbHBlciBfX2Fsd2F5c19pbmxpbmVcXG4gI2VuZGlmXFxuIFxcbi0jaW5jbHVkZSBcXFwiYWNwaS5jXFxcIlxcbiAjaW5jbHVkZSBcXFwiYXRvbWljLmNcXFwiXFxuICNpbmNsdWRlIFxcXCJhdG9taWNfZXh0LmNcXFwiXFxuICNpbmNsdWRlIFxcXCJhdXhpbGlhcnkuY1xcXCJcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWNwaS5ycyBiL3J1c3Qva2VybmVsL2FjcGkucnNcXG5pbmRleCA5YjhlZmE2MjMxMzBjMS4uZWEyY2U2MWVlMzkzMWYgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYWNwaS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2FjcGkucnNcXG5AQCAtMjUsMTAgKzI1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcXG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkLlxcbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XFxuICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID0gY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjphY3BpX2RldmljZV9pZCwgZHJpdmVyX2RhdGEpO1xcbi1cXG4tICAgIGZuIGluZGV4KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSB1c2l6ZSB7XFxuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXFxuLSAgICB9XFxuIH1cXG4gXFxuIGltcGwgRGV2aWNlSWQge1xcbkBAIC01MywxMyArNDksNyBAQCBwdWIgY29uc3QgZm4gbmV3KGlkOiBcXHUwMDI2J3N0YXRpYyBDU3RyKSAtXFx1MDAzZSBTZWxmIHtcXG4gLy8vIENyZWF0ZSBhbiBBQ1BJIGBJZFRhYmxlYCB3aXRoIGFuIFxcXCJhbGlhc1xcXCIgZm9yIG1vZHBvc3QuXFxuICNbbWFjcm9fZXhwb3J0XVxcbiBtYWNyb19ydWxlcyEgYWNwaV9kZXZpY2VfdGFibGUge1xcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVxcdTAwM2Uge1xcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVxcdTAwM2NcXG4tICAgICAgICAgICAgJGNyYXRlOjphY3BpOjpEZXZpY2VJZCxcXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcXG4tICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LFxcbi0gICAgICAgIFxcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcXG4tXFxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwiYWNwaVxcXCIsICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xcbisgICAgKCQoJHR0OnR0KSopID1cXHUwMDNlIHtcXG4rICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxcXCJhY3BpXFxcIiwgJGNyYXRlOjphY3BpOjpEZXZpY2VJZCwgJCgkdHQpKik7XFxuICAgICB9O1xcbiB9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xcbmluZGV4IGM0MjkyOGQ1YTIzOTNmLi5hYTEzZDg4NjZhMTk2NCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG5AQCAtOTMsNyArOTMsOSBAQCBleHRlcm4gXFxcIkNcXFwiIGZuIHByb2JlX2NhbGxiYWNrKFxcbiAgICAgICAgIC8vIFNBRkVUWTogYERldmljZUlkYCBpcyBhIGAjW3JlcHIodHJhbnNwYXJlbnQpYF0gd3JhcHBlciBvZiBgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2VfaWRgXFxuICAgICAgICAgLy8gYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXFxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNippZC5jYXN0OjpcXHUwMDNjRGV2aWNlSWRcXHUwMDNlKCkgfTtcXG4tICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7XFxuK1xcbisgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVxcdTAwM2NfLCBUOjpJZEluZm9cXHUwMDNlYC5cXG4rICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkOjpcXHUwMDNjVDo6SWRJbmZvXFx1MDAzZSgpIH07XFxuIFxcbiAgICAgICAgIGZyb21fcmVzdWx0KHx8IHtcXG4gICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShhZGV2LCBpbmZvKTtcXG5AQCAtMTY5LDEwICsxNzEsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xcbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XFxuICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID1cXG4gICAgICAgICBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OmF1eGlsaWFyeV9kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTtcXG4tXFxuLSAgICBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfZGF0YVxcbi0gICAgfVxcbiB9XFxuIFxcbiAvLy8gSWRUYWJsZSB0eXBlIGZvciBhdXhpbGlhcnkgZHJpdmVycy5cXG5AQCAtMTgxLDE0ICsxNzksOCBAQCBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbiAvLy8gQ3JlYXRlIGEgYXV4aWxpYXJ5IGBJZFRhYmxlYCB3aXRoIGl0cyBhbGlhcyBmb3IgbW9kcG9zdC5cXG4gI1ttYWNyb19leHBvcnRdXFxuIG1hY3JvX3J1bGVzISBhdXhpbGlhcnlfZGV2aWNlX3RhYmxlIHtcXG4tICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID1cXHUwMDNlIHtcXG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcXHUwMDNjXFxuLSAgICAgICAgICAgICRjcmF0ZTo6YXV4aWxpYXJ5OjpEZXZpY2VJZCxcXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcXG4tICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LFxcbi0gICAgICAgIFxcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcXG4tXFxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwiYXV4aWxpYXJ5XFxcIiwgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7XFxuKyAgICAoJCgkdHQ6dHQpKikgPVxcdTAwM2Uge1xcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxcImF1eGlsaWFyeVxcXCIsICRjcmF0ZTo6YXV4aWxpYXJ5OjpEZXZpY2VJZCwgJCgkdHQpKik7XFxuICAgICB9O1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnNcXG5pbmRleCA4ZTk3MjE0NDYwMTQ2ZS4uNWY0ZDE5MWZjZTUxNWEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzXFxuQEAgLTUsNyArNSwxMCBAQFxcbiAvLyEgRWFjaCBidXMgLyBzdWJzeXN0ZW0gdGhhdCBtYXRjaGVzIGRldmljZSBhbmQgZHJpdmVyIHRocm91Z2ggYSBidXMgLyBzdWJzeXN0ZW0gc3BlY2lmaWMgSUQgaXNcXG4gLy8hIGV4cGVjdGVkIHRvIGltcGxlbWVudCBbYFJhd0RldmljZUlkYF0uXFxuIFxcbi11c2UgY29yZTo6bWVtOjpNYXliZVVuaW5pdDtcXG4rdXNlIGNvcmU6OntcXG4rICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXFxuKyAgICBtZW06Ok1heWJlVW5pbml0LCAvL1xcbit9O1xcbiBcXG4gLy8vIE1hcmtlciB0cmFpdCB0byBpbmRpY2F0ZSBhIFJ1c3QgZGV2aWNlIElEIHR5cGUgcmVwcmVzZW50cyBhIGNvcnJlc3BvbmRpbmcgQyBkZXZpY2UgSUQgdHlwZS5cXG4gLy8vXFxuQEAgLTQ3LDExMiArNTAsMTEwIEBAIHB1YiB1bnNhZmUgdHJhaXQgUmF3RGV2aWNlSWRJbmRleDogUmF3RGV2aWNlSWQge1xcbiAgICAgLy8vIFRoZSBvZmZzZXQgKGluIGJ5dGVzKSB0byB0aGUgY29udGV4dC9kYXRhIGZpZWxkIGluIHRoZSByYXcgZGV2aWNlIElELlxcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZTtcXG4gXFxuLSAgICAvLy8gVGhlIGluZGV4IHN0b3JlZCBhdCBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBvZiB0aGUgaW1wbGVtZW50b3Igb2YgdGhlIFtgUmF3RGV2aWNlSWRJbmRleGBdXFxuLSAgICAvLy8gdHJhaXQuXFxuLSAgICBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemU7XFxuLX1cXG4tXFxuLS8vLyBBIHplcm8tdGVybWluYXRlZCBkZXZpY2UgaWQgYXJyYXkuXFxuLSNbcmVwcihDKV1cXG4tcHViIHN0cnVjdCBSYXdJZEFycmF5XFx1MDAzY1Q6IFJhd0RldmljZUlkLCBjb25zdCBOOiB1c2l6ZVxcdTAwM2Uge1xcbi0gICAgaWRzOiBbVDo6UmF3VHlwZTsgTl0sXFxuLSAgICBzZW50aW5lbDogTWF5YmVVbmluaXRcXHUwMDNjVDo6UmF3VHlwZVxcdTAwM2UsXFxuLX1cXG4rICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gYFxcdTAwMjZTZWxmYCBtdXN0IGJlIHN0b3JlZCBpbnNpZGUgYSBgSWRBcnJheVxcdTAwM2NTZWxmLCBVXFx1MDAzZWAuXFxuKyAgICB1bnNhZmUgZm4gaW5mb191bmNoZWNrZWRcXHUwMDNjVVxcdTAwM2UoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjYnc3RhdGljIFUge1xcbisgICAgICAgIC8vIFNBRkVUWTogQnkgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSB0cmFpdCwgdGhpcyBpcyBgc2VsZi5kcml2ZXJfZGF0YSBhcyAqY29uc3QgVWAgYW5kIGJ5XFxuKyAgICAgICAgLy8gdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgZnVuY3Rpb24sIHRoaXMgaXMgc3RvcmVkIGluIGBJZEFycmF5XFx1MDAzY1NlbGYsIFVcXHUwMDNlYCBzbyBpc1xcbisgICAgICAgIC8vIGNvbnZlcnRpYmxlIHRvIGBcXHUwMDI2J3N0YXRpYyBVYC5cXG4rICAgICAgICB1bnNhZmUge1xcbisgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHNlbGYpXFxuKyAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoU2VsZjo6RFJJVkVSX0RBVEFfT0ZGU0VUKVxcbisgICAgICAgICAgICAgICAgLmNhc3Q6OlxcdTAwM2NcXHUwMDI2VVxcdTAwM2UoKVxcbisgICAgICAgICAgICAgICAgLnJlYWQoKVxcbisgICAgICAgIH1cXG4rICAgIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogUmF3RGV2aWNlSWQsIGNvbnN0IE46IHVzaXplXFx1MDAzZSBSYXdJZEFycmF5XFx1MDAzY1QsIE5cXHUwMDNlIHtcXG4tICAgICNbZG9jKGhpZGRlbildXFxuLSAgICBwdWIgY29uc3QgZm4gc2l6ZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0gICAgICAgIGNvcmU6Om1lbTo6c2l6ZV9vZjo6XFx1MDAzY1NlbGZcXHUwMDNlKClcXG4rICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gYFxcdTAwMjZTZWxmYCBtdXN0IGJlIHN0b3JlZCBpbnNpZGUgYSBgSWRBcnJheVxcdTAwM2NTZWxmLCBVXFx1MDAzZWAsIG9yIGhhcyBOVUxMIChvciAwKSBhcyBkcml2ZXIgZGF0YS5cXG4rICAgIHVuc2FmZSBmbiBpbmZvX3VuY2hlY2tlZF9vcHRcXHUwMDNjVVxcdTAwM2UoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBVXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhlIHRyYWl0LCB0aGlzIGlzIGBzZWxmLmRyaXZlcl9kYXRhIGFzICpjb25zdCBVYCBhbmQgYnlcXG4rICAgICAgICAvLyB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSBmdW5jdGlvbiwgaWYgdGhpcyBpcyBzdG9yZWQgaW4gYElkQXJyYXlcXHUwMDNjU2VsZiwgVVxcdTAwM2VgLCB0aGlzIGlzXFxuKyAgICAgICAgLy8gY29udmVydGlibGUgdG8gYE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBVXFx1MDAzZWAuIE90aGVyd2lzZSBpdCBpcyBOVUxMIHdoaWNoIGlzIGBOb25lYCBhc1xcbisgICAgICAgIC8vIGBPcHRpb25cXHUwMDNjXFx1MDAyNlVcXHUwMDNlYC5cXG4rICAgICAgICB1bnNhZmUge1xcbisgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHNlbGYpXFxuKyAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoU2VsZjo6RFJJVkVSX0RBVEFfT0ZGU0VUKVxcbisgICAgICAgICAgICAgICAgLmNhc3Q6OlxcdTAwM2NPcHRpb25cXHUwMDNjXFx1MDAyNlVcXHUwMDNlXFx1MDAzZSgpXFxuKyAgICAgICAgICAgICAgICAucmVhZCgpXFxuKyAgICAgICAgfVxcbiAgICAgfVxcbiB9XFxuIFxcbiAvLy8gQSB6ZXJvLXRlcm1pbmF0ZWQgZGV2aWNlIGlkIGFycmF5LCBmb2xsb3dlZCBieSBjb250ZXh0IGRhdGEuXFxuICNbcmVwcihDKV1cXG4tcHViIHN0cnVjdCBJZEFycmF5XFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVLCBjb25zdCBOOiB1c2l6ZVxcdTAwM2Uge1xcbi0gICAgcmF3X2lkczogUmF3SWRBcnJheVxcdTAwM2NULCBOXFx1MDAzZSxcXG4tICAgIGlkX2luZm9zOiBbVTsgTl0sXFxuK3B1YiBzdHJ1Y3QgSWRBcnJheVxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVTogJ3N0YXRpYywgY29uc3QgTjogdXNpemVcXHUwMDNlIHtcXG4rICAgIC8vIFRoaXMgaXMgYE1heWJlVW5pbml0XFx1MDAzY1Q6OlJhd1R5cGVcXHUwMDNlYCBzbyBhbnkgYnl0ZXMgaW5zaWRlIGl0IGNhbiBjYXJyeSBwcm92ZW5hbmNlIGluIENURkUuXFxuKyAgICAvLyBJZiB0aGlzIHdlcmUgYFQ6OlJhd1R5cGVgLCBpbnRlZ2VyIGZpZWxkcyB3b3VsZCBub3QgYmUgYWJsZSB0byBjb250YWluIHBvaW50ZXJzLlxcbisgICAgaWRzOiBbTWF5YmVVbmluaXRcXHUwMDNjVDo6UmF3VHlwZVxcdTAwM2U7IE5dLFxcbisgICAgc2VudGluZWw6IE1heWJlVW5pbml0XFx1MDAzY1Q6OlJhd1R5cGVcXHUwMDNlLFxcbisgICAgcGhhbnRvbTogUGhhbnRvbURhdGFcXHUwMDNjXFx1MDAyNidzdGF0aWMgVVxcdTAwM2UsXFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogUmF3RGV2aWNlSWQsIFUsIGNvbnN0IE46IHVzaXplXFx1MDAzZSBJZEFycmF5XFx1MDAzY1QsIFUsIE5cXHUwMDNlIHtcXG4rLy8gU0FGRVRZOiBkZXZpY2UgSUQgaXMgcGxhaW4gZGF0YSBwbHVzIGEgYFxcdTAwMjYnc3RhdGljIFVgIGFuZCBjYW4gdGh1cyBiZSBzZW50IGJldHdlZW4gdGhyZWFkcyBzYWZlbHlcXG4rLy8gaWYgYFxcdTAwMjZVYCBjYW4uXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVOiBTeW5jICsgJ3N0YXRpYywgY29uc3QgTjogdXNpemVcXHUwMDNlIFNlbmQgZm9yIElkQXJyYXlcXHUwMDNjVCwgVSwgTlxcdTAwM2Uge31cXG4rXFxuKy8vIFNBRkVUWTogZGV2aWNlIElEIGlzIHBsYWluIGRhdGEgcGx1cyBhIGBcXHUwMDI2J3N0YXRpYyBVYCBhbmQgY2FuIHRodXMgYmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyBzYWZlbHlcXG4rLy8gaWYgYFxcdTAwMjZVYCBjYW4uXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVOiBTeW5jICsgJ3N0YXRpYywgY29uc3QgTjogdXNpemVcXHUwMDNlIFN5bmMgZm9yIElkQXJyYXlcXHUwMDNjVCwgVSwgTlxcdTAwM2Uge31cXG4rXFxuK2ltcGxcXHUwMDNjVDogUmF3RGV2aWNlSWQgKyBSYXdEZXZpY2VJZEluZGV4LCBVOiAnc3RhdGljLCBjb25zdCBOOiB1c2l6ZVxcdTAwM2UgSWRBcnJheVxcdTAwM2NULCBVLCBOXFx1MDAzZSB7XFxuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXJyYXkuXFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgY29udGVudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gaWRlbnRpZmllcnMgYW5kIGNvbnRleHQgaW5mb3JtYXRpb24uXFxuLSAgICAvLy9cXG4tICAgIC8vLyAjIFNhZmV0eVxcbi0gICAgLy8vXFxuLSAgICAvLy8gYGRhdGFfb2Zmc2V0YCBhcyBgTm9uZWAgaXMgYWx3YXlzIHNhZmUuXFxuLSAgICAvLy8gSWYgYGRhdGFfb2Zmc2V0YCBpcyBgU29tZShkYXRhX29mZnNldClgLCB0aGVuOlxcbi0gICAgLy8vIC0gYGRhdGFfb2Zmc2V0YCBtdXN0IGJlIHRoZSBjb3JyZWN0IG9mZnNldCAoaW4gYnl0ZXMpIHRvIHRoZSBjb250ZXh0L2RhdGEgZmllbGRcXG4tICAgIC8vLyAgIChlLmcuLCB0aGUgYGRyaXZlcl9kYXRhYCBmaWVsZCkgd2l0aGluIHRoZSByYXcgZGV2aWNlIElEIHN0cnVjdHVyZS5cXG4tICAgIC8vLyAtIFRoZSBmaWVsZCBhdCBgZGF0YV9vZmZzZXRgIG11c3QgYmUgY29ycmVjdGx5IHNpemVkIHRvIGhvbGQgYSBgdXNpemVgLlxcbi0gICAgY29uc3QgdW5zYWZlIGZuIGJ1aWxkKGlkczogWyhULCBVKTsgTl0sIGRhdGFfb2Zmc2V0OiBPcHRpb25cXHUwMDNjdXNpemVcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgIHB1YiBjb25zdCBmbiBuZXcoaWRzOiBbKFQsIFxcdTAwMjYnc3RhdGljIFUpOyBOXSkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAgICAgbGV0IG11dCByYXdfaWRzID0gW2NvbnN0IHsgTWF5YmVVbmluaXQ6OlxcdTAwM2NUOjpSYXdUeXBlXFx1MDAzZTo6dW5pbml0KCkgfTsgTl07XFxuLSAgICAgICAgbGV0IG11dCBpbmZvcyA9IFtjb25zdCB7IE1heWJlVW5pbml0Ojp1bmluaXQoKSB9OyBOXTtcXG4gXFxuICAgICAgICAgbGV0IG11dCBpID0gMHVzaXplO1xcbiAgICAgICAgIHdoaWxlIGkgXFx1MDAzYyBOIHtcXG4gICAgICAgICAgICAgLy8gU0FGRVRZOiBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIGBSYXdEZXZpY2VJZGAsIHdlJ3JlIGd1YXJhbnRlZWQgdGhhdCBgVGAgaXNcXG4gICAgICAgICAgICAgLy8gbGF5b3V0LXdpc2UgY29tcGF0aWJsZSB3aXRoIGBSYXdUeXBlYC5cXG4gICAgICAgICAgICAgcmF3X2lkc1tpXSA9IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXFx1MDAyNmlkc1tpXS4wKSB9O1xcbi0gICAgICAgICAgICBpZiBsZXQgU29tZShkYXRhX29mZnNldCkgPSBkYXRhX29mZnNldCB7XFxuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhpcyBmdW5jdGlvbiwgdGhpcyB3b3VsZCBiZSBlZmZlY3RpdmVseVxcbi0gICAgICAgICAgICAgICAgLy8gYHJhd19pZHNbaV0uZHJpdmVyX2RhdGEgPSBpO2AuXFxuLSAgICAgICAgICAgICAgICB1bnNhZmUge1xcbi0gICAgICAgICAgICAgICAgICAgIHJhd19pZHNbaV1cXG4tICAgICAgICAgICAgICAgICAgICAgICAgLmFzX211dF9wdHIoKVxcbi0gICAgICAgICAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoZGF0YV9vZmZzZXQpXFxuLSAgICAgICAgICAgICAgICAgICAgICAgIC5jYXN0OjpcXHUwMDNjdXNpemVcXHUwMDNlKClcXG4tICAgICAgICAgICAgICAgICAgICAgICAgLndyaXRlKGkpO1xcbi0gICAgICAgICAgICAgICAgfVxcbisgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkSW5kZXhgLCB0aGlzIHdvdWxkIGJlIGVmZmVjdGl2ZWx5XFxuKyAgICAgICAgICAgIC8vIGByYXdfaWRzW2ldLmRyaXZlcl9kYXRhID0gaWRzW2ldLjE7YC5cXG4rICAgICAgICAgICAgdW5zYWZlIHtcXG4rICAgICAgICAgICAgICAgIHJhd19pZHNbaV1cXG4rICAgICAgICAgICAgICAgICAgICAuYXNfbXV0X3B0cigpXFxuKyAgICAgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKFQ6OkRSSVZFUl9EQVRBX09GRlNFVClcXG4rICAgICAgICAgICAgICAgICAgICAuY2FzdDo6XFx1MDAzY1xcdTAwMjZVXFx1MDAzZSgpXFxuKyAgICAgICAgICAgICAgICAgICAgLndyaXRlKGlkc1tpXS4xKTtcXG4gICAgICAgICAgICAgfVxcbiBcXG4tICAgICAgICAgICAgLy8gU0FGRVRZOiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGEgbW92ZTogYGluZm9zW2ldID0gaWRzW2ldLjFgLiBXZSBtYWtlIGEgY29weSBoZXJlIGJ1dFxcbi0gICAgICAgICAgICAvLyBsYXRlciBmb3JnZXQgYGlkc2AuXFxuLSAgICAgICAgICAgIGluZm9zW2ldID0gTWF5YmVVbmluaXQ6Om5ldyh1bnNhZmUgeyBjb3JlOjpwdHI6OnJlYWQoXFx1MDAyNmlkc1tpXS4xKSB9KTtcXG4gICAgICAgICAgICAgaSArPSAxO1xcbiAgICAgICAgIH1cXG4gXFxuICAgICAgICAgY29yZTo6bWVtOjpmb3JnZXQoaWRzKTtcXG4gXFxuICAgICAgICAgU2VsZiB7XFxuLSAgICAgICAgICAgIHJhd19pZHM6IFJhd0lkQXJyYXkge1xcbi0gICAgICAgICAgICAgICAgLy8gU0FGRVRZOiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGBhcnJheV9hc3N1bWVfaW5pdGAsIHdoaWNoIGlzIHVuc3RhYmxlLCBzbyB3ZSB1c2VcXG4tICAgICAgICAgICAgICAgIC8vIGB0cmFuc211dGVfY29weWAgaW5zdGVhZC4gV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYHJhd19pZHNgIHNvIHRoaXNcXG4tICAgICAgICAgICAgICAgIC8vIGBhcnJheV9hc3N1bWVfaW5pdGAgaXMgc2FmZS5cXG4tICAgICAgICAgICAgICAgIGlkczogdW5zYWZlIHsgY29yZTo6bWVtOjp0cmFuc211dGVfY29weShcXHUwMDI2cmF3X2lkcykgfSxcXG4tICAgICAgICAgICAgICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdDo6emVyb2VkKCksXFxuLSAgICAgICAgICAgIH0sXFxuLSAgICAgICAgICAgIC8vIFNBRkVUWTogV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYGluZm9zYCBzbyB0aGlzIGBhcnJheV9hc3N1bWVfaW5pdGAgaXNcXG4tICAgICAgICAgICAgLy8gc2FmZS5cXG4tICAgICAgICAgICAgaWRfaW5mb3M6IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXFx1MDAyNmluZm9zKSB9LFxcbisgICAgICAgICAgICBpZHM6IHJhd19pZHMsXFxuKyAgICAgICAgICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdDo6emVyb2VkKCksXFxuKyAgICAgICAgICAgIHBoYW50b206IFBoYW50b21EYXRhLFxcbiAgICAgICAgIH1cXG4gICAgIH1cXG4rfVxcbiBcXG4raW1wbFxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgY29uc3QgTjogdXNpemVcXHUwMDNlIElkQXJyYXlcXHUwMDNjVCwgKCksIE5cXHUwMDNlIHtcXG4gICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBhcnJheSB3aXRob3V0IHdyaXRpbmcgaW5kZXggdmFsdWVzLlxcbiAgICAgLy8vXFxuICAgICAvLy8gVGhlIGNvbnRlbnRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGdpdmVuIGlkZW50aWZpZXJzIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uLlxcbiAgICAgLy8vIElmIHRoZSBkZXZpY2UgaW1wbGVtZW50cyBbYFJhd0RldmljZUlkSW5kZXhgXSwgY29uc2lkZXIgdXNpbmcgW2BJZEFycmF5OjpuZXdgXSBpbnN0ZWFkLlxcbi0gICAgcHViIGNvbnN0IGZuIG5ld193aXRob3V0X2luZGV4KGlkczogWyhULCBVKTsgTl0pIC1cXHUwMDNlIFNlbGYge1xcbi0gICAgICAgIC8vIFNBRkVUWTogQ2FsbGluZyBgU2VsZjo6YnVpbGRgIHdpdGggYG9mZnNldCA9IE5vbmVgIGlzIGFsd2F5cyBzYWZlLFxcbi0gICAgICAgIC8vIGJlY2F1c2Ugbm8gcmF3IG1lbW9yeSB3cml0ZXMgYXJlIHBlcmZvcm1lZCBpbiB0aGlzIGNhc2UuXFxuLSAgICAgICAgdW5zYWZlIHsgU2VsZjo6YnVpbGQoaWRzLCBOb25lKSB9XFxuLSAgICB9XFxuLVxcbi0gICAgLy8vIFJlZmVyZW5jZSB0byB0aGUgY29udGFpbmVkIFtgUmF3SWRBcnJheWBdLlxcbi0gICAgcHViIGNvbnN0IGZuIHJhd19pZHMoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZSYXdJZEFycmF5XFx1MDAzY1QsIE5cXHUwMDNlIHtcXG4tICAgICAgICBcXHUwMDI2c2VsZi5yYXdfaWRzXFxuLSAgICB9XFxuLX1cXG4rICAgIHB1YiBjb25zdCBmbiBuZXdfd2l0aG91dF9pbmRleChpZHM6IFtUOyBOXSkgLVxcdTAwM2UgU2VsZiB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBgVGAgaXMgbGF5b3V0LXdpc2UgY29tcGF0aWJsZSB3aXRoIGBUOjpSYXdUeXBlYCwgc28gaXMgdGhlIGFycmF5IG9mIHRoZW0uXFxuKyAgICAgICAgbGV0IHJhd19pZHM6IFtNYXliZVVuaW5pdFxcdTAwM2NUOjpSYXdUeXBlXFx1MDAzZTsgTl0gPSB1bnNhZmUgeyBjb3JlOjptZW06OnRyYW5zbXV0ZV9jb3B5KFxcdTAwMjZpZHMpIH07XFxuKyAgICAgICAgY29yZTo6bWVtOjpmb3JnZXQoaWRzKTtcXG4gXFxuLWltcGxcXHUwMDNjVDogUmF3RGV2aWNlSWQgKyBSYXdEZXZpY2VJZEluZGV4LCBVLCBjb25zdCBOOiB1c2l6ZVxcdTAwM2UgSWRBcnJheVxcdTAwM2NULCBVLCBOXFx1MDAzZSB7XFxuLSAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXJyYXkuXFxuLSAgICAvLy9cXG4tICAgIC8vLyBUaGUgY29udGVudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gaWRlbnRpZmllcnMgYW5kIGNvbnRleHQgaW5mb3JtYXRpb24uXFxuLSAgICBwdWIgY29uc3QgZm4gbmV3KGlkczogWyhULCBVKTsgTl0pIC1cXHUwMDNlIFNlbGYge1xcbi0gICAgICAgIC8vIFNBRkVUWTogYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiBgUmF3RGV2aWNlSWRJbmRleGAsXFxuLSAgICAgICAgLy8gYFQ6OkRSSVZFUl9EQVRBX09GRlNFVGAgaXMgZ3VhcmFudGVlZCB0byBiZSB0aGUgY29ycmVjdCBvZmZzZXQgKGluIGJ5dGVzKSB0b1xcbi0gICAgICAgIC8vIGEgZmllbGQgd2l0aGluIGBUOjpSYXdUeXBlYC5cXG4tICAgICAgICB1bnNhZmUgeyBTZWxmOjpidWlsZChpZHMsIFNvbWUoVDo6RFJJVkVSX0RBVEFfT0ZGU0VUKSkgfVxcbisgICAgICAgIFNlbGYge1xcbisgICAgICAgICAgICBpZHM6IHJhd19pZHMsXFxuKyAgICAgICAgICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdDo6emVyb2VkKCksXFxuKyAgICAgICAgICAgIHBoYW50b206IFBoYW50b21EYXRhLFxcbisgICAgICAgIH1cXG4gICAgIH1cXG4gfVxcbiBcXG5AQCAtMTY1LDEyICsxNjYsNiBAQCBpbXBsXFx1MDAzY1Q6IFJhd0RldmljZUlkICsgUmF3RGV2aWNlSWRJbmRleCwgVSwgY29uc3QgTjogdXNpemVcXHUwMDNlIElkQXJyYXlcXHUwMDNjVCwgVSwgTlxcdTAwM2Uge1xcbiBwdWIgdHJhaXQgSWRUYWJsZVxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVVxcdTAwM2Uge1xcbiAgICAgLy8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgSUQgdGFibGUuXFxuICAgICBmbiBhc19wdHIoXFx1MDAyNnNlbGYpIC1cXHUwMDNlICpjb25zdCBUOjpSYXdUeXBlO1xcbi1cXG4tICAgIC8vLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIGJ1cyBzcGVjaWZpYyBkZXZpY2UgSUQgZnJvbSBhbiBpbmRleC5cXG4tICAgIGZuIGlkKFxcdTAwMjZzZWxmLCBpbmRleDogdXNpemUpIC1cXHUwMDNlIFxcdTAwMjZUOjpSYXdUeXBlO1xcbi1cXG4tICAgIC8vLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIGRyaXZlci1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmcm9tIGFuIGluZGV4Llxcbi0gICAgZm4gaW5mbyhcXHUwMDI2c2VsZiwgaW5kZXg6IHVzaXplKSAtXFx1MDAzZSBcXHUwMDI2VTtcXG4gfVxcbiBcXG4gaW1wbFxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVSwgY29uc3QgTjogdXNpemVcXHUwMDNlIElkVGFibGVcXHUwMDNjVCwgVVxcdTAwM2UgZm9yIElkQXJyYXlcXHUwMDNjVCwgVSwgTlxcdTAwM2Uge1xcbkBAIC0xNzksMjggKzE3NCw1NiBAQCBmbiBhc19wdHIoXFx1MDAyNnNlbGYpIC1cXHUwMDNlICpjb25zdCBUOjpSYXdUeXBlIHtcXG4gICAgICAgICAvLyB0byBhY2Nlc3MgdGhlIHNlbnRpbmVsLlxcbiAgICAgICAgIGNvcmU6OnB0cjo6ZnJvbV9yZWYoc2VsZikuY2FzdCgpXFxuICAgICB9XFxuLVxcbi0gICAgZm4gaWQoXFx1MDAyNnNlbGYsIGluZGV4OiB1c2l6ZSkgLVxcdTAwM2UgXFx1MDAyNlQ6OlJhd1R5cGUge1xcbi0gICAgICAgIFxcdTAwMjZzZWxmLnJhd19pZHMuaWRzW2luZGV4XVxcbi0gICAgfVxcbi1cXG4tICAgIGZuIGluZm8oXFx1MDAyNnNlbGYsIGluZGV4OiB1c2l6ZSkgLVxcdTAwM2UgXFx1MDAyNlUge1xcbi0gICAgICAgIFxcdTAwMjZzZWxmLmlkX2luZm9zW2luZGV4XVxcbi0gICAgfVxcbiB9XFxuIFxcbiAvLy8gQ3JlYXRlIGRldmljZSB0YWJsZSBhbGlhcyBmb3IgbW9kcG9zdC5cXG4gI1ttYWNyb19leHBvcnRdXFxuIG1hY3JvX3J1bGVzISBtb2R1bGVfZGV2aWNlX3RhYmxlIHtcXG4tICAgICgkdGFibGVfdHlwZTogbGl0ZXJhbCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkdGFibGVfbmFtZTppZGVudCkgPVxcdTAwM2Uge1xcbi0gICAgICAgICNbcnVzdGZtdDo6c2tpcF1cXG4rICAgIChcXG4rICAgICAgICAkdGFibGVfdHlwZTogbGl0ZXJhbCwgJGRldmljZV9pZF90eTogdHksXFxuKyAgICAgICAgJHRhYmxlX25hbWU6IGlkZW50LCAkaWRfaW5mb190eXBlOiB0eSxcXG4rICAgICAgICBbJCgoJGlkOiBleHByLCAkaW5mbzpleHByICQoLCk/KSksKiAkKCwpP11cXG4rICAgICkgPVxcdTAwM2Uge1xcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxuKyAgICAgICAgICAgICR0YWJsZV90eXBlLCAkZGV2aWNlX2lkX3R5LCAkdGFibGVfbmFtZSwgJGlkX2luZm9fdHlwZSxcXG4rICAgICAgICAgICAgeyQoJGlkPVxcdTAwM2UkaW5mbywpKn1cXG4rICAgICAgICApO1xcbisgICAgfTtcXG4rXFxuKyAgICAoXFxuKyAgICAgICAgJHRhYmxlX3R5cGU6IGxpdGVyYWwsICRkZXZpY2VfaWRfdHk6IHR5LFxcbisgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgJGlkX2luZm9fdHlwZTogdHksXFxuKyAgICAgICAgeyQoJGlkOiBleHByID1cXHUwMDNlICRpbmZvOmV4cHIpLCogJCgsKT99XFxuKyAgICApID1cXHUwMDNlIHtcXG4rICAgICAgICAjW2V4cG9ydF9uYW1lID1cXG4rICAgICAgICAgICAgY29uY2F0IShcXFwiX19tb2RfZGV2aWNlX3RhYmxlX19cXFwiLCA6OmNvcmU6OmxpbmUhKCksXFxuKyAgICAgICAgICAgICAgICAgICAgXFxcIl9fa21vZF9cXFwiLCBtb2R1bGVfcGF0aCEoKSxcXG4rICAgICAgICAgICAgICAgICAgICBcXFwiX19cXFwiLCAkdGFibGVfdHlwZSxcXG4rICAgICAgICAgICAgICAgICAgICBcXFwiX19cXFwiLCBzdHJpbmdpZnkhKCR0YWJsZV9uYW1lKSlcXG4rICAgICAgICBdXFxuKyAgICAgICAgc3RhdGljICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVxcdTAwM2NcXG4rICAgICAgICAgICAgJGRldmljZV9pZF90eSxcXG4rICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcXG4rICAgICAgICAgICAgeyBcXHUwMDNjWyRkZXZpY2VfaWRfdHldXFx1MDAzZTo6bGVuKFxcdTAwMjZbJCgkaWQsKSpdKSB9LFxcbisgICAgICAgIFxcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KFskKCgkaWQsIFxcdTAwMjYkaW5mbyksKSpdKTtcXG4rICAgIH07XFxuK1xcbisgICAgLy8gQ2FzZSBmb3Igbm8gSUQgaW5mby5cXG4rICAgIChcXG4rICAgICAgICAkdGFibGVfdHlwZTogbGl0ZXJhbCwgJGRldmljZV9pZF90eTogdHksXFxuKyAgICAgICAgJHRhYmxlX25hbWU6IGlkZW50LCBAbm9uZSxcXG4rICAgICAgICBbJCgkaWQ6IGV4cHIpLCogJCgsKT9dXFxuKyAgICApID1cXHUwMDNlIHtcXG4gICAgICAgICAjW2V4cG9ydF9uYW1lID1cXG4tICAgICAgICAgICAgY29uY2F0IShcXFwiX19tb2RfZGV2aWNlX3RhYmxlX19cXFwiLCBsaW5lISgpLFxcbisgICAgICAgICAgICBjb25jYXQhKFxcXCJfX21vZF9kZXZpY2VfdGFibGVfX1xcXCIsIDo6Y29yZTo6bGluZSEoKSxcXG4gICAgICAgICAgICAgICAgICAgICBcXFwiX19rbW9kX1xcXCIsIG1vZHVsZV9wYXRoISgpLFxcbiAgICAgICAgICAgICAgICAgICAgIFxcXCJfX1xcXCIsICR0YWJsZV90eXBlLFxcbiAgICAgICAgICAgICAgICAgICAgIFxcXCJfX1xcXCIsIHN0cmluZ2lmeSEoJHRhYmxlX25hbWUpKVxcbiAgICAgICAgIF1cXG4tICAgICAgICBzdGF0aWMgJG1vZHVsZV90YWJsZV9uYW1lOiBbOjpjb3JlOjptZW06Ok1heWJlVW5pbml0XFx1MDAzY3U4XFx1MDAzZTsgJHRhYmxlX25hbWUucmF3X2lkcygpLnNpemUoKV0gPVxcbi0gICAgICAgICAgICB1bnNhZmUgeyA6OmNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoJHRhYmxlX25hbWUucmF3X2lkcygpKSB9O1xcbisgICAgICAgIHN0YXRpYyAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcXHUwMDNjXFxuKyAgICAgICAgICAgICRkZXZpY2VfaWRfdHksXFxuKyAgICAgICAgICAgICgpLFxcbisgICAgICAgICAgICB7IFxcdTAwM2NbJGRldmljZV9pZF90eV1cXHUwMDNlOjpsZW4oXFx1MDAyNlskKCRpZCwpKl0pIH0sXFxuKyAgICAgICAgXFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleChbJCgkaWQpLCpdKTtcXG4gICAgIH07XFxuIH1cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJpdmVyLnJzIGIvcnVzdC9rZXJuZWwvZHJpdmVyLnJzXFxuaW5kZXggYmY1YmEwZDI3NTUzZWQuLmM5Yzc0YzRkZGU4ZmE3IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2RyaXZlci5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RyaXZlci5yc1xcbkBAIC0yOTEsMjYgKzI5MSw2IEBAIGZuIGluaXQoXFxuICAgICB9XFxuIH1cXG4gXFxuLS8vIENhbGxpbmcgdGhlIEZGSSBmdW5jdGlvbiBkaXJlY3RseSBmcm9tIHRoZSBgQWRhcHRlcmAgaW1wbCBtYXkgcmVzdWx0IGluIGl0IGJlaW5nIGNhbGxlZFxcbi0vLyBkaXJlY3RseSBmcm9tIGRyaXZlciBtb2R1bGVzLiBUaGlzIGhhcHBlbnMgc2luY2UgdGhlIFJ1c3QgY29tcGlsZXIgd2lsbCB1c2UgbW9ub21vcnBoaXNhdGlvbiwgc29cXG4tLy8gaXQgbWlnaHQgaGFwcGVuIHRoYXQgZnVuY3Rpb25zIGFyZSBpbnN0YW50aWF0ZWQgd2l0aGluIHRoZSBjYWxsaW5nIGRyaXZlciBtb2R1bGUuIEZvciBub3csIHdvcmtcXG4tLy8gYXJvdW5kIHRoaXMgd2l0aCBgI1tpbmxpbmUobmV2ZXIpXWAgaGVscGVycy5cXG4tLy9cXG4tLy8gVE9ETzogUmVtb3ZlIG9uY2UgYSBtb3JlIGdlbmVyaWMgc29sdXRpb24gaGFzIGJlZW4gaW1wbGVtZW50ZWQuIEZvciBpbnN0YW5jZSwgd2UgbWF5IGJlIGFibGUgdG9cXG4tLy8gbGV2ZXJhZ2UgYGJpbmRnZW5gIHRvIHRha2UgY2FyZSBvZiB0aGlzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGEgc3ltYm9sIGlzIChhbHJlYWR5KSBleHBvcnRlZC5cXG4tI1tpbmxpbmUobmV2ZXIpXVxcbi0jW2FsbG93KGNsaXBweTo6bWlzc2luZ19zYWZldHlfZG9jKV1cXG4tI1thbGxvdyhkZWFkX2NvZGUpXVxcbi0jW211c3RfdXNlXVxcbi11bnNhZmUgZm4gYWNwaV9vZl9tYXRjaF9kZXZpY2UoXFxuLSAgICBhZGV2OiAqY29uc3QgYmluZGluZ3M6OmFjcGlfZGV2aWNlLFxcbi0gICAgb2ZfbWF0Y2hfdGFibGU6ICpjb25zdCBiaW5kaW5nczo6b2ZfZGV2aWNlX2lkLFxcbi0gICAgb2ZfaWQ6ICptdXQgKmNvbnN0IGJpbmRpbmdzOjpvZl9kZXZpY2VfaWQsXFxuLSkgLVxcdTAwM2UgYm9vbCB7XFxuLSAgICAvLyBTQUZFVFk6IFNhZmV0eSByZXF1aXJlbWVudHMgYXJlIHRoZSBzYW1lIGFzIGBiaW5kaW5nczo6YWNwaV9vZl9tYXRjaF9kZXZpY2VgLlxcbi0gICAgdW5zYWZlIHsgYmluZGluZ3M6OmFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGFkZXYsIG9mX21hdGNoX3RhYmxlLCBvZl9pZCkgfVxcbi19XFxuLVxcbiAvLy8gVGhlIGJ1cyBpbmRlcGVuZGVudCBhZGFwdGVyIHRvIG1hdGNoIGEgZHJpdmVycyBhbmQgYSBkZXZpY2VzLlxcbiAvLy9cXG4gLy8vIFRoaXMgdHJhaXQgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBidXMgc3BlY2lmaWMgYWRhcHRlciwgd2hpY2ggcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvblxcbkBAIC0zMjQsMTE4ICszMDQsMjMgQEAgcHViIHRyYWl0IEFkYXB0ZXIge1xcbiAgICAgLy8vIFRoZSBbYGFjcGk6OklkVGFibGVgXSBvZiB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXJcXG4gICAgIGZuIGFjcGlfaWRfdGFibGUoKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjYWNwaTo6SWRUYWJsZVxcdTAwM2NTZWxmOjpJZEluZm9cXHUwMDNlXFx1MDAzZTtcXG4gXFxuLSAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYGFjcGk6OklkVGFibGVgXSwgaWYgYW55Llxcbi0gICAgLy8vXFxuLSAgICAvLy8gSWYgdGhpcyByZXR1cm5zIGBOb25lYCwgaXQgbWVhbnMgdGhlcmUgaXMgbm8gbWF0Y2ggd2l0aCBhbiBlbnRyeSBpbiB0aGUgW2BhY3BpOjpJZFRhYmxlYF0uXFxuLSAgICBmbiBhY3BpX2lkX2luZm8oZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cXHUwMDNlIHtcXG4tICAgICAgICAjW2NmZyhub3QoQ09ORklHX0FDUEkpKV1cXG4tICAgICAgICB7XFxuLSAgICAgICAgICAgIGxldCBfID0gZGV2O1xcbi0gICAgICAgICAgICBOb25lXFxuLSAgICAgICAgfVxcbi1cXG4tICAgICAgICAjW2NmZyhDT05GSUdfQUNQSSldXFxuLSAgICAgICAge1xcbi0gICAgICAgICAgICBsZXQgdGFibGUgPSBTZWxmOjphY3BpX2lkX3RhYmxlKCk/O1xcbi1cXG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxcbi0gICAgICAgICAgICAvLyAtIGB0YWJsZWAgaGFzIHN0YXRpYyBsaWZldGltZSwgaGVuY2UgaXQncyB2YWxpZCBmb3IgcmVhZCxcXG4tICAgICAgICAgICAgLy8gLSBgZGV2YCBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHdoaWxlIGl0J3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cXG4tICAgICAgICAgICAgbGV0IHJhd19pZCA9IHVuc2FmZSB7IGJpbmRpbmdzOjphY3BpX21hdGNoX2RldmljZSh0YWJsZS5hc19wdHIoKSwgZGV2LmFzX3JhdygpKSB9O1xcbi1cXG4tICAgICAgICAgICAgaWYgcmF3X2lkLmlzX251bGwoKSB7XFxuLSAgICAgICAgICAgICAgICBOb25lXFxuLSAgICAgICAgICAgIH0gZWxzZSB7XFxuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBhY3BpX2RldmljZV9pZGBcXG4tICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCdzIHNhZmUgdG8gdHJhbnNtdXRlLlxcbi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNipyYXdfaWQuY2FzdDo6XFx1MDAzY2FjcGk6OkRldmljZUlkXFx1MDAzZSgpIH07XFxuLVxcbi0gICAgICAgICAgICAgICAgU29tZSh0YWJsZS5pbmZvKFxcdTAwM2NhY3BpOjpEZXZpY2VJZCBhcyBjcmF0ZTo6ZGV2aWNlX2lkOjpSYXdEZXZpY2VJZEluZGV4XFx1MDAzZTo6aW5kZXgoaWQpKSlcXG4tICAgICAgICAgICAgfVxcbi0gICAgICAgIH1cXG4tICAgIH1cXG4tXFxuICAgICAvLy8gVGhlIFtgb2Y6OklkVGFibGVgXSBvZiB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXIuXFxuICAgICBmbiBvZl9pZF90YWJsZSgpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NvZjo6SWRUYWJsZVxcdTAwM2NTZWxmOjpJZEluZm9cXHUwMDNlXFx1MDAzZTtcXG4gXFxuLSAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYG9mOjpJZFRhYmxlYF0sIGlmIGFueS5cXG4tICAgIC8vL1xcbi0gICAgLy8vIElmIHRoaXMgcmV0dXJucyBgTm9uZWAsIGl0IG1lYW5zIHRoZXJlIGlzIG5vIG1hdGNoIHdpdGggYW4gZW50cnkgaW4gdGhlIFtgb2Y6OklkVGFibGVgXS5cXG4tICAgIGZuIG9mX2lkX2luZm8oZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cXHUwMDNlIHtcXG4tICAgICAgICBsZXQgdGFibGUgPSBTZWxmOjpvZl9pZF90YWJsZSgpPztcXG4tXFxuLSAgICAgICAgI1tjZmcobm90KGFueShDT05GSUdfT0YsIENPTkZJR19BQ1BJKSkpXVxcbi0gICAgICAgIHtcXG4tICAgICAgICAgICAgbGV0IF8gPSAoZGV2LCB0YWJsZSk7XFxuLSAgICAgICAgfVxcbi1cXG4tICAgICAgICAjW2NmZyhDT05GSUdfT0YpXVxcbi0gICAgICAgIHtcXG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxcbi0gICAgICAgICAgICAvLyAtIGB0YWJsZWAgaGFzIHN0YXRpYyBsaWZldGltZSwgaGVuY2UgaXQncyB2YWxpZCBmb3IgcmVhZCxcXG4tICAgICAgICAgICAgLy8gLSBgZGV2YCBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHdoaWxlIGl0J3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cXG4tICAgICAgICAgICAgbGV0IHJhd19pZCA9IHVuc2FmZSB7IGJpbmRpbmdzOjpvZl9tYXRjaF9kZXZpY2UodGFibGUuYXNfcHRyKCksIGRldi5hc19yYXcoKSkgfTtcXG4tXFxuLSAgICAgICAgICAgIGlmICFyYXdfaWQuaXNfbnVsbCgpIHtcXG4tICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogYERldmljZUlkYCBpcyBhIGAjW3JlcHIodHJhbnNwYXJlbnQpXWAgd3JhcHBlciBvZiBgc3RydWN0IG9mX2RldmljZV9pZGBcXG4tICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCdzIHNhZmUgdG8gdHJhbnNtdXRlLlxcbi0gICAgICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNipyYXdfaWQuY2FzdDo6XFx1MDAzY29mOjpEZXZpY2VJZFxcdTAwM2UoKSB9O1xcbi1cXG4tICAgICAgICAgICAgICAgIHJldHVybiBTb21lKHRhYmxlLmluZm8oXFxuLSAgICAgICAgICAgICAgICAgICAgXFx1MDAzY29mOjpEZXZpY2VJZCBhcyBjcmF0ZTo6ZGV2aWNlX2lkOjpSYXdEZXZpY2VJZEluZGV4XFx1MDAzZTo6aW5kZXgoaWQpLFxcbi0gICAgICAgICAgICAgICAgKSk7XFxuLSAgICAgICAgICAgIH1cXG4tICAgICAgICB9XFxuLVxcbi0gICAgICAgICNbY2ZnKENPTkZJR19BQ1BJKV1cXG4tICAgICAgICB7XFxuLSAgICAgICAgICAgIHVzZSBjb3JlOjpwdHI7XFxuLSAgICAgICAgICAgIHVzZSBkZXZpY2U6OnByb3BlcnR5OjpGd05vZGU7XFxuLVxcbi0gICAgICAgICAgICBsZXQgbXV0IHJhd19pZCA9IHB0cjo6bnVsbCgpO1xcbi1cXG4tICAgICAgICAgICAgbGV0IGZ3bm9kZSA9IGRldi5md25vZGUoKS5tYXBfb3IocHRyOjpudWxsX211dCgpLCBGd05vZGU6OmFzX3Jhdyk7XFxuLVxcbi0gICAgICAgICAgICAvLyBTQUZFVFk6IGBmd25vZGVgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkIGBmd25vZGVfaGFuZGxlYC4gQSBudWxsIHBvaW50ZXIgd2lsbCBiZVxcbi0gICAgICAgICAgICAvLyBwYXNzZWQgdGhyb3VnaCB0aGUgZnVuY3Rpb24uXFxuLSAgICAgICAgICAgIGxldCBhZGV2ID0gdW5zYWZlIHsgYmluZGluZ3M6OnRvX2FjcGlfZGV2aWNlX25vZGUoZndub2RlKSB9O1xcbi1cXG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxcbi0gICAgICAgICAgICAvLyAtIGBhZGV2YCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYGFjcGlfZGV2aWNlYCBvciBpcyBudWxsLiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlXFxuLSAgICAgICAgICAgIC8vICAgdmFsaWQgYXMgbG9uZyBhcyBgZGV2YCBpcyBhbGl2ZS5cXG4tICAgICAgICAgICAgLy8gLSBgdGFibGVgIGhhcyBzdGF0aWMgbGlmZXRpbWUsIGhlbmNlIGl0J3MgdmFsaWQgZm9yIHJlYWQuXFxuLSAgICAgICAgICAgIGlmIHVuc2FmZSB7IGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGFkZXYsIHRhYmxlLmFzX3B0cigpLCBcXHUwMDI2cmF3IG11dCByYXdfaWQpIH0ge1xcbi0gICAgICAgICAgICAgICAgLy8gU0FGRVRZOlxcbi0gICAgICAgICAgICAgICAgLy8gLSB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVyZWZvcmUgYHJhd19pZGAgaGFzIGJlZW4gc2V0IHRvIGEgcG9pbnRlciB0byBhXFxuLSAgICAgICAgICAgICAgICAvLyAgIHZhbGlkIGBvZl9kZXZpY2VfaWRgLlxcbi0gICAgICAgICAgICAgICAgLy8gLSBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudCldYCB3cmFwcGVyIG9mIGBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkYFxcbi0gICAgICAgICAgICAgICAgLy8gICBhbmQgZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQncyBzYWZlIHRvIHRyYW5zbXV0ZS5cXG4tICAgICAgICAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7IFxcdTAwMjYqcmF3X2lkLmNhc3Q6OlxcdTAwM2NvZjo6RGV2aWNlSWRcXHUwMDNlKCkgfTtcXG4tXFxuLSAgICAgICAgICAgICAgICByZXR1cm4gU29tZSh0YWJsZS5pbmZvKFxcbi0gICAgICAgICAgICAgICAgICAgIFxcdTAwM2NvZjo6RGV2aWNlSWQgYXMgY3JhdGU6OmRldmljZV9pZDo6UmF3RGV2aWNlSWRJbmRleFxcdTAwM2U6OmluZGV4KGlkKSxcXG4tICAgICAgICAgICAgICAgICkpO1xcbi0gICAgICAgICAgICB9XFxuLSAgICAgICAgfVxcbi1cXG4tICAgICAgICBOb25lXFxuLSAgICB9XFxuLVxcbiAgICAgLy8vIFJldHVybnMgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBmcm9tIHRoZSBtYXRjaGluZyBlbnRyeSBvZiBhbnkgb2YgdGhlIElEIHRhYmxlcywgaWYgYW55LlxcbiAgICAgLy8vXFxuICAgICAvLy8gSWYgdGhpcyByZXR1cm5zIGBOb25lYCwgaXQgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBtYXRjaCBpbiBhbnkgb2YgdGhlIElEIHRhYmxlcyBkaXJlY3RseVxcbiAgICAgLy8vIGFzc29jaWF0ZWQgd2l0aCBhIFtgZGV2aWNlOjpEZXZpY2VgXS5cXG4tICAgIGZuIGlkX2luZm8oZGV2OiBcXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cXHUwMDNlIHtcXG4tICAgICAgICBsZXQgaWQgPSBTZWxmOjphY3BpX2lkX2luZm8oZGV2KTtcXG4tICAgICAgICBpZiBpZC5pc19zb21lKCkge1xcbi0gICAgICAgICAgICByZXR1cm4gaWQ7XFxuLSAgICAgICAgfVxcbi1cXG4tICAgICAgICBsZXQgaWQgPSBTZWxmOjpvZl9pZF9pbmZvKGRldik7XFxuLSAgICAgICAgaWYgaWQuaXNfc29tZSgpIHtcXG4tICAgICAgICAgICAgcmV0dXJuIGlkO1xcbi0gICAgICAgIH1cXG4tXFxuLSAgICAgICAgTm9uZVxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUgYGRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHVuc2FmZSBmbiBpZF9pbmZvKGRldjogXFx1MDAyNmRldmljZTo6RGV2aWNlKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjXFx1MDAyNidzdGF0aWMgU2VsZjo6SWRJbmZvXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBgZGV2YCBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHdoaWxlIGl0J3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cXG4rICAgICAgICBsZXQgZGF0YSA9IHVuc2FmZSB7IGJpbmRpbmdzOjpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2LmFzX3JhdygpKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFBlciBzYWZldHkgcmVxdWlyZW1lbnQsIGBkYXRhYCBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLlxcbisgICAgICAgIHVuc2FmZSB7IGRhdGEuY2FzdDo6XFx1MDAzY1NlbGY6OklkSW5mb1xcdTAwM2UoKS5hc19yZWYoKSB9XFxuICAgICB9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzXFxuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjJkMjE5MTE2NGUyNTJjIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2kyYy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2kyYy5yc1xcbkBAIC02NSwxMCArNjUsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xcbiAvLyBTQUZFVFk6IGBEUklWRVJfREFUQV9PRkZTRVRgIGlzIHRoZSBvZmZzZXQgdG8gdGhlIGBkcml2ZXJfZGF0YWAgZmllbGQuXFxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcXG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OmkyY19kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTtcXG4tXFxuLSAgICBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfZGF0YVxcbi0gICAgfVxcbiB9XFxuIFxcbiAvLy8gSWRUYWJsZSB0eXBlIGZvciBJMkNcXG5AQCAtNzcsMTQgKzczLDggQEAgZm4gaW5kZXgoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIHVzaXplIHtcXG4gLy8vIENyZWF0ZSBhIEkyQyBgSWRUYWJsZWAgd2l0aCBpdHMgYWxpYXMgZm9yIG1vZHBvc3QuXFxuICNbbWFjcm9fZXhwb3J0XVxcbiBtYWNyb19ydWxlcyEgaTJjX2RldmljZV90YWJsZSB7XFxuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XFx1MDAzZSB7XFxuLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XFx1MDAzY1xcbi0gICAgICAgICAgICAkY3JhdGU6OmkyYzo6RGV2aWNlSWQsXFxuLSAgICAgICAgICAgICRpZF9pbmZvX3R5cGUsXFxuLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSxcXG4tICAgICAgICBcXHUwMDNlID0gJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXk6Om5ldygkdGFibGVfZGF0YSk7XFxuLVxcbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxcImkyY1xcXCIsICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xcbisgICAgKCQoJHR0OnR0KSopID1cXHUwMDNlIHtcXG4rICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxcXCJpMmNcXFwiLCAkY3JhdGU6OmkyYzo6RGV2aWNlSWQsICQoJHR0KSopO1xcbiAgICAgfTtcXG4gfVxcbiBcXG5AQCAtMTU5LDggKzE0OSwxMCBAQCBleHRlcm4gXFxcIkNcXFwiIGZuIHByb2JlX2NhbGxiYWNrKGlkZXY6ICptdXQgYmluZGluZ3M6OmkyY19jbGllbnQpIC1cXHUwMDNlIGtlcm5lbDo6ZmZpOjpjX1xcbiAgICAgICAgIC8vIElOVkFSSUFOVDogYGlkZXZgIGlzIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYHByb2JlX2NhbGxiYWNrKClgLlxcbiAgICAgICAgIGxldCBpZGV2ID0gdW5zYWZlIHsgXFx1MDAyNippZGV2LmNhc3Q6OlxcdTAwM2NJMmNDbGllbnRcXHUwMDNjZGV2aWNlOjpDb3JlSW50ZXJuYWxcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZVxcdTAwM2UoKSB9O1xcbiBcXG4tICAgICAgICBsZXQgaW5mbyA9XFxuLSAgICAgICAgICAgIFNlbGY6OmkyY19pZF9pbmZvKGlkZXYpLm9yX2Vsc2UofHwgXFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXFx1MDAzZTo6aWRfaW5mbyhpZGV2LmFzX3JlZigpKSk7XFxuKyAgICAgICAgbGV0IGluZm8gPSBTZWxmOjppMmNfaWRfaW5mbyhpZGV2KS5vcl9lbHNlKHx8IHtcXG4rICAgICAgICAgICAgLy8gU0FGRVRZOiBgaWRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXFxuKyAgICAgICAgICAgIHVuc2FmZSB7IFxcdTAwM2NTZWxmIGFzIGRyaXZlcjo6QWRhcHRlclxcdTAwM2U6OmlkX2luZm8oaWRldi5hc19yZWYoKSkgfVxcbisgICAgICAgIH0pO1xcbiBcXG4gICAgICAgICBmcm9tX3Jlc3VsdCh8fCB7XFxuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUoaWRldiwgaW5mbyk7XFxuQEAgLTIxOCw3ICsyMTAsOCBAQCBmbiBpMmNfaWRfaW5mbyhkZXY6IFxcdTAwMjZJMmNDbGllbnQpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NcXHUwMDI2J3N0YXRpYyBcXHUwMDNjU2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXJcXHUwMDNlOjpJZFxcbiAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXFxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNipyYXdfaWQuY2FzdDo6XFx1MDAzY0RldmljZUlkXFx1MDAzZSgpIH07XFxuIFxcbi0gICAgICAgIFNvbWUodGFibGUuaW5mbyhcXHUwMDNjRGV2aWNlSWQgYXMgUmF3RGV2aWNlSWRJbmRleFxcdTAwM2U6OmluZGV4KGlkKSkpXFxuKyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYHRhYmxlYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XFx1MDAzY18sIFNlbGY6OklkSW5mb1xcdTAwM2VgLlxcbisgICAgICAgIFNvbWUodW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWQ6OlxcdTAwM2NUOjpJZEluZm9cXHUwMDNlKCkgfSlcXG4gICAgIH1cXG4gfVxcbiBcXG5AQCAtMjY3LDcgKzI2MCw2IEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfaTJjX2RyaXZlciB7XFxuIC8vL1xcbiAvLy8ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXFxuIC8vLyAgICAgQUNQSV9UQUJMRSxcXG4tLy8vICAgICBNT0RVTEVfQUNQSV9UQUJMRSxcXG4gLy8vICAgICBcXHUwMDNjTXlEcml2ZXIgYXMgaTJjOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuIC8vLyAgICAgW1xcbiAvLy8gICAgICAgICAoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXFxcIkxOVVhCRUVGXFxcIiksICgpKVxcbkBAIC0yNzYsNyArMjY4LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9pMmNfZHJpdmVyIHtcXG4gLy8vXFxuIC8vLyBrZXJuZWw6OmkyY19kZXZpY2VfdGFibGUhKFxcbiAvLy8gICAgIEkyQ19UQUJMRSxcXG4tLy8vICAgICBNT0RVTEVfSTJDX1RBQkxFLFxcbiAvLy8gICAgIFxcdTAwM2NNeURyaXZlciBhcyBpMmM6OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gLy8vICAgICBbXFxuIC8vLyAgICAgICAgICAoaTJjOjpEZXZpY2VJZDo6bmV3KGNcXFwicnVzdF9kcml2ZXJfaTJjXFxcIiksICgpKVxcbkBAIC0yODUsNyArMjc2LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9pMmNfZHJpdmVyIHtcXG4gLy8vXFxuIC8vLyBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXFxuIC8vLyAgICAgT0ZfVEFCTEUsXFxuLS8vLyAgICAgTU9EVUxFX09GX1RBQkxFLFxcbiAvLy8gICAgIFxcdTAwM2NNeURyaXZlciBhcyBpMmM6OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gLy8vICAgICBbXFxuIC8vLyAgICAgICAgIChvZjo6RGV2aWNlSWQ6Om5ldyhjXFxcInRlc3QsZGV2aWNlXFxcIiksICgpKVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbmluZGV4IDNjYTk5ZGI1Y2NjZjIyLi4xZTg2YjkwMWMzOTFiZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbkBAIC04MDAsNjIgKzgwMCw2IEBAIGNvbnN0IGZuIGFzX2ludChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdTMyIHtcXG4gLy8vIH1cXG4gLy8vICMgfVxcbiAvLy8gYGBgXFxuLS8vL1xcbi0vLy8gVGhpcyBleHBhbmRzIHRvIHRoZSBmb2xsb3dpbmcgY29kZTpcXG4tLy8vXFxuLS8vLyBgYGBpZ25vcmVcXG4tLy8vIHVzZSBrZXJuZWw6Om5ldDo6cGh5Ojp7c2VsZiwgRGV2aWNlSWR9O1xcbi0vLy8gdXNlIGtlcm5lbDo6cHJlbHVkZTo6KjtcXG4tLy8vXFxuLS8vLyBzdHJ1Y3QgTW9kdWxlIHtcXG4tLy8vICAgICBfcmVnOiA6Omtlcm5lbDo6bmV0OjpwaHk6OlJlZ2lzdHJhdGlvbixcXG4tLy8vIH1cXG4tLy8vXFxuLS8vLyBtb2R1bGUhIHtcXG4tLy8vICAgICB0eXBlOiBNb2R1bGUsXFxuLS8vLyAgICAgbmFtZTogXFxcInJ1c3Rfc2FtcGxlX3BoeVxcXCIsXFxuLS8vLyAgICAgYXV0aG9yczogW1xcXCJSdXN0IGZvciBMaW51eCBDb250cmlidXRvcnNcXFwiXSxcXG4tLy8vICAgICBkZXNjcmlwdGlvbjogXFxcIlJ1c3Qgc2FtcGxlIFBIWXMgZHJpdmVyXFxcIixcXG4tLy8vICAgICBsaWNlbnNlOiBcXFwiR1BMXFxcIixcXG4tLy8vIH1cXG4tLy8vXFxuLS8vLyBzdHJ1Y3QgUGh5U2FtcGxlO1xcbi0vLy9cXG4tLy8vICNbdnRhYmxlXVxcbi0vLy8gaW1wbCBwaHk6OkRyaXZlciBmb3IgUGh5U2FtcGxlIHtcXG4tLy8vICAgICBjb25zdCBOQU1FOiBcXHUwMDI2J3N0YXRpYyBDU3RyID0gY1xcXCJQaHlTYW1wbGVcXFwiO1xcbi0vLy8gICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IHBoeTo6RGV2aWNlSWQgPSBwaHk6OkRldmljZUlkOjpuZXdfd2l0aF9leGFjdF9tYXNrKDB4MDAwMDAwMDEpO1xcbi0vLy8gfVxcbi0vLy9cXG4tLy8vIGNvbnN0IF86ICgpID0ge1xcbi0vLy8gICAgIHN0YXRpYyBtdXQgRFJJVkVSUzogWzo6a2VybmVsOjpuZXQ6OnBoeTo6RHJpdmVyVlRhYmxlOyAxXSA9XFxuLS8vLyAgICAgICAgIFs6Omtlcm5lbDo6bmV0OjpwaHk6OmNyZWF0ZV9waHlfZHJpdmVyOjpcXHUwMDNjUGh5U2FtcGxlXFx1MDAzZSgpXTtcXG4tLy8vXFxuLS8vLyAgICAgaW1wbCA6Omtlcm5lbDo6TW9kdWxlIGZvciBNb2R1bGUge1xcbi0vLy8gICAgICAgICBmbiBpbml0KG1vZHVsZTogXFx1MDAyNidzdGF0aWMgOjprZXJuZWw6OlRoaXNNb2R1bGUpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuLS8vLyAgICAgICAgICAgICBsZXQgZHJpdmVycyA9IHVuc2FmZSB7IFxcdTAwMjZtdXQgRFJJVkVSUyB9O1xcbi0vLy8gICAgICAgICAgICAgbGV0IG11dCByZWcgPSA6Omtlcm5lbDo6bmV0OjpwaHk6OlJlZ2lzdHJhdGlvbjo6cmVnaXN0ZXIoXFxuLS8vLyAgICAgICAgICAgICAgICAgbW9kdWxlLFxcbi0vLy8gICAgICAgICAgICAgICAgIDo6Y29yZTo6cGluOjpQaW46OnN0YXRpY19tdXQoZHJpdmVycyksXFxuLS8vLyAgICAgICAgICAgICApPztcXG4tLy8vICAgICAgICAgICAgIE9rKE1vZHVsZSB7IF9yZWc6IHJlZyB9KVxcbi0vLy8gICAgICAgICB9XFxuLS8vLyAgICAgfVxcbi0vLy8gfTtcXG4tLy8vXFxuLS8vLyBjb25zdCBOOiB1c2l6ZSA9IDE7XFxuLS8vL1xcbi0vLy8gY29uc3QgVEFCTEU6IDo6a2VybmVsOjpkZXZpY2VfaWQ6OklkQXJyYXlcXHUwMDNjOjprZXJuZWw6Om5ldDo6cGh5OjpEZXZpY2VJZCwgKCksIE5cXHUwMDNlID1cXG4tLy8vICAgICA6Omtlcm5lbDo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleChbXFxuLS8vLyAgICAgICAgIDo6a2VybmVsOjpuZXQ6OnBoeTo6RGV2aWNlSWQoXFxuLS8vLyAgICAgICAgICAgICA6Omtlcm5lbDo6YmluZGluZ3M6Om1kaW9fZGV2aWNlX2lkIHtcXG4tLy8vICAgICAgICAgICAgICAgICBwaHlfaWQ6IDB4MDAwMDAwMDEsXFxuLS8vLyAgICAgICAgICAgICAgICAgcGh5X2lkX21hc2s6IDB4ZmZmZmZmZmYsXFxuLS8vLyAgICAgICAgICAgICB9KSxcXG4tLy8vICAgICBdKTtcXG4tLy8vXFxuLS8vLyA6Omtlcm5lbDo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxcIm1kaW9cXFwiLCBwaHlkZXYsIFRBQkxFKTtcXG4tLy8vIGBgYFxcbiAjW21hY3JvX2V4cG9ydF1cXG4gbWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyIHtcXG4gICAgIChAcmVwbGFjZV9leHByICRfdDp0dCAkc3ViOmV4cHIpID1cXHUwMDNlIHskc3VifTtcXG5AQCAtODY1LDEyICs4MDksMTAgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyIHtcXG4gICAgIH07XFxuIFxcbiAgICAgKEBkZXZpY2VfdGFibGUgWyQoJGRldjpleHByKSwrXSkgPVxcdTAwM2Uge1xcbi0gICAgICAgIGNvbnN0IE46IHVzaXplID0gJGNyYXRlOjptb2R1bGVfcGh5X2RyaXZlciEoQGNvdW50X2RldmljZXMgJCgkZGV2KSwrKTtcXG4tXFxuLSAgICAgICAgY29uc3QgVEFCTEU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XFx1MDAzYyRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLCAoKSwgTlxcdTAwM2UgPVxcbi0gICAgICAgICAgICAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXgoWyAkKCgkZGV2LCgpKSksKywgXSk7XFxuLVxcbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxcIm1kaW9cXFwiLCBwaHlkZXYsIFRBQkxFKTtcXG4rICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxcbisgICAgICAgICAgICBcXFwibWRpb1xcXCIsICRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLFxcbisgICAgICAgICAgICBUQUJMRSwgQG5vbmUsIFskKCRkZXYpLCtdXFxuKyAgICAgICAgKTtcXG4gICAgIH07XFxuIFxcbiAgICAgKGRyaXZlcnM6IFskKCRkcml2ZXI6aWRlbnQpLCsgJCgsKT9dLCBkZXZpY2VfdGFibGU6IFskKCRkZXY6ZXhwciksKyAkKCwpP10sICQoJGY6dHQpKikgPVxcdTAwM2Uge1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vZi5ycyBiL3J1c3Qva2VybmVsL29mLnJzXFxuaW5kZXggNThiMjBjMzY3Zjk5M2YuLmQwMzE4ZjYyYWZkN2M4IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL29mLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvb2YucnNcXG5AQCAtMjUsMTAgKzI1LDYgQEAgdW5zYWZlIGltcGwgUmF3RGV2aWNlSWQgZm9yIERldmljZUlkIHtcXG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZGF0YWAgZmllbGQuXFxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcXG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6Om9mX2RldmljZV9pZCwgZGF0YSk7XFxuLVxcbi0gICAgZm4gaW5kZXgoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIHVzaXplIHtcXG4tICAgICAgICBzZWxmLjAuZGF0YSBhcyB1c2l6ZVxcbi0gICAgfVxcbiB9XFxuIFxcbiBpbXBsIERldmljZUlkIHtcXG5AQCAtNTMsMTMgKzQ5LDcgQEAgcHViIGNvbnN0IGZuIG5ldyhjb21wYXRpYmxlOiBcXHUwMDI2J3N0YXRpYyBDU3RyKSAtXFx1MDAzZSBTZWxmIHtcXG4gLy8vIENyZWF0ZSBhbiBPRiBgSWRUYWJsZWAgd2l0aCBhbiBcXFwiYWxpYXNcXFwiIGZvciBtb2Rwb3N0LlxcbiAjW21hY3JvX2V4cG9ydF1cXG4gbWFjcm9fcnVsZXMhIG9mX2RldmljZV90YWJsZSB7XFxuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XFx1MDAzZSB7XFxuLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XFx1MDAzY1xcbi0gICAgICAgICAgICAkY3JhdGU6Om9mOjpEZXZpY2VJZCxcXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcXG4tICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LFxcbi0gICAgICAgIFxcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcXG4tXFxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwib2ZcXFwiLCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcXG4rICAgICgkKCR0dDp0dCkqKSA9XFx1MDAzZSB7XFxuKyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwib2ZcXFwiLCAkY3JhdGU6Om9mOjpEZXZpY2VJZCwgJCgkdHQpKik7XFxuICAgICB9O1xcbiB9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5yc1xcbmluZGV4IDUwNzFjYWU2NTQzZmQyLi45MjVjZjI4MGRhZTJhOSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9wY2kucnNcXG5AQCAtMTEwLDcgKzExMCwxMSBAQCBleHRlcm4gXFxcIkNcXFwiIGZuIHByb2JlX2NhbGxiYWNrKFxcbiAgICAgICAgIC8vIFNBRkVUWTogYERldmljZUlkYCBpcyBhIGAjW3JlcHIodHJhbnNwYXJlbnQpXWAgd3JhcHBlciBvZiBgc3RydWN0IHBjaV9kZXZpY2VfaWRgIGFuZFxcbiAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXFxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNippZC5jYXN0OjpcXHUwMDNjRGV2aWNlSWRcXHUwMDNlKCkgfTtcXG4tICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7XFxuK1xcbisgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVxcdTAwM2NfLCBUOjpJZEluZm9cXHUwMDNlYCBvclxcbisgICAgICAgIC8vIGBwY2lfZGV2aWNlX2lkX2FueWAgd2hpY2ggaGFzIDAgYXMgZHJpdmVyX2RhdGEuIEl0IGNhbiBhbHNvIGNvbWUgZnJvbSBkeW5hbWljIElEcywgd2hpY2hcXG4rICAgICAgICAvLyB3aWxsIGVuc3VyZSB0aGF0IGBkcml2ZXJfZGF0YWAgZXhpc3RzIGluIGBUOjpJRF9UQUJMRWAuXFxuKyAgICAgICAgbGV0IGluZm8gPSB1bnNhZmUgeyBpZC5pbmZvX3VuY2hlY2tlZF9vcHQ6OlxcdTAwM2NUOjpJZEluZm9cXHUwMDNlKCkgfTtcXG4gXFxuICAgICAgICAgZnJvbV9yZXN1bHQofHwge1xcbiAgICAgICAgICAgICBsZXQgZGF0YSA9IFQ6OnByb2JlKHBkZXYsIGluZm8pO1xcbkBAIC0yMzMsMTAgKzIzNyw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XFxuIC8vIFNBRkVUWTogYERSSVZFUl9EQVRBX09GRlNFVGAgaXMgdGhlIG9mZnNldCB0byB0aGUgYGRyaXZlcl9kYXRhYCBmaWVsZC5cXG4gdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQge1xcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9IGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6cGNpX2RldmljZV9pZCwgZHJpdmVyX2RhdGEpO1xcbi1cXG4tICAgIGZuIGluZGV4KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSB1c2l6ZSB7XFxuLSAgICAgICAgc2VsZi4wLmRyaXZlcl9kYXRhXFxuLSAgICB9XFxuIH1cXG4gXFxuIC8vLyBgSWRUYWJsZWAgdHlwZSBmb3IgUENJLlxcbkBAIC0yNDUsMTQgKzI0NSw4IEBAIGZuIGluZGV4KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSB1c2l6ZSB7XFxuIC8vLyBDcmVhdGUgYSBQQ0kgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxcbiAjW21hY3JvX2V4cG9ydF1cXG4gbWFjcm9fcnVsZXMhIHBjaV9kZXZpY2VfdGFibGUge1xcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVxcdTAwM2Uge1xcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVxcdTAwM2NcXG4tICAgICAgICAgICAgJGNyYXRlOjpwY2k6OkRldmljZUlkLFxcbi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLFxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXFxuLSAgICAgICAgXFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpO1xcbi1cXG4tICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxcXCJwY2lcXFwiLCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcXG4rICAgICgkKCR0dDp0dCkqKSA9XFx1MDAzZSB7XFxuKyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwicGNpXFxcIiwgJGNyYXRlOjpwY2k6OkRldmljZUlkLCAkKCR0dCkqKTtcXG4gICAgIH07XFxuIH1cXG4gXFxuQEAgLTI2Nyw3ICsyNjEsNiBAQCBtYWNyb19ydWxlcyEgcGNpX2RldmljZV90YWJsZSB7XFxuIC8vL1xcbiAvLy8ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcXG4gLy8vICAgICBQQ0lfVEFCTEUsXFxuLS8vLyAgICAgTU9EVUxFX1BDSV9UQUJMRSxcXG4gLy8vICAgICBcXHUwMDNjTXlEcml2ZXIgYXMgcGNpOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuIC8vLyAgICAgW1xcbiAvLy8gICAgICAgICAoXFxuQEAgLTI4NCw3ICsyNzcsNyBAQCBtYWNyb19ydWxlcyEgcGNpX2RldmljZV90YWJsZSB7XFxuIC8vL1xcbiAvLy8gICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuIC8vLyAgICAgICAgIF9wZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tLy8vICAgICAgICAgX2lkX2luZm86IFxcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvLFxcbisvLy8gICAgICAgICBfaWRfaW5mbzogT3B0aW9uXFx1MDAzY1xcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvXFx1MDAzZSxcXG4gLy8vICAgICApIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmOjpEYXRhXFx1MDAzYydib3VuZFxcdTAwM2UsIEVycm9yXFx1MDAzZSArICdib3VuZCB7XFxuIC8vLyAgICAgICAgIEVycihFTk9ERVYpXFxuIC8vLyAgICAgfVxcbkBAIC0zMTMsNyArMzA2LDcgQEAgcHViIHRyYWl0IERyaXZlciB7XFxuICAgICAvLy8gYXR0ZW1wdCB0byBpbml0aWFsaXplIHRoZSBkZXZpY2UgaGVyZS5cXG4gICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuICAgICAgICAgZGV2OiBcXHUwMDI2J2JvdW5kIERldmljZVxcdTAwM2NkZXZpY2U6OkNvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tICAgICAgICBpZF9pbmZvOiBcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcXG4rICAgICAgICBpZF9pbmZvOiBPcHRpb25cXHUwMDNjXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cXHUwMDNlLFxcbiAgICAgKSAtXFx1MDAzZSBpbXBsIFBpbkluaXRcXHUwMDNjU2VsZjo6RGF0YVxcdTAwM2MnYm91bmRcXHUwMDNlLCBFcnJvclxcdTAwM2UgKyAnYm91bmQ7XFxuIFxcbiAgICAgLy8vIFBDSSBkcml2ZXIgdW5iaW5kLlxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuaW5kZXggOWIzNjJlMDQ5NWQzMjMuLmUxMmU4ODExM2NhNWQyIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcXG5AQCAtMTAwLDcgKzEwMCw4IEBAIGV4dGVybiBcXFwiQ1xcXCIgZm4gcHJvYmVfY2FsbGJhY2socGRldjogKm11dCBiaW5kaW5nczo6cGxhdGZvcm1fZGV2aWNlKSAtXFx1MDAzZSBrZXJuZWw6OmZmXFxuICAgICAgICAgLy9cXG4gICAgICAgICAvLyBJTlZBUklBTlQ6IGBwZGV2YCBpcyB2YWxpZCBmb3IgdGhlIGR1cmF0aW9uIG9mIGBwcm9iZV9jYWxsYmFjaygpYC5cXG4gICAgICAgICBsZXQgcGRldiA9IHVuc2FmZSB7IFxcdTAwMjYqcGRldi5jYXN0OjpcXHUwMDNjRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZUludGVybmFsXFx1MDAzYydfXFx1MDAzZVxcdTAwM2VcXHUwMDNlKCkgfTtcXG4tICAgICAgICBsZXQgaW5mbyA9IFxcdTAwM2NTZWxmIGFzIGRyaXZlcjo6QWRhcHRlclxcdTAwM2U6OmlkX2luZm8ocGRldi5hc19yZWYoKSk7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBgcGRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXFxuKyAgICAgICAgbGV0IGluZm8gPSB1bnNhZmUgeyBcXHUwMDNjU2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXJcXHUwMDNlOjppZF9pbmZvKHBkZXYuYXNfcmVmKCkpIH07XFxuIFxcbiAgICAgICAgIGZyb21fcmVzdWx0KHx8IHtcXG4gICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShwZGV2LCBpbmZvKTtcXG5AQCAtMTc2LDcgKzE3Nyw2IEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyIHtcXG4gLy8vXFxuIC8vLyBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXFxuIC8vLyAgICAgT0ZfVEFCTEUsXFxuLS8vLyAgICAgTU9EVUxFX09GX1RBQkxFLFxcbiAvLy8gICAgIFxcdTAwM2NNeURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAvLy8gICAgIFtcXG4gLy8vICAgICAgICAgKG9mOjpEZXZpY2VJZDo6bmV3KGNcXFwidGVzdCxkZXZpY2VcXFwiKSwgKCkpXFxuQEAgLTE4NSw3ICsxODUsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX3BsYXRmb3JtX2RyaXZlciB7XFxuIC8vL1xcbiAvLy8ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXFxuIC8vLyAgICAgQUNQSV9UQUJMRSxcXG4tLy8vICAgICBNT0RVTEVfQUNQSV9UQUJMRSxcXG4gLy8vICAgICBcXHUwMDNjTXlEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gLy8vICAgICBbXFxuIC8vLyAgICAgICAgIChhY3BpOjpEZXZpY2VJZDo6bmV3KGNcXFwiTE5VWEJFRUZcXFwiKSwgKCkpXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xcbmluZGV4IDdhZmYwYzgyZDBhZmMwLi5hZWM3ZGNlMDQ5NTUzMiAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcXG4rKysgYi9ydXN0L2tlcm5lbC91c2IucnNcXG5AQCAtODksNyArODksMTAgQEAgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhcXG4gICAgICAgICAgICAgLy8gZG9lcyBub3QgYWRkIGFkZGl0aW9uYWwgaW52YXJpYW50cywgc28gaXQncyBzYWZlIHRvIHRyYW5zbXV0ZS5cXG4gICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXFx1MDAyNippZC5jYXN0OjpcXHUwMDNjRGV2aWNlSWRcXHUwMDNlKCkgfTtcXG4gXFxuLSAgICAgICAgICAgIGxldCBpbmZvID0gVDo6SURfVEFCTEUuaW5mbyhpZC5pbmRleCgpKTtcXG4rICAgICAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYFQ6OklEX1RBQkxFYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XFx1MDAzY18sIFQ6OklkSW5mb1xcdTAwM2VgLiBJdFxcbisgICAgICAgICAgICAvLyBjYW4gYWxzbyBjb21lIGZyb20gZHluYW1pYyBJRHMsIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYGRyaXZlcl9kYXRhYCBleGlzdHMgaW5cXG4rICAgICAgICAgICAgLy8gYFQ6OklEX1RBQkxFYCBvciBpcyAwLlxcbisgICAgICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkX29wdDo6XFx1MDAzY1Q6OklkSW5mb1xcdTAwM2UoKSB9O1xcbiAgICAgICAgICAgICBsZXQgZGF0YSA9IFQ6OnByb2JlKGludGYsIGlkLCBpbmZvKTtcXG4gXFxuICAgICAgICAgICAgIGxldCBkZXY6IFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NkZXZpY2U6OkNvcmVJbnRlcm5hbFxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlID0gaW50Zi5hc19yZWYoKTtcXG5AQCAtMjQyLDEwICsyNDUsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xcbiAvLyBTQUZFVFk6IGBEUklWRVJfREFUQV9PRkZTRVRgIGlzIHRoZSBvZmZzZXQgdG8gdGhlIGBkcml2ZXJfaW5mb2AgZmllbGQuXFxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcXG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OnVzYl9kZXZpY2VfaWQsIGRyaXZlcl9pbmZvKTtcXG4tXFxuLSAgICBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfaW5mb1xcbi0gICAgfVxcbiB9XFxuIFxcbiAvLy8gW2BJZFRhYmxlYF0oa2VybmVsOjpkZXZpY2VfaWQ6OklkVGFibGUpIHR5cGUgZm9yIFVTQi5cXG5AQCAtMjU0LDE0ICsyNTMsOCBAQCBmbiBpbmRleChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdXNpemUge1xcbiAvLy8gQ3JlYXRlIGEgVVNCIGBJZFRhYmxlYCB3aXRoIGl0cyBhbGlhcyBmb3IgbW9kcG9zdC5cXG4gI1ttYWNyb19leHBvcnRdXFxuIG1hY3JvX3J1bGVzISB1c2JfZGV2aWNlX3RhYmxlIHtcXG4tICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID1cXHUwMDNlIHtcXG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcXHUwMDNjXFxuLSAgICAgICAgICAgICRjcmF0ZTo6dXNiOjpEZXZpY2VJZCxcXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcXG4tICAgICAgICAgICAgeyAkdGFibGVfZGF0YS5sZW4oKSB9LFxcbi0gICAgICAgIFxcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcXG4tXFxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXFwidXNiXFxcIiwgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7XFxuKyAgICAoJCgkdHQ6dHQpKikgPVxcdTAwM2Uge1xcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXFxcInVzYlxcXCIsICRjcmF0ZTo6dXNiOjpEZXZpY2VJZCwgJCgkdHQpKik7XFxuICAgICB9O1xcbiB9XFxuIFxcbkBAIC0yNzcsNyArMjcwLDYgQEAgbWFjcm9fcnVsZXMhIHVzYl9kZXZpY2VfdGFibGUge1xcbiAvLy9cXG4gLy8vIGtlcm5lbDo6dXNiX2RldmljZV90YWJsZSEoXFxuIC8vLyAgICAgVVNCX1RBQkxFLFxcbi0vLy8gICAgIE1PRFVMRV9VU0JfVEFCTEUsXFxuIC8vLyAgICAgXFx1MDAzY015RHJpdmVyIGFzIHVzYjo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAvLy8gICAgIFtcXG4gLy8vICAgICAgICAgKHVzYjo6RGV2aWNlSWQ6OmZyb21faWQoMHgxMjM0LCAweDU2NzgpLCAoKSksXFxuQEAgLTI5Myw3ICsyODUsNyBAQCBtYWNyb19ydWxlcyEgdXNiX2RldmljZV90YWJsZSB7XFxuIC8vLyAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gLy8vICAgICAgICAgX2ludGVyZmFjZTogXFx1MDAyNidib3VuZCB1c2I6OkludGVyZmFjZVxcdTAwM2NDb3JlXFx1MDAzYydfXFx1MDAzZVxcdTAwM2UsXFxuIC8vLyAgICAgICAgIF9pZDogXFx1MDAyNnVzYjo6RGV2aWNlSWQsXFxuLS8vLyAgICAgICAgIF9pbmZvOiBcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcXG4rLy8vICAgICAgICAgX2luZm86IE9wdGlvblxcdTAwM2NcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mb1xcdTAwM2UsXFxuIC8vLyAgICAgKSAtXFx1MDAzZSBpbXBsIFBpbkluaXRcXHUwMDNjU2VsZjo6RGF0YVxcdTAwM2MnYm91bmRcXHUwMDNlLCBFcnJvclxcdTAwM2UgKyAnYm91bmQge1xcbiAvLy8gICAgICAgICBFcnIoRU5PREVWKVxcbiAvLy8gICAgIH1cXG5AQCAtMzIyLDcgKzMxNCw3IEBAIHB1YiB0cmFpdCBEcml2ZXIge1xcbiAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICBpbnRlcmZhY2U6IFxcdTAwMjYnYm91bmQgSW50ZXJmYWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlLFxcbiAgICAgICAgIGlkOiBcXHUwMDI2RGV2aWNlSWQsXFxuLSAgICAgICAgaWRfaW5mbzogXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm8sXFxuKyAgICAgICAgaWRfaW5mbzogT3B0aW9uXFx1MDAzY1xcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvXFx1MDAzZSxcXG4gICAgICkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGY6OkRhdGFcXHUwMDNjJ2JvdW5kXFx1MDAzZSwgRXJyb3JcXHUwMDNlICsgJ2JvdW5kO1xcbiBcXG4gICAgIC8vLyBVU0IgZHJpdmVyIGRpc2Nvbm5lY3QuXFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzXFxuaW5kZXggMWY1OWUwOGFhYTRiMGQuLjE4MWZkOThhZTViNjYzIDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnNcXG4rKysgYi9zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzXFxuQEAgLTExMCw3ICsxMTAsNiBAQCBmbiBmcm9tX3N0cihzOiBcXHUwMDI2c3RyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbiBcXG4ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXFxuICAgICBBQ1BJX1RBQkxFLFxcbi0gICAgTU9EVUxFX0FDUElfVEFCTEUsXFxuICAgICBcXHUwMDNjUnVzdERlYnVnRnMgYXMgcGxhdGZvcm06OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXFxcIkxOVVhCRUVGXFxcIiksICgpKV1cXG4gKTtcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzXFxuaW5kZXggNTA0NmI0NjI4ZDBlMjkuLjgwYzMwOWNlMDdlOTNlIDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5yc1xcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5yc1xcbkBAIC01MSw3ICs1MSw2IEBAIHVuc2FmZSBpbXBsIGtlcm5lbDo6dHJhbnNtdXRlOjpGcm9tQnl0ZXMgZm9yIE15U3RydWN0IHt9XFxuIFxcbiBrZXJuZWw6OnBjaV9kZXZpY2VfdGFibGUhKFxcbiAgICAgUENJX1RBQkxFLFxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcXG4gICAgIFxcdTAwM2NEbWFTYW1wbGVEcml2ZXIgYXMgcGNpOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuICAgICBbKHBjaTo6RGV2aWNlSWQ6OmZyb21faWQocGNpOjpWZW5kb3I6OlJFREhBVCwgMHg1KSwgKCkpXVxcbiApO1xcbkBAIC02Myw3ICs2Miw3IEBAIGltcGwgcGNpOjpEcml2ZXIgZm9yIERtYVNhbXBsZURyaXZlciB7XFxuIFxcbiAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tICAgICAgICBfaW5mbzogXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm8sXFxuKyAgICAgICAgX2luZm86IE9wdGlvblxcdTAwM2NcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mb1xcdTAwM2UsXFxuICAgICApIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmLCBFcnJvclxcdTAwM2UgKyAnYm91bmQge1xcbiAgICAgICAgIHBpbl9pbml0OjpwaW5faW5pdF9zY29wZShtb3ZlIHx8IHtcXG4gICAgICAgICAgICAgZGV2X2luZm8hKHBkZXYsIFxcXCJQcm9iZSBETUEgdGVzdCBkcml2ZXIuXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNcXG5pbmRleCAyYzEzNTEwNDBlNDVlNS4uNzA0NTY3YTA3MmJhYzMgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc1xcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNcXG5AQCAtMjQsNyArMjQsNiBAQFxcbiBcXG4ga2VybmVsOjphdXhpbGlhcnlfZGV2aWNlX3RhYmxlIShcXG4gICAgIEFVWF9UQUJMRSxcXG4tICAgIE1PRFVMRV9BVVhfVEFCTEUsXFxuICAgICBcXHUwMDNjQXV4aWxpYXJ5RHJpdmVyIGFzIGF1eGlsaWFyeTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyhhdXhpbGlhcnk6OkRldmljZUlkOjpuZXcoTU9EVUxFX05BTUUsIEFVWElMSUFSWV9OQU1FKSwgKCkpXVxcbiApO1xcbkBAIC02Niw3ICs2NSw2IEBAIHN0cnVjdCBQYXJlbnREYXRhXFx1MDAzYydib3VuZFxcdTAwM2Uge1xcbiBcXG4ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcXG4gICAgIFBDSV9UQUJMRSxcXG4tICAgIE1PRFVMRV9QQ0lfVEFCTEUsXFxuICAgICBcXHUwMDNjUGFyZW50RHJpdmVyIGFzIHBjaTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyhwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksICgpKV1cXG4gKTtcXG5AQCAtNzksNyArNzcsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBQYXJlbnREcml2ZXIge1xcbiBcXG4gICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuICAgICAgICAgcGRldjogXFx1MDAyNidib3VuZCBwY2k6OkRldmljZVxcdTAwM2NDb3JlXFx1MDAzYydfXFx1MDAzZVxcdTAwM2UsXFxuLSAgICAgICAgX2luZm86IFxcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvLFxcbisgICAgICAgIF9pbmZvOiBPcHRpb25cXHUwMDNjXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cXHUwMDNlLFxcbiAgICAgKSAtXFx1MDAzZSBpbXBsIFBpbkluaXRcXHUwMDNjU2VsZjo6RGF0YVxcdTAwM2MnYm91bmRcXHUwMDNlLCBFcnJvclxcdTAwM2UgKyAnYm91bmQge1xcbiAgICAgICAgIE9rKFBhcmVudERhdGEge1xcbiAgICAgICAgICAgICAvLyBTQUZFVFk6IGBQYXJlbnREYXRhYCBpcyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhLCB3aGljaCBpcyBkcm9wcGVkIHdoZW4gdGhlXFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzXFxuaW5kZXggZWFkODI2M2E3ZDQ4OWEuLmEwZGYwYzYwOTdjNGY1IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcXG4rKysgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzXFxuQEAgLTE0LDIxICsxNCwxOCBAQFxcbiBcXG4ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEge1xcbiAgICAgQUNQSV9UQUJMRSxcXG4tICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxcbiAgICAgXFx1MDAzY1NhbXBsZURyaXZlciBhcyBpMmM6OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXFxcIkxOVVhCRUVGXFxcIiksIDApXVxcbiB9XFxuIFxcbiBrZXJuZWw6OmkyY19kZXZpY2VfdGFibGUhIHtcXG4gICAgIEkyQ19UQUJMRSxcXG4tICAgIE1PRFVMRV9JMkNfVEFCTEUsXFxuICAgICBcXHUwMDNjU2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyhpMmM6OkRldmljZUlkOjpuZXcoY1xcXCJydXN0X2RyaXZlcl9pMmNcXFwiKSwgMCldXFxuIH1cXG4gXFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlISB7XFxuICAgICBPRl9UQUJMRSxcXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcXG4gICAgIFxcdTAwM2NTYW1wbGVEcml2ZXIgYXMgaTJjOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcXFwidGVzdCxydXN0X2RyaXZlcl9pMmNcXFwiKSwgMCldXFxuIH1cXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnNcXG5pbmRleCAxYWE4MTk3ZDg2OThjMC4uNjUyODE5ZGZmMDgyNGIgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yc1xcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnNcXG5AQCAtNzQsMTIgKzc0LDEwIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXJEYXRhXFx1MDAzYydib3VuZFxcdTAwM2Uge1xcbiBcXG4ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcXG4gICAgIFBDSV9UQUJMRSxcXG4tICAgIE1PRFVMRV9QQ0lfVEFCTEUsXFxuICAgICBcXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbi0gICAgWyhcXG4tICAgICAgICBwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksXFxuLSAgICAgICAgVGVzdEluZGV4OjpOT19FVkVOVEZEXFxuLSAgICApXVxcbisgICAge1xcbisgICAgICAgIHBjaTo6RGV2aWNlSWQ6OmZyb21faWQocGNpOjpWZW5kb3I6OlJFREhBVCwgMHg1KSA9XFx1MDAzZSBUZXN0SW5kZXg6Ok5PX0VWRU5URkQsXFxuKyAgICB9XFxuICk7XFxuIFxcbiBpbXBsIFNhbXBsZURyaXZlckRhdGFcXHUwMDNjJ19cXHUwMDNlIHtcXG5AQCAtMTQ0LDcgKzE0Miw3IEBAIGltcGwgcGNpOjpEcml2ZXIgZm9yIFNhbXBsZURyaXZlciB7XFxuIFxcbiAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tICAgICAgICBpbmZvOiBcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcXG4rICAgICAgICBpbmZvOiBPcHRpb25cXHUwMDNjXFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cXHUwMDNlLFxcbiAgICAgKSAtXFx1MDAzZSBpbXBsIFBpbkluaXRcXHUwMDNjU2VsZjo6RGF0YVxcdTAwM2MnYm91bmRcXHUwMDNlLCBFcnJvclxcdTAwM2UgKyAnYm91bmQge1xcbiAgICAgICAgIGxldCB2ZW5kb3IgPSBwZGV2LnZlbmRvcl9pZCgpO1xcbiAgICAgICAgIGRldl9kYmchKFxcbkBAIC0xNTMsNiArMTUxLDcgQEAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICAgICAgdmVuZG9yLFxcbiAgICAgICAgICAgICBwZGV2LmRldmljZV9pZCgpXFxuICAgICAgICAgKTtcXG4rICAgICAgICBsZXQgaW5mbyA9IGluZm8ub2tfb3IoRU5PREVWKT87XFxuIFxcbiAgICAgICAgIHBkZXYuZW5hYmxlX2RldmljZV9tZW0oKT87XFxuICAgICAgICAgcGRldi5zZXRfbWFzdGVyKCk7XFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yc1xcbmluZGV4IGVjMGQ2Y2FjNGY1NzBiLi43MTAxNDViMzYwNWEyMSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnNcXG4rKysgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnNcXG5AQCAtODcsMTQgKzg3LDEyIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXIge1xcbiBcXG4ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKFxcbiAgICAgT0ZfVEFCTEUsXFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXFxuICAgICBcXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcXFwidGVzdCxydXN0LWRldmljZVxcXCIpLCBJbmZvKDQyKSldXFxuICk7XFxuIFxcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcXG4gICAgIEFDUElfVEFCTEUsXFxuLSAgICBNT0RVTEVfQUNQSV9UQUJMRSxcXG4gICAgIFxcdTAwM2NTYW1wbGVEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXFxcIkxOVVhCRUVGXFxcIiksIEluZm8oMCkpXVxcbiApO1xcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yc1xcbmluZGV4IDAyYmQ1MDg1ZjliYzc2Li43ZWYwNGUxNzdjODA5NCAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzXFxuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yc1xcbkBAIC0xOSw3ICsxOSw2IEBAIHN0cnVjdCBTYW1wbGVEcml2ZXIge1xcbiBcXG4ga2VybmVsOjp1c2JfZGV2aWNlX3RhYmxlIShcXG4gICAgIFVTQl9UQUJMRSxcXG4tICAgIE1PRFVMRV9VU0JfVEFCTEUsXFxuICAgICBcXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHVzYjo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyh1c2I6OkRldmljZUlkOjpmcm9tX2lkKDB4MTIzNCwgMHg1Njc4KSwgKCkpLF1cXG4gKTtcXG5AQCAtMzIsNyArMzEsNyBAQCBpbXBsIHVzYjo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIge1xcbiAgICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4gICAgICAgICBpbnRmOiBcXHUwMDI2J2JvdW5kIHVzYjo6SW50ZXJmYWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4gICAgICAgICBfaWQ6IFxcdTAwMjZ1c2I6OkRldmljZUlkLFxcbi0gICAgICAgIF9pbmZvOiBcXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcXG4rICAgICAgICBfaW5mbzogT3B0aW9uXFx1MDAzY1xcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvXFx1MDAzZSxcXG4gICAgICkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGYsIEVycm9yXFx1MDAzZSArICdib3VuZCB7XFxuICAgICAgICAgbGV0IGRldjogXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSA9IGludGYuYXNfcmVmKCk7XFxuICAgICAgICAgZGV2X2luZm8hKGRldiwgXFxcIlJ1c3QgVVNCIGRyaXZlciBzYW1wbGUgcHJvYmVkXFxcXG5cXFwiKTtcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnNcXG5pbmRleCAyZDg3NmY0ZTNlZTBhMi4uYzhhMjM4NzVlZjViYzUgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5yc1xcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnNcXG5AQCAtODcsMTQgKzg3LDEyIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXIge1xcbiBcXG4ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKFxcbiAgICAgT0ZfVEFCTEUsXFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXFxuICAgICBcXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcXHUwMDNlOjpJZEluZm8sXFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcXFwidGVzdCxydXN0LWRldmljZVxcXCIpLCAoKSldXFxuICk7XFxuIFxcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcXG4gICAgIEFDUElfVEFCTEUsXFxuLSAgICBNT0RVTEVfQUNQSV9UQUJMRSxcXG4gICAgIFxcdTAwM2NTYW1wbGVEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXFxcIkxOVVhCRUVGXFxcIiksICgpKV1cXG4gKTtcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzXFxuaW5kZXggODA4ZDU4MjAwZWI2NzcuLmY1ZTVmMmY5YWRmNzYyIDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5yc1xcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5yc1xcbkBAIC0yMywxNCArMjMsMTIgQEAgc3RydWN0IFNhbXBsZVNvY0RyaXZlciB7XFxuIFxcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXFxuICAgICBPRl9UQUJMRSxcXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcXG4gICAgIFxcdTAwM2NTYW1wbGVTb2NEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclxcdTAwM2U6OklkSW5mbyxcXG4gICAgIFsob2Y6OkRldmljZUlkOjpuZXcoY1xcXCJ0ZXN0LHJ1c3QtZGV2aWNlXFxcIiksICgpKV1cXG4gKTtcXG4gXFxuIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxcbiAgICAgQUNQSV9UQUJMRSxcXG4tICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxcbiAgICAgXFx1MDAzY1NhbXBsZVNvY0RyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXFx1MDAzZTo6SWRJbmZvLFxcbiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGNcXFwiTE5VWEJFRUZcXFwiKSwgKCkpXVxcbiApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzoxMS4zMTkzOTc1OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMTIyNjg5OTg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJTQU1QTEVTX1JVU1RcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RNQVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX0kyQ1wiLFxuICAgIFwiU0FNUExFX1JVU1RfSTJDX0NMSUVOVFwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1BDSVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1BMQVRGT1JNXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9EUklWRVJfVVNCXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9TT0NcIixcbiAgICBcIkRSTV9OT1ZBXCIsXG4gICAgXCJEUk1fVFlSXCIsXG4gICAgXCJOT1ZBX0NPUkVcIixcbiAgICBcIlBXTV9USDE1MjBcIixcbiAgICBcIkNQVUZSRVFfRFRfUlVTVFwiLFxuICAgIFwiQVg4ODc5NkJfUlVTVF9QSFlcIixcbiAgICBcIkFNQ0NfUVQyMDI1X1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciBkZXZpY2UgZHJpdmVycyAoUENJLCBVU0IsIFBsYXRmb3JtLCBJMkMsIEF1eGlsaWFyeSwgQUNQSSwgT0YpLCBjaGFuZ2luZyBob3cgZGV2aWNlIElEIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIGFuZCBob3cgbWF0Y2ggZGF0YSBpcyByZXRyaWV2ZWQgZHVyaW5nIGRyaXZlciBwcm9iZS4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIFJ1c3QgZHJpdmVycyBjYW4gc3RpbGwgcHJvYmUgc3VjY2Vzc2Z1bGx5IGFuZCByZWNlaXZlIGNvcnJlY3QgbWF0Y2ggZGF0YS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZjNjYzlhNWE4NjQ3NTFlYTQzOTNiZWY2YzNlODQ4NmY0OGIxYTZiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6MTM6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxNTAxMWY1NzUyYTk5NC4uMDcyNDBlMGI3NDUxODAgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC0yOTcsNyArMjk3LDYgQEAgRjpcdGluY2x1ZGUvbGludXgvYWNwaS5oXG4gRjpcdGluY2x1ZGUvbGludXgvZndub2RlLmhcbiBGOlx0aW5jbHVkZS9saW51eC9md190YWJsZS5oXG4gRjpcdGxpYi9md190YWJsZS5jXG4tRjpcdHJ1c3QvaGVscGVycy9hY3BpLmNcbiBGOlx0cnVzdC9rZXJuZWwvYWNwaS5yc1xuIEY6XHR0b29scy9wb3dlci9hY3BpL1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuY1xuaW5kZXggYTMwYTkwNGY2NTM1ZjQuLjFmYjBiMTBiZjkyNDc5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hY3BpL2J1cy5jXG4rKysgYi9kcml2ZXJzL2FjcGkvYnVzLmNcbkBAIC04OTgsOSArODk4LDkgQEAgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2NvbXBhbmlvbl9tYXRjaChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gICogaWRlbnRpZmllcnMgYW5kIGEgX0RTRCBvYmplY3Qgd2l0aCB0aGUgXCJjb21wYXRpYmxlXCIgcHJvcGVydHksIHVzZSB0aGF0XG4gICogcHJvcGVydHkgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgZ2l2ZW4gbGlzdCBvZiBpZGVudGlmaWVycy5cbiAgKi9cbi1ib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi1cdFx0XHQgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX21hdGNoX3RhYmxlLFxuLVx0XHRcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqKm9mX2lkKVxuK3N0YXRpYyBib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbitcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZSxcbitcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICoqb2ZfaWQpXG4ge1xuIFx0Y29uc3QgdW5pb24gYWNwaV9vYmplY3QgKm9mX2NvbXBhdGlibGUsICpvYmo7XG4gXHRpbnQgaSwgbnZhbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnMgYi9kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnNcbmluZGV4IDEwMTA2ZmExMzA5NWU0Li4xNDVkYWExMjA3MmY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yc1xuKysrIGIvZHJpdmVycy9jcHVmcmVxL3JjcHVmcmVxX2R0LnJzXG5AQCAtMTk0LDcgKzE5NCw2IEBAIGZuIHJlZ2lzdGVyX2VtKHBvbGljeTogXHUwMDI2bXV0IGNwdWZyZXE6OlBvbGljeSkge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjQ1BVRnJlcURURHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXCJvcGVyYXRpbmctcG9pbnRzLXYyXCIpLCAoKSldXG4gKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vbm92YS9kcml2ZXIucnNcbmluZGV4IDQ4OTMzZDg2ZGRkYTliLi40M2YxNWNkZmViMDliMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3ZhL2RyaXZlci5yc1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdmEvZHJpdmVyLnJzXG5AQCAtNDMsNyArNDMsNiBAQCBwdWIoY3JhdGUpIHN0cnVjdCBOb3ZhRGF0YSB7XG4gXG4ga2VybmVsOjphdXhpbGlhcnlfZGV2aWNlX3RhYmxlIShcbiAgICAgQVVYX1RBQkxFLFxuLSAgICBNT0RVTEVfQVVYX1RBQkxFLFxuICAgICBcdTAwM2NOb3ZhRHJpdmVyIGFzIGF1eGlsaWFyeTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoXG4gICAgICAgICBhdXhpbGlhcnk6OkRldmljZUlkOjpuZXcoTk9WQV9DT1JFX01PRFVMRV9OQU1FLCBBVVhJTElBUllfTkFNRSksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5yc1xuaW5kZXggZDA2M2JjNjY0Y2MxMTcuLjIxOGU5YWY4OTljN2M3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzXG5AQCAtODcsNyArODcsNiBAQCBmbiBpc3N1ZV9zb2Z0X3Jlc2V0KGRldjogXHUwMDI2RGV2aWNlLCBpb21lbTogXHUwMDI2SW9NZW1cdTAwM2MnX1x1MDAzZSkgLVx1MDAzZSBSZXN1bHQge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjVHlyUGxhdGZvcm1Ecml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbXG4gICAgICAgICAob2Y6OkRldmljZUlkOjpuZXcoY1wicm9ja2NoaXAscmszNTg4LW1hbGlcIiksICgpKSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzIGIvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5yc1xuaW5kZXggNTczOGQ0YWM1MjFiNzIuLjBjNTNiNzIzOWFjOWU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5yc1xuKysrIGIvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5yc1xuQEAgLTQwLDcgKzQwLDYgQEAgcHViKGNyYXRlKSBzdHJ1Y3QgTm92YUNvcmVcdTAwM2MnYm91bmRcdTAwM2Uge1xuIFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXG4gICAgIFBDSV9UQUJMRSxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcbiAgICAgXHUwMDNjTm92YUNvcmVEcml2ZXIgYXMgcGNpOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgW1xuICAgICAgICAgLy8gTW9kZXJuIE5WSURJQSBHUFVzIHdpbGwgc2hvdyB1cCBhcyBlaXRoZXIgVkdBIG9yIDNEIGNvbnRyb2xsZXJzLlxuQEAgLTcwLDcgKzY5LDcgQEAgaW1wbCBwY2k6OkRyaXZlciBmb3IgTm92YUNvcmVEcml2ZXIge1xuIFxuICAgICBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgIHBkZXY6IFx1MDAyNidib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MnX1x1MDAzZVx1MDAzZSxcbi0gICAgICAgIF9pbmZvOiBcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvLFxuKyAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZCB7XG4gICAgICAgICBwaW5faW5pdDo6cGluX2luaXRfc2NvcGUobW92ZSB8fCB7XG4gICAgICAgICAgICAgZGV2X2RiZyEocGRldiwgXCJQcm9iZSBOb3ZhIENvcmUgR1BVIGRyaXZlci5cXG5cIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbmluZGV4IDNlM2ZhNTFjY2VmOTExLi4xZGY3NTIzMzBlOGZkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbisrKyBiL2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNcbkBAIC0zMDMsNyArMzAzLDYgQEAgZm4gZHJvcChzZWxmOiBQaW5cdTAwM2NcdTAwMjZtdXQgU2VsZlx1MDAzZSkge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjVGgxNTIwUHdtUGxhdGZvcm1Ecml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcInRoZWFkLHRoMTUyMC1wd21cIiksICgpKV1cbiApO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oIGIvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmhcbmluZGV4IDcxNGQxMTFkODA1MzBmLi43ZTU3Zjk2OThmN2NlZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvYWNwaS9hY3BpX2J1cy5oXG4rKysgYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaFxuQEAgLTE4OSwxMCArMTg5LDYgQEAgc3RydWN0IGFjcGlfZHJpdmVyIHtcbiAgKiAtLS0tLS0tLS0tLVxuICAqL1xuIFxuLWJvb2wgYWNwaV9vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxuLVx0XHRcdCAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4tXHRcdFx0ICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICoqb2ZfaWQpO1xuLVxuIC8qIFN0YXR1cyAoX1NUQSkgKi9cbiBcbiBzdHJ1Y3QgYWNwaV9kZXZpY2Vfc3RhdHVzIHtcbkBAIC0xMDAwLDEzICs5OTYsNiBAQCBpbnQgYWNwaV9zY2FuX2FkZF9kZXAoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9oYW5kbGVfbGlzdCAqZGVwX2RldmljZXMpO1xuIHUzMiBhcmNoX2FjcGlfYWRkX2F1dG9fZGVwKGFjcGlfaGFuZGxlIGhhbmRsZSk7XG4gI2Vsc2VcdC8qIENPTkZJR19BQ1BJICovXG4gXG4tc3RhdGljIGlubGluZSBib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4tXHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKipvZl9pZClcbi17XG4tXHRyZXR1cm4gZmFsc2U7XG4tfVxuLVxuIHN0YXRpYyBpbmxpbmUgaW50IHJlZ2lzdGVyX2FjcGlfYnVzX3R5cGUodm9pZCAqYnVzKSB7IHJldHVybiAwOyB9XG4gc3RhdGljIGlubGluZSBpbnQgdW5yZWdpc3Rlcl9hY3BpX2J1c190eXBlKHZvaWQgKmJ1cykgeyByZXR1cm4gMDsgfVxuIFxuZGlmZiAtLWdpdCBhL3J1c3QvaGVscGVycy9hY3BpLmMgYi9ydXN0L2hlbHBlcnMvYWNwaS5jXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGU3NWM5ODA3YmJhZGNjLi4wMDAwMDAwMDAwMDAwMFxuLS0tIGEvcnVzdC9oZWxwZXJzL2FjcGkuY1xuKysrIC9kZXYvbnVsbFxuQEAgLTEsMTYgKzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvYWNwaS5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYWNwaS9hY3BpX2J1cy5oXHUwMDNlXG4tXG4tX19ydXN0X2hlbHBlciBib29sIHJ1c3RfaGVscGVyX2FjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi1cdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfbWF0Y2hfdGFibGUsXG4tXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKipvZl9pZClcbi17XG4tXHRyZXR1cm4gYWNwaV9vZl9tYXRjaF9kZXZpY2UoYWRldiwgb2ZfbWF0Y2hfdGFibGUsIG9mX2lkKTtcbi19XG4tXG4tX19ydXN0X2hlbHBlciBzdHJ1Y3QgYWNwaV9kZXZpY2UgKnJ1c3RfaGVscGVyX3RvX2FjcGlfZGV2aWNlX25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbi17XG4tXHRyZXR1cm4gdG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpO1xuLX1cbmRpZmYgLS1naXQgYS9ydXN0L2hlbHBlcnMvaGVscGVycy5jIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuaW5kZXggOTk4ZTMxMDUyZTY2MDEuLmZhZGQ3YWNkZDgxYzkzIDEwMDY0NFxuLS0tIGEvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuKysrIGIvcnVzdC9oZWxwZXJzL2hlbHBlcnMuY1xuQEAgLTM4LDcgKzM4LDYgQEBcbiAjZGVmaW5lIF9fcnVzdF9oZWxwZXIgX19hbHdheXNfaW5saW5lXG4gI2VuZGlmXG4gXG4tI2luY2x1ZGUgXCJhY3BpLmNcIlxuICNpbmNsdWRlIFwiYXRvbWljLmNcIlxuICNpbmNsdWRlIFwiYXRvbWljX2V4dC5jXCJcbiAjaW5jbHVkZSBcImF1eGlsaWFyeS5jXCJcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hY3BpLnJzIGIvcnVzdC9rZXJuZWwvYWNwaS5yc1xuaW5kZXggOWI4ZWZhNjIzMTMwYzEuLmVhMmNlNjFlZTM5MzFmIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWNwaS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYWNwaS5yc1xuQEAgLTI1LDEwICsyNSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkLlxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9IGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6YWNwaV9kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTtcbi1cbi0gICAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4tICAgICAgICBzZWxmLjAuZHJpdmVyX2RhdGFcbi0gICAgfVxuIH1cbiBcbiBpbXBsIERldmljZUlkIHtcbkBAIC01MywxMyArNDksNyBAQCBwdWIgY29uc3QgZm4gbmV3KGlkOiBcdTAwMjYnc3RhdGljIENTdHIpIC1cdTAwM2UgU2VsZiB7XG4gLy8vIENyZWF0ZSBhbiBBQ1BJIGBJZFRhYmxlYCB3aXRoIGFuIFwiYWxpYXNcIiBmb3IgbW9kcG9zdC5cbiAjW21hY3JvX2V4cG9ydF1cbiBtYWNyb19ydWxlcyEgYWNwaV9kZXZpY2VfdGFibGUge1xuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XHUwMDNlIHtcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzY1xuLSAgICAgICAgICAgICRjcmF0ZTo6YWNwaTo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJhY3BpXCIsICRtb2R1bGVfdGFibGVfbmFtZSwgJHRhYmxlX25hbWUpO1xuKyAgICAoJCgkdHQ6dHQpKikgPVx1MDAzZSB7XG4rICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwiYWNwaVwiLCAkY3JhdGU6OmFjcGk6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG5pbmRleCBjNDI5MjhkNWEyMzkzZi4uYWExM2Q4ODY2YTE5NjQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbisrKyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTkzLDcgKzkzLDkgQEAgZXh0ZXJuIFwiQ1wiIGZuIHByb2JlX2NhbGxiYWNrKFxuICAgICAgICAgLy8gU0FGRVRZOiBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudClgXSB3cmFwcGVyIG9mIGBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZGBcbiAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCdzIHNhZmUgdG8gdHJhbnNtdXRlLlxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KmlkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbi0gICAgICAgIGxldCBpbmZvID0gVDo6SURfVEFCTEUuaW5mbyhpZC5pbmRleCgpKTtcbitcbisgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVx1MDAzY18sIFQ6OklkSW5mb1x1MDAzZWAuXG4rICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IGlkLmluZm9fdW5jaGVja2VkOjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9O1xuIFxuICAgICAgICAgZnJvbV9yZXN1bHQofHwge1xuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUoYWRldiwgaW5mbyk7XG5AQCAtMTY5LDEwICsxNzEsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9XG4gICAgICAgICBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OmF1eGlsaWFyeV9kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTtcbi1cbi0gICAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4tICAgICAgICBzZWxmLjAuZHJpdmVyX2RhdGFcbi0gICAgfVxuIH1cbiBcbiAvLy8gSWRUYWJsZSB0eXBlIGZvciBhdXhpbGlhcnkgZHJpdmVycy5cbkBAIC0xODEsMTQgKzE3OSw4IEBAIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuIC8vLyBDcmVhdGUgYSBhdXhpbGlhcnkgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBhdXhpbGlhcnlfZGV2aWNlX3RhYmxlIHtcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVx1MDAzZSB7XG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2Ncbi0gICAgICAgICAgICAkY3JhdGU6OmF1eGlsaWFyeTo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJhdXhpbGlhcnlcIiwgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7XG4rICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJhdXhpbGlhcnlcIiwgJGNyYXRlOjphdXhpbGlhcnk6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzXG5pbmRleCA4ZTk3MjE0NDYwMTQ2ZS4uNWY0ZDE5MWZjZTUxNWEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2VfaWQucnNcbisrKyBiL3J1c3Qva2VybmVsL2RldmljZV9pZC5yc1xuQEAgLTUsNyArNSwxMCBAQFxuIC8vISBFYWNoIGJ1cyAvIHN1YnN5c3RlbSB0aGF0IG1hdGNoZXMgZGV2aWNlIGFuZCBkcml2ZXIgdGhyb3VnaCBhIGJ1cyAvIHN1YnN5c3RlbSBzcGVjaWZpYyBJRCBpc1xuIC8vISBleHBlY3RlZCB0byBpbXBsZW1lbnQgW2BSYXdEZXZpY2VJZGBdLlxuIFxuLXVzZSBjb3JlOjptZW06Ok1heWJlVW5pbml0O1xuK3VzZSBjb3JlOjp7XG4rICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXG4rICAgIG1lbTo6TWF5YmVVbmluaXQsIC8vXG4rfTtcbiBcbiAvLy8gTWFya2VyIHRyYWl0IHRvIGluZGljYXRlIGEgUnVzdCBkZXZpY2UgSUQgdHlwZSByZXByZXNlbnRzIGEgY29ycmVzcG9uZGluZyBDIGRldmljZSBJRCB0eXBlLlxuIC8vL1xuQEAgLTQ3LDExMiArNTAsMTEwIEBAIHB1YiB1bnNhZmUgdHJhaXQgUmF3RGV2aWNlSWRJbmRleDogUmF3RGV2aWNlSWQge1xuICAgICAvLy8gVGhlIG9mZnNldCAoaW4gYnl0ZXMpIHRvIHRoZSBjb250ZXh0L2RhdGEgZmllbGQgaW4gdGhlIHJhdyBkZXZpY2UgSUQuXG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemU7XG4gXG4tICAgIC8vLyBUaGUgaW5kZXggc3RvcmVkIGF0IGBEUklWRVJfREFUQV9PRkZTRVRgIG9mIHRoZSBpbXBsZW1lbnRvciBvZiB0aGUgW2BSYXdEZXZpY2VJZEluZGV4YF1cbi0gICAgLy8vIHRyYWl0LlxuLSAgICBmbiBpbmRleChcdTAwMjZzZWxmKSAtXHUwMDNlIHVzaXplO1xuLX1cbi1cbi0vLy8gQSB6ZXJvLXRlcm1pbmF0ZWQgZGV2aWNlIGlkIGFycmF5LlxuLSNbcmVwcihDKV1cbi1wdWIgc3RydWN0IFJhd0lkQXJyYXlcdTAwM2NUOiBSYXdEZXZpY2VJZCwgY29uc3QgTjogdXNpemVcdTAwM2Uge1xuLSAgICBpZHM6IFtUOjpSYXdUeXBlOyBOXSxcbi0gICAgc2VudGluZWw6IE1heWJlVW5pbml0XHUwMDNjVDo6UmF3VHlwZVx1MDAzZSxcbi19XG4rICAgIC8vLyBPYnRhaW4gdGhlIGRhdGEgcG9pbnRlciBzdG9yZWQgaW5zaWRlIHRoZSBkZXZpY2UgSUQuXG4rICAgIC8vL1xuKyAgICAvLy8gIyBTYWZldHlcbisgICAgLy8vXG4rICAgIC8vLyBgXHUwMDI2U2VsZmAgbXVzdCBiZSBzdG9yZWQgaW5zaWRlIGEgYElkQXJyYXlcdTAwM2NTZWxmLCBVXHUwMDNlYC5cbisgICAgdW5zYWZlIGZuIGluZm9fdW5jaGVja2VkXHUwMDNjVVx1MDAzZShcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNidzdGF0aWMgVSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgdHJhaXQsIHRoaXMgaXMgYHNlbGYuZHJpdmVyX2RhdGEgYXMgKmNvbnN0IFVgIGFuZCBieVxuKyAgICAgICAgLy8gdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiB0aGUgZnVuY3Rpb24sIHRoaXMgaXMgc3RvcmVkIGluIGBJZEFycmF5XHUwMDNjU2VsZiwgVVx1MDAzZWAgc28gaXNcbisgICAgICAgIC8vIGNvbnZlcnRpYmxlIHRvIGBcdTAwMjYnc3RhdGljIFVgLlxuKyAgICAgICAgdW5zYWZlIHtcbisgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHNlbGYpXG4rICAgICAgICAgICAgICAgIC5ieXRlX2FkZChTZWxmOjpEUklWRVJfREFUQV9PRkZTRVQpXG4rICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2NcdTAwMjZVXHUwMDNlKClcbisgICAgICAgICAgICAgICAgLnJlYWQoKVxuKyAgICAgICAgfVxuKyAgICB9XG4gXG4taW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBSYXdJZEFycmF5XHUwMDNjVCwgTlx1MDAzZSB7XG4tICAgICNbZG9jKGhpZGRlbildXG4tICAgIHB1YiBjb25zdCBmbiBzaXplKFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuLSAgICAgICAgY29yZTo6bWVtOjpzaXplX29mOjpcdTAwM2NTZWxmXHUwMDNlKClcbisgICAgLy8vIE9idGFpbiB0aGUgZGF0YSBwb2ludGVyIHN0b3JlZCBpbnNpZGUgdGhlIGRldmljZSBJRC5cbisgICAgLy8vXG4rICAgIC8vLyAjIFNhZmV0eVxuKyAgICAvLy9cbisgICAgLy8vIGBcdTAwMjZTZWxmYCBtdXN0IGJlIHN0b3JlZCBpbnNpZGUgYSBgSWRBcnJheVx1MDAzY1NlbGYsIFVcdTAwM2VgLCBvciBoYXMgTlVMTCAob3IgMCkgYXMgZHJpdmVyIGRhdGEuXG4rICAgIHVuc2FmZSBmbiBpbmZvX3VuY2hlY2tlZF9vcHRcdTAwM2NVXHUwMDNlKFx1MDAyNnNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2J3N0YXRpYyBVXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSB0cmFpdCwgdGhpcyBpcyBgc2VsZi5kcml2ZXJfZGF0YSBhcyAqY29uc3QgVWAgYW5kIGJ5XG4rICAgICAgICAvLyB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIHRoZSBmdW5jdGlvbiwgaWYgdGhpcyBpcyBzdG9yZWQgaW4gYElkQXJyYXlcdTAwM2NTZWxmLCBVXHUwMDNlYCwgdGhpcyBpc1xuKyAgICAgICAgLy8gY29udmVydGlibGUgdG8gYE9wdGlvblx1MDAzY1x1MDAyNidzdGF0aWMgVVx1MDAzZWAuIE90aGVyd2lzZSBpdCBpcyBOVUxMIHdoaWNoIGlzIGBOb25lYCBhc1xuKyAgICAgICAgLy8gYE9wdGlvblx1MDAzY1x1MDAyNlVcdTAwM2VgLlxuKyAgICAgICAgdW5zYWZlIHtcbisgICAgICAgICAgICBjb3JlOjpwdHI6OmZyb21fcmVmKHNlbGYpXG4rICAgICAgICAgICAgICAgIC5ieXRlX2FkZChTZWxmOjpEUklWRVJfREFUQV9PRkZTRVQpXG4rICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2NPcHRpb25cdTAwM2NcdTAwMjZVXHUwMDNlXHUwMDNlKClcbisgICAgICAgICAgICAgICAgLnJlYWQoKVxuKyAgICAgICAgfVxuICAgICB9XG4gfVxuIFxuIC8vLyBBIHplcm8tdGVybWluYXRlZCBkZXZpY2UgaWQgYXJyYXksIGZvbGxvd2VkIGJ5IGNvbnRleHQgZGF0YS5cbiAjW3JlcHIoQyldXG4tcHViIHN0cnVjdCBJZEFycmF5XHUwMDNjVDogUmF3RGV2aWNlSWQsIFUsIGNvbnN0IE46IHVzaXplXHUwMDNlIHtcbi0gICAgcmF3X2lkczogUmF3SWRBcnJheVx1MDAzY1QsIE5cdTAwM2UsXG4tICAgIGlkX2luZm9zOiBbVTsgTl0sXG4rcHViIHN0cnVjdCBJZEFycmF5XHUwMDNjVDogUmF3RGV2aWNlSWQsIFU6ICdzdGF0aWMsIGNvbnN0IE46IHVzaXplXHUwMDNlIHtcbisgICAgLy8gVGhpcyBpcyBgTWF5YmVVbmluaXRcdTAwM2NUOjpSYXdUeXBlXHUwMDNlYCBzbyBhbnkgYnl0ZXMgaW5zaWRlIGl0IGNhbiBjYXJyeSBwcm92ZW5hbmNlIGluIENURkUuXG4rICAgIC8vIElmIHRoaXMgd2VyZSBgVDo6UmF3VHlwZWAsIGludGVnZXIgZmllbGRzIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGNvbnRhaW4gcG9pbnRlcnMuXG4rICAgIGlkczogW01heWJlVW5pbml0XHUwMDNjVDo6UmF3VHlwZVx1MDAzZTsgTl0sXG4rICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdFx1MDAzY1Q6OlJhd1R5cGVcdTAwM2UsXG4rICAgIHBoYW50b206IFBoYW50b21EYXRhXHUwMDNjXHUwMDI2J3N0YXRpYyBVXHUwMDNlLFxuIH1cbiBcbi1pbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQsIFUsIGNvbnN0IE46IHVzaXplXHUwMDNlIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHtcbisvLyBTQUZFVFk6IGRldmljZSBJRCBpcyBwbGFpbiBkYXRhIHBsdXMgYSBgXHUwMDI2J3N0YXRpYyBVYCBhbmQgY2FuIHRodXMgYmUgc2VudCBiZXR3ZWVuIHRocmVhZHMgc2FmZWx5XG4rLy8gaWYgYFx1MDAyNlVgIGNhbi5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IFJhd0RldmljZUlkLCBVOiBTeW5jICsgJ3N0YXRpYywgY29uc3QgTjogdXNpemVcdTAwM2UgU2VuZCBmb3IgSWRBcnJheVx1MDAzY1QsIFUsIE5cdTAwM2Uge31cbitcbisvLyBTQUZFVFk6IGRldmljZSBJRCBpcyBwbGFpbiBkYXRhIHBsdXMgYSBgXHUwMDI2J3N0YXRpYyBVYCBhbmQgY2FuIHRodXMgYmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyBzYWZlbHlcbisvLyBpZiBgXHUwMDI2VWAgY2FuLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQsIFU6IFN5bmMgKyAnc3RhdGljLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBTeW5jIGZvciBJZEFycmF5XHUwMDNjVCwgVSwgTlx1MDAzZSB7fVxuK1xuK2ltcGxcdTAwM2NUOiBSYXdEZXZpY2VJZCArIFJhd0RldmljZUlkSW5kZXgsIFU6ICdzdGF0aWMsIGNvbnN0IE46IHVzaXplXHUwMDNlIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHtcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGFycmF5LlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBjb250ZW50cyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBpZGVudGlmaWVycyBhbmQgY29udGV4dCBpbmZvcm1hdGlvbi5cbi0gICAgLy8vXG4tICAgIC8vLyAjIFNhZmV0eVxuLSAgICAvLy9cbi0gICAgLy8vIGBkYXRhX29mZnNldGAgYXMgYE5vbmVgIGlzIGFsd2F5cyBzYWZlLlxuLSAgICAvLy8gSWYgYGRhdGFfb2Zmc2V0YCBpcyBgU29tZShkYXRhX29mZnNldClgLCB0aGVuOlxuLSAgICAvLy8gLSBgZGF0YV9vZmZzZXRgIG11c3QgYmUgdGhlIGNvcnJlY3Qgb2Zmc2V0IChpbiBieXRlcykgdG8gdGhlIGNvbnRleHQvZGF0YSBmaWVsZFxuLSAgICAvLy8gICAoZS5nLiwgdGhlIGBkcml2ZXJfZGF0YWAgZmllbGQpIHdpdGhpbiB0aGUgcmF3IGRldmljZSBJRCBzdHJ1Y3R1cmUuXG4tICAgIC8vLyAtIFRoZSBmaWVsZCBhdCBgZGF0YV9vZmZzZXRgIG11c3QgYmUgY29ycmVjdGx5IHNpemVkIHRvIGhvbGQgYSBgdXNpemVgLlxuLSAgICBjb25zdCB1bnNhZmUgZm4gYnVpbGQoaWRzOiBbKFQsIFUpOyBOXSwgZGF0YV9vZmZzZXQ6IE9wdGlvblx1MDAzY3VzaXplXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuKyAgICBwdWIgY29uc3QgZm4gbmV3KGlkczogWyhULCBcdTAwMjYnc3RhdGljIFUpOyBOXSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgICAgIGxldCBtdXQgcmF3X2lkcyA9IFtjb25zdCB7IE1heWJlVW5pbml0OjpcdTAwM2NUOjpSYXdUeXBlXHUwMDNlOjp1bmluaXQoKSB9OyBOXTtcbi0gICAgICAgIGxldCBtdXQgaW5mb3MgPSBbY29uc3QgeyBNYXliZVVuaW5pdDo6dW5pbml0KCkgfTsgTl07XG4gXG4gICAgICAgICBsZXQgbXV0IGkgPSAwdXNpemU7XG4gICAgICAgICB3aGlsZSBpIFx1MDAzYyBOIHtcbiAgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgYFJhd0RldmljZUlkYCwgd2UncmUgZ3VhcmFudGVlZCB0aGF0IGBUYCBpc1xuICAgICAgICAgICAgIC8vIGxheW91dC13aXNlIGNvbXBhdGlibGUgd2l0aCBgUmF3VHlwZWAuXG4gICAgICAgICAgICAgcmF3X2lkc1tpXSA9IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXHUwMDI2aWRzW2ldLjApIH07XG4tICAgICAgICAgICAgaWYgbGV0IFNvbWUoZGF0YV9vZmZzZXQpID0gZGF0YV9vZmZzZXQge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnQgb2YgdGhpcyBmdW5jdGlvbiwgdGhpcyB3b3VsZCBiZSBlZmZlY3RpdmVseVxuLSAgICAgICAgICAgICAgICAvLyBgcmF3X2lkc1tpXS5kcml2ZXJfZGF0YSA9IGk7YC5cbi0gICAgICAgICAgICAgICAgdW5zYWZlIHtcbi0gICAgICAgICAgICAgICAgICAgIHJhd19pZHNbaV1cbi0gICAgICAgICAgICAgICAgICAgICAgICAuYXNfbXV0X3B0cigpXG4tICAgICAgICAgICAgICAgICAgICAgICAgLmJ5dGVfYWRkKGRhdGFfb2Zmc2V0KVxuLSAgICAgICAgICAgICAgICAgICAgICAgIC5jYXN0OjpcdTAwM2N1c2l6ZVx1MDAzZSgpXG4tICAgICAgICAgICAgICAgICAgICAgICAgLndyaXRlKGkpO1xuLSAgICAgICAgICAgICAgICB9XG4rICAgICAgICAgICAgLy8gU0FGRVRZOiBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50IG9mIGBSYXdEZXZpY2VJZEluZGV4YCwgdGhpcyB3b3VsZCBiZSBlZmZlY3RpdmVseVxuKyAgICAgICAgICAgIC8vIGByYXdfaWRzW2ldLmRyaXZlcl9kYXRhID0gaWRzW2ldLjE7YC5cbisgICAgICAgICAgICB1bnNhZmUge1xuKyAgICAgICAgICAgICAgICByYXdfaWRzW2ldXG4rICAgICAgICAgICAgICAgICAgICAuYXNfbXV0X3B0cigpXG4rICAgICAgICAgICAgICAgICAgICAuYnl0ZV9hZGQoVDo6RFJJVkVSX0RBVEFfT0ZGU0VUKVxuKyAgICAgICAgICAgICAgICAgICAgLmNhc3Q6Olx1MDAzY1x1MDAyNlVcdTAwM2UoKVxuKyAgICAgICAgICAgICAgICAgICAgLndyaXRlKGlkc1tpXS4xKTtcbiAgICAgICAgICAgICB9XG4gXG4tICAgICAgICAgICAgLy8gU0FGRVRZOiB0aGlzIGlzIGVmZmVjdGl2ZWx5IGEgbW92ZTogYGluZm9zW2ldID0gaWRzW2ldLjFgLiBXZSBtYWtlIGEgY29weSBoZXJlIGJ1dFxuLSAgICAgICAgICAgIC8vIGxhdGVyIGZvcmdldCBgaWRzYC5cbi0gICAgICAgICAgICBpbmZvc1tpXSA9IE1heWJlVW5pbml0OjpuZXcodW5zYWZlIHsgY29yZTo6cHRyOjpyZWFkKFx1MDAyNmlkc1tpXS4xKSB9KTtcbiAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICB9XG4gXG4gICAgICAgICBjb3JlOjptZW06OmZvcmdldChpZHMpO1xuIFxuICAgICAgICAgU2VsZiB7XG4tICAgICAgICAgICAgcmF3X2lkczogUmF3SWRBcnJheSB7XG4tICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogdGhpcyBpcyBlZmZlY3RpdmVseSBgYXJyYXlfYXNzdW1lX2luaXRgLCB3aGljaCBpcyB1bnN0YWJsZSwgc28gd2UgdXNlXG4tICAgICAgICAgICAgICAgIC8vIGB0cmFuc211dGVfY29weWAgaW5zdGVhZC4gV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYHJhd19pZHNgIHNvIHRoaXNcbi0gICAgICAgICAgICAgICAgLy8gYGFycmF5X2Fzc3VtZV9pbml0YCBpcyBzYWZlLlxuLSAgICAgICAgICAgICAgICBpZHM6IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXHUwMDI2cmF3X2lkcykgfSxcbi0gICAgICAgICAgICAgICAgc2VudGluZWw6IE1heWJlVW5pbml0Ojp6ZXJvZWQoKSxcbi0gICAgICAgICAgICB9LFxuLSAgICAgICAgICAgIC8vIFNBRkVUWTogV2UgaGF2ZSBpbml0aWFsaXplZCBhbGwgZWxlbWVudHMgb2YgYGluZm9zYCBzbyB0aGlzIGBhcnJheV9hc3N1bWVfaW5pdGAgaXNcbi0gICAgICAgICAgICAvLyBzYWZlLlxuLSAgICAgICAgICAgIGlkX2luZm9zOiB1bnNhZmUgeyBjb3JlOjptZW06OnRyYW5zbXV0ZV9jb3B5KFx1MDAyNmluZm9zKSB9LFxuKyAgICAgICAgICAgIGlkczogcmF3X2lkcyxcbisgICAgICAgICAgICBzZW50aW5lbDogTWF5YmVVbmluaXQ6Onplcm9lZCgpLFxuKyAgICAgICAgICAgIHBoYW50b206IFBoYW50b21EYXRhLFxuICAgICAgICAgfVxuICAgICB9XG4rfVxuIFxuK2ltcGxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgY29uc3QgTjogdXNpemVcdTAwM2UgSWRBcnJheVx1MDAzY1QsICgpLCBOXHUwMDNlIHtcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGFycmF5IHdpdGhvdXQgd3JpdGluZyBpbmRleCB2YWx1ZXMuXG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNvbnRlbnRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGdpdmVuIGlkZW50aWZpZXJzIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uLlxuICAgICAvLy8gSWYgdGhlIGRldmljZSBpbXBsZW1lbnRzIFtgUmF3RGV2aWNlSWRJbmRleGBdLCBjb25zaWRlciB1c2luZyBbYElkQXJyYXk6Om5ld2BdIGluc3RlYWQuXG4tICAgIHB1YiBjb25zdCBmbiBuZXdfd2l0aG91dF9pbmRleChpZHM6IFsoVCwgVSk7IE5dKSAtXHUwMDNlIFNlbGYge1xuLSAgICAgICAgLy8gU0FGRVRZOiBDYWxsaW5nIGBTZWxmOjpidWlsZGAgd2l0aCBgb2Zmc2V0ID0gTm9uZWAgaXMgYWx3YXlzIHNhZmUsXG4tICAgICAgICAvLyBiZWNhdXNlIG5vIHJhdyBtZW1vcnkgd3JpdGVzIGFyZSBwZXJmb3JtZWQgaW4gdGhpcyBjYXNlLlxuLSAgICAgICAgdW5zYWZlIHsgU2VsZjo6YnVpbGQoaWRzLCBOb25lKSB9XG4tICAgIH1cbi1cbi0gICAgLy8vIFJlZmVyZW5jZSB0byB0aGUgY29udGFpbmVkIFtgUmF3SWRBcnJheWBdLlxuLSAgICBwdWIgY29uc3QgZm4gcmF3X2lkcyhcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlJhd0lkQXJyYXlcdTAwM2NULCBOXHUwMDNlIHtcbi0gICAgICAgIFx1MDAyNnNlbGYucmF3X2lkc1xuLSAgICB9XG4tfVxuKyAgICBwdWIgY29uc3QgZm4gbmV3X3dpdGhvdXRfaW5kZXgoaWRzOiBbVDsgTl0pIC1cdTAwM2UgU2VsZiB7XG4rICAgICAgICAvLyBTQUZFVFk6IGBUYCBpcyBsYXlvdXQtd2lzZSBjb21wYXRpYmxlIHdpdGggYFQ6OlJhd1R5cGVgLCBzbyBpcyB0aGUgYXJyYXkgb2YgdGhlbS5cbisgICAgICAgIGxldCByYXdfaWRzOiBbTWF5YmVVbmluaXRcdTAwM2NUOjpSYXdUeXBlXHUwMDNlOyBOXSA9IHVuc2FmZSB7IGNvcmU6Om1lbTo6dHJhbnNtdXRlX2NvcHkoXHUwMDI2aWRzKSB9O1xuKyAgICAgICAgY29yZTo6bWVtOjpmb3JnZXQoaWRzKTtcbiBcbi1pbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQgKyBSYXdEZXZpY2VJZEluZGV4LCBVLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBJZEFycmF5XHUwMDNjVCwgVSwgTlx1MDAzZSB7XG4tICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBhcnJheS5cbi0gICAgLy8vXG4tICAgIC8vLyBUaGUgY29udGVudHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gaWRlbnRpZmllcnMgYW5kIGNvbnRleHQgaW5mb3JtYXRpb24uXG4tICAgIHB1YiBjb25zdCBmbiBuZXcoaWRzOiBbKFQsIFUpOyBOXSkgLVx1MDAzZSBTZWxmIHtcbi0gICAgICAgIC8vIFNBRkVUWTogYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudCBvZiBgUmF3RGV2aWNlSWRJbmRleGAsXG4tICAgICAgICAvLyBgVDo6RFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyBndWFyYW50ZWVkIHRvIGJlIHRoZSBjb3JyZWN0IG9mZnNldCAoaW4gYnl0ZXMpIHRvXG4tICAgICAgICAvLyBhIGZpZWxkIHdpdGhpbiBgVDo6UmF3VHlwZWAuXG4tICAgICAgICB1bnNhZmUgeyBTZWxmOjpidWlsZChpZHMsIFNvbWUoVDo6RFJJVkVSX0RBVEFfT0ZGU0VUKSkgfVxuKyAgICAgICAgU2VsZiB7XG4rICAgICAgICAgICAgaWRzOiByYXdfaWRzLFxuKyAgICAgICAgICAgIHNlbnRpbmVsOiBNYXliZVVuaW5pdDo6emVyb2VkKCksXG4rICAgICAgICAgICAgcGhhbnRvbTogUGhhbnRvbURhdGEsXG4rICAgICAgICB9XG4gICAgIH1cbiB9XG4gXG5AQCAtMTY1LDEyICsxNjYsNiBAQCBpbXBsXHUwMDNjVDogUmF3RGV2aWNlSWQgKyBSYXdEZXZpY2VJZEluZGV4LCBVLCBjb25zdCBOOiB1c2l6ZVx1MDAzZSBJZEFycmF5XHUwMDNjVCwgVSwgTlx1MDAzZSB7XG4gcHViIHRyYWl0IElkVGFibGVcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVVx1MDAzZSB7XG4gICAgIC8vLyBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIElEIHRhYmxlLlxuICAgICBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqY29uc3QgVDo6UmF3VHlwZTtcbi1cbi0gICAgLy8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgYnVzIHNwZWNpZmljIGRldmljZSBJRCBmcm9tIGFuIGluZGV4LlxuLSAgICBmbiBpZChcdTAwMjZzZWxmLCBpbmRleDogdXNpemUpIC1cdTAwM2UgXHUwMDI2VDo6UmF3VHlwZTtcbi1cbi0gICAgLy8vIE9idGFpbiB0aGUgcG9pbnRlciB0byB0aGUgZHJpdmVyLXNwZWNpZmljIGluZm9ybWF0aW9uIGZyb20gYW4gaW5kZXguXG4tICAgIGZuIGluZm8oXHUwMDI2c2VsZiwgaW5kZXg6IHVzaXplKSAtXHUwMDNlIFx1MDAyNlU7XG4gfVxuIFxuIGltcGxcdTAwM2NUOiBSYXdEZXZpY2VJZCwgVSwgY29uc3QgTjogdXNpemVcdTAwM2UgSWRUYWJsZVx1MDAzY1QsIFVcdTAwM2UgZm9yIElkQXJyYXlcdTAwM2NULCBVLCBOXHUwMDNlIHtcbkBAIC0xNzksMjggKzE3NCw1NiBAQCBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqY29uc3QgVDo6UmF3VHlwZSB7XG4gICAgICAgICAvLyB0byBhY2Nlc3MgdGhlIHNlbnRpbmVsLlxuICAgICAgICAgY29yZTo6cHRyOjpmcm9tX3JlZihzZWxmKS5jYXN0KClcbiAgICAgfVxuLVxuLSAgICBmbiBpZChcdTAwMjZzZWxmLCBpbmRleDogdXNpemUpIC1cdTAwM2UgXHUwMDI2VDo6UmF3VHlwZSB7XG4tICAgICAgICBcdTAwMjZzZWxmLnJhd19pZHMuaWRzW2luZGV4XVxuLSAgICB9XG4tXG4tICAgIGZuIGluZm8oXHUwMDI2c2VsZiwgaW5kZXg6IHVzaXplKSAtXHUwMDNlIFx1MDAyNlUge1xuLSAgICAgICAgXHUwMDI2c2VsZi5pZF9pbmZvc1tpbmRleF1cbi0gICAgfVxuIH1cbiBcbiAvLy8gQ3JlYXRlIGRldmljZSB0YWJsZSBhbGlhcyBmb3IgbW9kcG9zdC5cbiAjW21hY3JvX2V4cG9ydF1cbiBtYWNyb19ydWxlcyEgbW9kdWxlX2RldmljZV90YWJsZSB7XG4tICAgICgkdGFibGVfdHlwZTogbGl0ZXJhbCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkdGFibGVfbmFtZTppZGVudCkgPVx1MDAzZSB7XG4tICAgICAgICAjW3J1c3RmbXQ6OnNraXBdXG4rICAgIChcbisgICAgICAgICR0YWJsZV90eXBlOiBsaXRlcmFsLCAkZGV2aWNlX2lkX3R5OiB0eSxcbisgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgJGlkX2luZm9fdHlwZTogdHksXG4rICAgICAgICBbJCgoJGlkOiBleHByLCAkaW5mbzpleHByICQoLCk/KSksKiAkKCwpP11cbisgICAgKSA9XHUwMDNlIHtcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXG4rICAgICAgICAgICAgJHRhYmxlX3R5cGUsICRkZXZpY2VfaWRfdHksICR0YWJsZV9uYW1lLCAkaWRfaW5mb190eXBlLFxuKyAgICAgICAgICAgIHskKCRpZD1cdTAwM2UkaW5mbywpKn1cbisgICAgICAgICk7XG4rICAgIH07XG4rXG4rICAgIChcbisgICAgICAgICR0YWJsZV90eXBlOiBsaXRlcmFsLCAkZGV2aWNlX2lkX3R5OiB0eSxcbisgICAgICAgICR0YWJsZV9uYW1lOiBpZGVudCwgJGlkX2luZm9fdHlwZTogdHksXG4rICAgICAgICB7JCgkaWQ6IGV4cHIgPVx1MDAzZSAkaW5mbzpleHByKSwqICQoLCk/fVxuKyAgICApID1cdTAwM2Uge1xuKyAgICAgICAgI1tleHBvcnRfbmFtZSA9XG4rICAgICAgICAgICAgY29uY2F0IShcIl9fbW9kX2RldmljZV90YWJsZV9fXCIsIDo6Y29yZTo6bGluZSEoKSxcbisgICAgICAgICAgICAgICAgICAgIFwiX19rbW9kX1wiLCBtb2R1bGVfcGF0aCEoKSxcbisgICAgICAgICAgICAgICAgICAgIFwiX19cIiwgJHRhYmxlX3R5cGUsXG4rICAgICAgICAgICAgICAgICAgICBcIl9fXCIsIHN0cmluZ2lmeSEoJHRhYmxlX25hbWUpKVxuKyAgICAgICAgXVxuKyAgICAgICAgc3RhdGljICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzY1xuKyAgICAgICAgICAgICRkZXZpY2VfaWRfdHksXG4rICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbisgICAgICAgICAgICB7IFx1MDAzY1skZGV2aWNlX2lkX3R5XVx1MDAzZTo6bGVuKFx1MDAyNlskKCRpZCwpKl0pIH0sXG4rICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KFskKCgkaWQsIFx1MDAyNiRpbmZvKSwpKl0pO1xuKyAgICB9O1xuK1xuKyAgICAvLyBDYXNlIGZvciBubyBJRCBpbmZvLlxuKyAgICAoXG4rICAgICAgICAkdGFibGVfdHlwZTogbGl0ZXJhbCwgJGRldmljZV9pZF90eTogdHksXG4rICAgICAgICAkdGFibGVfbmFtZTogaWRlbnQsIEBub25lLFxuKyAgICAgICAgWyQoJGlkOiBleHByKSwqICQoLCk/XVxuKyAgICApID1cdTAwM2Uge1xuICAgICAgICAgI1tleHBvcnRfbmFtZSA9XG4tICAgICAgICAgICAgY29uY2F0IShcIl9fbW9kX2RldmljZV90YWJsZV9fXCIsIGxpbmUhKCksXG4rICAgICAgICAgICAgY29uY2F0IShcIl9fbW9kX2RldmljZV90YWJsZV9fXCIsIDo6Y29yZTo6bGluZSEoKSxcbiAgICAgICAgICAgICAgICAgICAgIFwiX19rbW9kX1wiLCBtb2R1bGVfcGF0aCEoKSxcbiAgICAgICAgICAgICAgICAgICAgIFwiX19cIiwgJHRhYmxlX3R5cGUsXG4gICAgICAgICAgICAgICAgICAgICBcIl9fXCIsIHN0cmluZ2lmeSEoJHRhYmxlX25hbWUpKVxuICAgICAgICAgXVxuLSAgICAgICAgc3RhdGljICRtb2R1bGVfdGFibGVfbmFtZTogWzo6Y29yZTo6bWVtOjpNYXliZVVuaW5pdFx1MDAzY3U4XHUwMDNlOyAkdGFibGVfbmFtZS5yYXdfaWRzKCkuc2l6ZSgpXSA9XG4tICAgICAgICAgICAgdW5zYWZlIHsgOjpjb3JlOjptZW06OnRyYW5zbXV0ZV9jb3B5KCR0YWJsZV9uYW1lLnJhd19pZHMoKSkgfTtcbisgICAgICAgIHN0YXRpYyAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2NcbisgICAgICAgICAgICAkZGV2aWNlX2lkX3R5LFxuKyAgICAgICAgICAgICgpLFxuKyAgICAgICAgICAgIHsgXHUwMDNjWyRkZXZpY2VfaWRfdHldXHUwMDNlOjpsZW4oXHUwMDI2WyQoJGlkLCkqXSkgfSxcbisgICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleChbJCgkaWQpLCpdKTtcbiAgICAgfTtcbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJpdmVyLnJzIGIvcnVzdC9rZXJuZWwvZHJpdmVyLnJzXG5pbmRleCBiZjViYTBkMjc1NTNlZC4uYzljNzRjNGRkZThmYTcgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcml2ZXIucnNcbisrKyBiL3J1c3Qva2VybmVsL2RyaXZlci5yc1xuQEAgLTI5MSwyNiArMjkxLDYgQEAgZm4gaW5pdChcbiAgICAgfVxuIH1cbiBcbi0vLyBDYWxsaW5nIHRoZSBGRkkgZnVuY3Rpb24gZGlyZWN0bHkgZnJvbSB0aGUgYEFkYXB0ZXJgIGltcGwgbWF5IHJlc3VsdCBpbiBpdCBiZWluZyBjYWxsZWRcbi0vLyBkaXJlY3RseSBmcm9tIGRyaXZlciBtb2R1bGVzLiBUaGlzIGhhcHBlbnMgc2luY2UgdGhlIFJ1c3QgY29tcGlsZXIgd2lsbCB1c2UgbW9ub21vcnBoaXNhdGlvbiwgc29cbi0vLyBpdCBtaWdodCBoYXBwZW4gdGhhdCBmdW5jdGlvbnMgYXJlIGluc3RhbnRpYXRlZCB3aXRoaW4gdGhlIGNhbGxpbmcgZHJpdmVyIG1vZHVsZS4gRm9yIG5vdywgd29ya1xuLS8vIGFyb3VuZCB0aGlzIHdpdGggYCNbaW5saW5lKG5ldmVyKV1gIGhlbHBlcnMuXG4tLy9cbi0vLyBUT0RPOiBSZW1vdmUgb25jZSBhIG1vcmUgZ2VuZXJpYyBzb2x1dGlvbiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4gRm9yIGluc3RhbmNlLCB3ZSBtYXkgYmUgYWJsZSB0b1xuLS8vIGxldmVyYWdlIGBiaW5kZ2VuYCB0byB0YWtlIGNhcmUgb2YgdGhpcyBkZXBlbmRpbmcgb24gd2hldGhlciBhIHN5bWJvbCBpcyAoYWxyZWFkeSkgZXhwb3J0ZWQuXG4tI1tpbmxpbmUobmV2ZXIpXVxuLSNbYWxsb3coY2xpcHB5OjptaXNzaW5nX3NhZmV0eV9kb2MpXVxuLSNbYWxsb3coZGVhZF9jb2RlKV1cbi0jW211c3RfdXNlXVxuLXVuc2FmZSBmbiBhY3BpX29mX21hdGNoX2RldmljZShcbi0gICAgYWRldjogKmNvbnN0IGJpbmRpbmdzOjphY3BpX2RldmljZSxcbi0gICAgb2ZfbWF0Y2hfdGFibGU6ICpjb25zdCBiaW5kaW5nczo6b2ZfZGV2aWNlX2lkLFxuLSAgICBvZl9pZDogKm11dCAqY29uc3QgYmluZGluZ3M6Om9mX2RldmljZV9pZCxcbi0pIC1cdTAwM2UgYm9vbCB7XG4tICAgIC8vIFNBRkVUWTogU2FmZXR5IHJlcXVpcmVtZW50cyBhcmUgdGhlIHNhbWUgYXMgYGJpbmRpbmdzOjphY3BpX29mX21hdGNoX2RldmljZWAuXG4tICAgIHVuc2FmZSB7IGJpbmRpbmdzOjphY3BpX29mX21hdGNoX2RldmljZShhZGV2LCBvZl9tYXRjaF90YWJsZSwgb2ZfaWQpIH1cbi19XG4tXG4gLy8vIFRoZSBidXMgaW5kZXBlbmRlbnQgYWRhcHRlciB0byBtYXRjaCBhIGRyaXZlcnMgYW5kIGEgZGV2aWNlcy5cbiAvLy9cbiAvLy8gVGhpcyB0cmFpdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGJ1cyBzcGVjaWZpYyBhZGFwdGVyLCB3aGljaCByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uXG5AQCAtMzI0LDExOCArMzA0LDIzIEBAIHB1YiB0cmFpdCBBZGFwdGVyIHtcbiAgICAgLy8vIFRoZSBbYGFjcGk6OklkVGFibGVgXSBvZiB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXJcbiAgICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cdTAwM2UgT3B0aW9uXHUwMDNjYWNwaTo6SWRUYWJsZVx1MDAzY1NlbGY6OklkSW5mb1x1MDAzZVx1MDAzZTtcbiBcbi0gICAgLy8vIFJldHVybnMgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBmcm9tIHRoZSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgW2BhY3BpOjpJZFRhYmxlYF0sIGlmIGFueS5cbi0gICAgLy8vXG4tICAgIC8vLyBJZiB0aGlzIHJldHVybnMgYE5vbmVgLCBpdCBtZWFucyB0aGVyZSBpcyBubyBtYXRjaCB3aXRoIGFuIGVudHJ5IGluIHRoZSBbYGFjcGk6OklkVGFibGVgXS5cbi0gICAgZm4gYWNwaV9pZF9pbmZvKGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cdTAwM2Uge1xuLSAgICAgICAgI1tjZmcobm90KENPTkZJR19BQ1BJKSldXG4tICAgICAgICB7XG4tICAgICAgICAgICAgbGV0IF8gPSBkZXY7XG4tICAgICAgICAgICAgTm9uZVxuLSAgICAgICAgfVxuLVxuLSAgICAgICAgI1tjZmcoQ09ORklHX0FDUEkpXVxuLSAgICAgICAge1xuLSAgICAgICAgICAgIGxldCB0YWJsZSA9IFNlbGY6OmFjcGlfaWRfdGFibGUoKT87XG4tXG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxuLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCdzIHZhbGlkIGZvciByZWFkLFxuLSAgICAgICAgICAgIC8vIC0gYGRldmAgaXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB3aGlsZSBpdCdzIGFsaXZlLCBhbmQgc28gaXMgYGRldi5hc19yYXcoKWAuXG4tICAgICAgICAgICAgbGV0IHJhd19pZCA9IHVuc2FmZSB7IGJpbmRpbmdzOjphY3BpX21hdGNoX2RldmljZSh0YWJsZS5hc19wdHIoKSwgZGV2LmFzX3JhdygpKSB9O1xuLVxuLSAgICAgICAgICAgIGlmIHJhd19pZC5pc19udWxsKCkge1xuLSAgICAgICAgICAgICAgICBOb25lXG4tICAgICAgICAgICAgfSBlbHNlIHtcbi0gICAgICAgICAgICAgICAgLy8gU0FGRVRZOiBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudCldYCB3cmFwcGVyIG9mIGBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWRgXG4tICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCdzIHNhZmUgdG8gdHJhbnNtdXRlLlxuLSAgICAgICAgICAgICAgICBsZXQgaWQgPSB1bnNhZmUgeyBcdTAwMjYqcmF3X2lkLmNhc3Q6Olx1MDAzY2FjcGk6OkRldmljZUlkXHUwMDNlKCkgfTtcbi1cbi0gICAgICAgICAgICAgICAgU29tZSh0YWJsZS5pbmZvKFx1MDAzY2FjcGk6OkRldmljZUlkIGFzIGNyYXRlOjpkZXZpY2VfaWQ6OlJhd0RldmljZUlkSW5kZXhcdTAwM2U6OmluZGV4KGlkKSkpXG4tICAgICAgICAgICAgfVxuLSAgICAgICAgfVxuLSAgICB9XG4tXG4gICAgIC8vLyBUaGUgW2BvZjo6SWRUYWJsZWBdIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlci5cbiAgICAgZm4gb2ZfaWRfdGFibGUoKSAtXHUwMDNlIE9wdGlvblx1MDAzY29mOjpJZFRhYmxlXHUwMDNjU2VsZjo6SWRJbmZvXHUwMDNlXHUwMDNlO1xuIFxuLSAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBbYG9mOjpJZFRhYmxlYF0sIGlmIGFueS5cbi0gICAgLy8vXG4tICAgIC8vLyBJZiB0aGlzIHJldHVybnMgYE5vbmVgLCBpdCBtZWFucyB0aGVyZSBpcyBubyBtYXRjaCB3aXRoIGFuIGVudHJ5IGluIHRoZSBbYG9mOjpJZFRhYmxlYF0uXG4tICAgIGZuIG9mX2lkX2luZm8oZGV2OiBcdTAwMjZkZXZpY2U6OkRldmljZSkgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYnc3RhdGljIFNlbGY6OklkSW5mb1x1MDAzZSB7XG4tICAgICAgICBsZXQgdGFibGUgPSBTZWxmOjpvZl9pZF90YWJsZSgpPztcbi1cbi0gICAgICAgICNbY2ZnKG5vdChhbnkoQ09ORklHX09GLCBDT05GSUdfQUNQSSkpKV1cbi0gICAgICAgIHtcbi0gICAgICAgICAgICBsZXQgXyA9IChkZXYsIHRhYmxlKTtcbi0gICAgICAgIH1cbi1cbi0gICAgICAgICNbY2ZnKENPTkZJR19PRildXG4tICAgICAgICB7XG4tICAgICAgICAgICAgLy8gU0FGRVRZOlxuLSAgICAgICAgICAgIC8vIC0gYHRhYmxlYCBoYXMgc3RhdGljIGxpZmV0aW1lLCBoZW5jZSBpdCdzIHZhbGlkIGZvciByZWFkLFxuLSAgICAgICAgICAgIC8vIC0gYGRldmAgaXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB3aGlsZSBpdCdzIGFsaXZlLCBhbmQgc28gaXMgYGRldi5hc19yYXcoKWAuXG4tICAgICAgICAgICAgbGV0IHJhd19pZCA9IHVuc2FmZSB7IGJpbmRpbmdzOjpvZl9tYXRjaF9kZXZpY2UodGFibGUuYXNfcHRyKCksIGRldi5hc19yYXcoKSkgfTtcbi1cbi0gICAgICAgICAgICBpZiAhcmF3X2lkLmlzX251bGwoKSB7XG4tICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogYERldmljZUlkYCBpcyBhIGAjW3JlcHIodHJhbnNwYXJlbnQpXWAgd3JhcHBlciBvZiBgc3RydWN0IG9mX2RldmljZV9pZGBcbi0gICAgICAgICAgICAgICAgLy8gYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXG4tICAgICAgICAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7IFx1MDAyNipyYXdfaWQuY2FzdDo6XHUwMDNjb2Y6OkRldmljZUlkXHUwMDNlKCkgfTtcbi1cbi0gICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUodGFibGUuaW5mbyhcbi0gICAgICAgICAgICAgICAgICAgIFx1MDAzY29mOjpEZXZpY2VJZCBhcyBjcmF0ZTo6ZGV2aWNlX2lkOjpSYXdEZXZpY2VJZEluZGV4XHUwMDNlOjppbmRleChpZCksXG4tICAgICAgICAgICAgICAgICkpO1xuLSAgICAgICAgICAgIH1cbi0gICAgICAgIH1cbi1cbi0gICAgICAgICNbY2ZnKENPTkZJR19BQ1BJKV1cbi0gICAgICAgIHtcbi0gICAgICAgICAgICB1c2UgY29yZTo6cHRyO1xuLSAgICAgICAgICAgIHVzZSBkZXZpY2U6OnByb3BlcnR5OjpGd05vZGU7XG4tXG4tICAgICAgICAgICAgbGV0IG11dCByYXdfaWQgPSBwdHI6Om51bGwoKTtcbi1cbi0gICAgICAgICAgICBsZXQgZndub2RlID0gZGV2LmZ3bm9kZSgpLm1hcF9vcihwdHI6Om51bGxfbXV0KCksIEZ3Tm9kZTo6YXNfcmF3KTtcbi1cbi0gICAgICAgICAgICAvLyBTQUZFVFk6IGBmd25vZGVgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkIGBmd25vZGVfaGFuZGxlYC4gQSBudWxsIHBvaW50ZXIgd2lsbCBiZVxuLSAgICAgICAgICAgIC8vIHBhc3NlZCB0aHJvdWdoIHRoZSBmdW5jdGlvbi5cbi0gICAgICAgICAgICBsZXQgYWRldiA9IHVuc2FmZSB7IGJpbmRpbmdzOjp0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkgfTtcbi1cbi0gICAgICAgICAgICAvLyBTQUZFVFk6XG4tICAgICAgICAgICAgLy8gLSBgYWRldmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBhY3BpX2RldmljZWAgb3IgaXMgbnVsbC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZVxuLSAgICAgICAgICAgIC8vICAgdmFsaWQgYXMgbG9uZyBhcyBgZGV2YCBpcyBhbGl2ZS5cbi0gICAgICAgICAgICAvLyAtIGB0YWJsZWAgaGFzIHN0YXRpYyBsaWZldGltZSwgaGVuY2UgaXQncyB2YWxpZCBmb3IgcmVhZC5cbi0gICAgICAgICAgICBpZiB1bnNhZmUgeyBhY3BpX29mX21hdGNoX2RldmljZShhZGV2LCB0YWJsZS5hc19wdHIoKSwgXHUwMDI2cmF3IG11dCByYXdfaWQpIH0ge1xuLSAgICAgICAgICAgICAgICAvLyBTQUZFVFk6XG4tICAgICAgICAgICAgICAgIC8vIC0gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlcmVmb3JlIGByYXdfaWRgIGhhcyBiZWVuIHNldCB0byBhIHBvaW50ZXIgdG8gYVxuLSAgICAgICAgICAgICAgICAvLyAgIHZhbGlkIGBvZl9kZXZpY2VfaWRgLlxuLSAgICAgICAgICAgICAgICAvLyAtIGBEZXZpY2VJZGAgaXMgYSBgI1tyZXByKHRyYW5zcGFyZW50KV1gIHdyYXBwZXIgb2YgYHN0cnVjdCBvZl9kZXZpY2VfaWRgXG4tICAgICAgICAgICAgICAgIC8vICAgYW5kIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXG4tICAgICAgICAgICAgICAgIGxldCBpZCA9IHVuc2FmZSB7IFx1MDAyNipyYXdfaWQuY2FzdDo6XHUwMDNjb2Y6OkRldmljZUlkXHUwMDNlKCkgfTtcbi1cbi0gICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUodGFibGUuaW5mbyhcbi0gICAgICAgICAgICAgICAgICAgIFx1MDAzY29mOjpEZXZpY2VJZCBhcyBjcmF0ZTo6ZGV2aWNlX2lkOjpSYXdEZXZpY2VJZEluZGV4XHUwMDNlOjppbmRleChpZCksXG4tICAgICAgICAgICAgICAgICkpO1xuLSAgICAgICAgICAgIH1cbi0gICAgICAgIH1cbi1cbi0gICAgICAgIE5vbmVcbi0gICAgfVxuLVxuICAgICAvLy8gUmV0dXJucyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIGZyb20gdGhlIG1hdGNoaW5nIGVudHJ5IG9mIGFueSBvZiB0aGUgSUQgdGFibGVzLCBpZiBhbnkuXG4gICAgIC8vL1xuICAgICAvLy8gSWYgdGhpcyByZXR1cm5zIGBOb25lYCwgaXQgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBtYXRjaCBpbiBhbnkgb2YgdGhlIElEIHRhYmxlcyBkaXJlY3RseVxuICAgICAvLy8gYXNzb2NpYXRlZCB3aXRoIGEgW2BkZXZpY2U6OkRldmljZWBdLlxuLSAgICBmbiBpZF9pbmZvKGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cdTAwM2Uge1xuLSAgICAgICAgbGV0IGlkID0gU2VsZjo6YWNwaV9pZF9pbmZvKGRldik7XG4tICAgICAgICBpZiBpZC5pc19zb21lKCkge1xuLSAgICAgICAgICAgIHJldHVybiBpZDtcbi0gICAgICAgIH1cbi1cbi0gICAgICAgIGxldCBpZCA9IFNlbGY6Om9mX2lkX2luZm8oZGV2KTtcbi0gICAgICAgIGlmIGlkLmlzX3NvbWUoKSB7XG4tICAgICAgICAgICAgcmV0dXJuIGlkO1xuLSAgICAgICAgfVxuLVxuLSAgICAgICAgTm9uZVxuKyAgICAvLy9cbisgICAgLy8vICMgU2FmZXR5XG4rICAgIC8vL1xuKyAgICAvLy8gVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IHRoZSBgZGV2YCBtYXRjaGVkIGRhdGEgaXMgb2YgdHlwZSBgU2VsZjo6SWRJbmZvYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBpZF9pbmZvKGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2UpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2J3N0YXRpYyBTZWxmOjpJZEluZm9cdTAwM2Uge1xuKyAgICAgICAgLy8gU0FGRVRZOiBgZGV2YCBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHdoaWxlIGl0J3MgYWxpdmUsIGFuZCBzbyBpcyBgZGV2LmFzX3JhdygpYC5cbisgICAgICAgIGxldCBkYXRhID0gdW5zYWZlIHsgYmluZGluZ3M6OmRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYuYXNfcmF3KCkpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IFBlciBzYWZldHkgcmVxdWlyZW1lbnQsIGBkYXRhYCBpcyBvZiB0eXBlIGBTZWxmOjpJZEluZm9gLlxuKyAgICAgICAgdW5zYWZlIHsgZGF0YS5jYXN0OjpcdTAwM2NTZWxmOjpJZEluZm9cdTAwM2UoKS5hc19yZWYoKSB9XG4gICAgIH1cbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzXG5pbmRleCA2MjRiOTcxY2E4YjBiMi4uMmQyMTkxMTY0ZTI1MmMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9pMmMucnNcbisrKyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuQEAgLTY1LDEwICs2NSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2RhdGFgIGZpZWxkLlxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9IGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6aTJjX2RldmljZV9pZCwgZHJpdmVyX2RhdGEpO1xuLVxuLSAgICBmbiBpbmRleChcdTAwMjZzZWxmKSAtXHUwMDNlIHVzaXplIHtcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfZGF0YVxuLSAgICB9XG4gfVxuIFxuIC8vLyBJZFRhYmxlIHR5cGUgZm9yIEkyQ1xuQEAgLTc3LDE0ICs3Myw4IEBAIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuIC8vLyBDcmVhdGUgYSBJMkMgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBpMmNfZGV2aWNlX3RhYmxlIHtcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVx1MDAzZSB7XG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2Ncbi0gICAgICAgICAgICAkY3JhdGU6OmkyYzo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJpMmNcIiwgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7XG4rICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJpMmNcIiwgJGNyYXRlOjppMmM6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG4gXG5AQCAtMTU5LDggKzE0OSwxMCBAQCBleHRlcm4gXCJDXCIgZm4gcHJvYmVfY2FsbGJhY2soaWRldjogKm11dCBiaW5kaW5nczo6aTJjX2NsaWVudCkgLVx1MDAzZSBrZXJuZWw6OmZmaTo6Y19cbiAgICAgICAgIC8vIElOVkFSSUFOVDogYGlkZXZgIGlzIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYHByb2JlX2NhbGxiYWNrKClgLlxuICAgICAgICAgbGV0IGlkZXYgPSB1bnNhZmUgeyBcdTAwMjYqaWRldi5jYXN0OjpcdTAwM2NJMmNDbGllbnRcdTAwM2NkZXZpY2U6OkNvcmVJbnRlcm5hbFx1MDAzYydfXHUwMDNlXHUwMDNlXHUwMDNlKCkgfTtcbiBcbi0gICAgICAgIGxldCBpbmZvID1cbi0gICAgICAgICAgICBTZWxmOjppMmNfaWRfaW5mbyhpZGV2KS5vcl9lbHNlKHx8IFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXHUwMDNlOjppZF9pbmZvKGlkZXYuYXNfcmVmKCkpKTtcbisgICAgICAgIGxldCBpbmZvID0gU2VsZjo6aTJjX2lkX2luZm8oaWRldikub3JfZWxzZSh8fCB7XG4rICAgICAgICAgICAgLy8gU0FGRVRZOiBgaWRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXG4rICAgICAgICAgICAgdW5zYWZlIHsgXHUwMDNjU2VsZiBhcyBkcml2ZXI6OkFkYXB0ZXJcdTAwM2U6OmlkX2luZm8oaWRldi5hc19yZWYoKSkgfVxuKyAgICAgICAgfSk7XG4gXG4gICAgICAgICBmcm9tX3Jlc3VsdCh8fCB7XG4gICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShpZGV2LCBpbmZvKTtcbkBAIC0yMTgsNyArMjEwLDggQEAgZm4gaTJjX2lkX2luZm8oZGV2OiBcdTAwMjZJMmNDbGllbnQpIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2J3N0YXRpYyBcdTAwM2NTZWxmIGFzIGRyaXZlcjo6QWRhcHRlclx1MDAzZTo6SWRcbiAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXG4gICAgICAgICBsZXQgaWQgPSB1bnNhZmUgeyBcdTAwMjYqcmF3X2lkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbiBcbi0gICAgICAgIFNvbWUodGFibGUuaW5mbyhcdTAwM2NEZXZpY2VJZCBhcyBSYXdEZXZpY2VJZEluZGV4XHUwMDNlOjppbmRleChpZCkpKVxuKyAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYHRhYmxlYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XHUwMDNjXywgU2VsZjo6SWRJbmZvXHUwMDNlYC5cbisgICAgICAgIFNvbWUodW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWQ6Olx1MDAzY1Q6OklkSW5mb1x1MDAzZSgpIH0pXG4gICAgIH1cbiB9XG4gXG5AQCAtMjY3LDcgKzI2MCw2IEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfaTJjX2RyaXZlciB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxuIC8vLyAgICAgQUNQSV9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgaTJjOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCJMTlVYQkVFRlwiKSwgKCkpXG5AQCAtMjc2LDcgKzI2OCw2IEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfaTJjX2RyaXZlciB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6aTJjX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBJMkNfVEFCTEUsXG4tLy8vICAgICBNT0RVTEVfSTJDX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgaTJjOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAgKGkyYzo6RGV2aWNlSWQ6Om5ldyhjXCJydXN0X2RyaXZlcl9pMmNcIiksICgpKVxuQEAgLTI4NSw3ICsyNzYsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX2kyY19kcml2ZXIge1xuIC8vL1xuIC8vLyBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBPRl9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAvLy8gICAgIFx1MDAzY015RHJpdmVyIGFzIGkyYzo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gLy8vICAgICBbXG4gLy8vICAgICAgICAgKG9mOjpEZXZpY2VJZDo6bmV3KGNcInRlc3QsZGV2aWNlXCIpLCAoKSlcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuaW5kZXggM2NhOTlkYjVjY2NmMjIuLjFlODZiOTAxYzM5MWJkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuQEAgLTgwMCw2MiArODAwLDYgQEAgY29uc3QgZm4gYXNfaW50KFx1MDAyNnNlbGYpIC1cdTAwM2UgdTMyIHtcbiAvLy8gfVxuIC8vLyAjIH1cbiAvLy8gYGBgXG4tLy8vXG4tLy8vIFRoaXMgZXhwYW5kcyB0byB0aGUgZm9sbG93aW5nIGNvZGU6XG4tLy8vXG4tLy8vIGBgYGlnbm9yZVxuLS8vLyB1c2Uga2VybmVsOjpuZXQ6OnBoeTo6e3NlbGYsIERldmljZUlkfTtcbi0vLy8gdXNlIGtlcm5lbDo6cHJlbHVkZTo6Kjtcbi0vLy9cbi0vLy8gc3RydWN0IE1vZHVsZSB7XG4tLy8vICAgICBfcmVnOiA6Omtlcm5lbDo6bmV0OjpwaHk6OlJlZ2lzdHJhdGlvbixcbi0vLy8gfVxuLS8vL1xuLS8vLyBtb2R1bGUhIHtcbi0vLy8gICAgIHR5cGU6IE1vZHVsZSxcbi0vLy8gICAgIG5hbWU6IFwicnVzdF9zYW1wbGVfcGh5XCIsXG4tLy8vICAgICBhdXRob3JzOiBbXCJSdXN0IGZvciBMaW51eCBDb250cmlidXRvcnNcIl0sXG4tLy8vICAgICBkZXNjcmlwdGlvbjogXCJSdXN0IHNhbXBsZSBQSFlzIGRyaXZlclwiLFxuLS8vLyAgICAgbGljZW5zZTogXCJHUExcIixcbi0vLy8gfVxuLS8vL1xuLS8vLyBzdHJ1Y3QgUGh5U2FtcGxlO1xuLS8vL1xuLS8vLyAjW3Z0YWJsZV1cbi0vLy8gaW1wbCBwaHk6OkRyaXZlciBmb3IgUGh5U2FtcGxlIHtcbi0vLy8gICAgIGNvbnN0IE5BTUU6IFx1MDAyNidzdGF0aWMgQ1N0ciA9IGNcIlBoeVNhbXBsZVwiO1xuLS8vLyAgICAgY29uc3QgUEhZX0RFVklDRV9JRDogcGh5OjpEZXZpY2VJZCA9IHBoeTo6RGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDAwMDAwMSk7XG4tLy8vIH1cbi0vLy9cbi0vLy8gY29uc3QgXzogKCkgPSB7XG4tLy8vICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFs6Omtlcm5lbDo6bmV0OjpwaHk6OkRyaXZlclZUYWJsZTsgMV0gPVxuLS8vLyAgICAgICAgIFs6Omtlcm5lbDo6bmV0OjpwaHk6OmNyZWF0ZV9waHlfZHJpdmVyOjpcdTAwM2NQaHlTYW1wbGVcdTAwM2UoKV07XG4tLy8vXG4tLy8vICAgICBpbXBsIDo6a2VybmVsOjpNb2R1bGUgZm9yIE1vZHVsZSB7XG4tLy8vICAgICAgICAgZm4gaW5pdChtb2R1bGU6IFx1MDAyNidzdGF0aWMgOjprZXJuZWw6OlRoaXNNb2R1bGUpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4tLy8vICAgICAgICAgICAgIGxldCBkcml2ZXJzID0gdW5zYWZlIHsgXHUwMDI2bXV0IERSSVZFUlMgfTtcbi0vLy8gICAgICAgICAgICAgbGV0IG11dCByZWcgPSA6Omtlcm5lbDo6bmV0OjpwaHk6OlJlZ2lzdHJhdGlvbjo6cmVnaXN0ZXIoXG4tLy8vICAgICAgICAgICAgICAgICBtb2R1bGUsXG4tLy8vICAgICAgICAgICAgICAgICA6OmNvcmU6OnBpbjo6UGluOjpzdGF0aWNfbXV0KGRyaXZlcnMpLFxuLS8vLyAgICAgICAgICAgICApPztcbi0vLy8gICAgICAgICAgICAgT2soTW9kdWxlIHsgX3JlZzogcmVnIH0pXG4tLy8vICAgICAgICAgfVxuLS8vLyAgICAgfVxuLS8vLyB9O1xuLS8vL1xuLS8vLyBjb25zdCBOOiB1c2l6ZSA9IDE7XG4tLy8vXG4tLy8vIGNvbnN0IFRBQkxFOiA6Omtlcm5lbDo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjOjprZXJuZWw6Om5ldDo6cGh5OjpEZXZpY2VJZCwgKCksIE5cdTAwM2UgPVxuLS8vLyAgICAgOjprZXJuZWw6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXgoW1xuLS8vLyAgICAgICAgIDo6a2VybmVsOjpuZXQ6OnBoeTo6RGV2aWNlSWQoXG4tLy8vICAgICAgICAgICAgIDo6a2VybmVsOjpiaW5kaW5nczo6bWRpb19kZXZpY2VfaWQge1xuLS8vLyAgICAgICAgICAgICAgICAgcGh5X2lkOiAweDAwMDAwMDAxLFxuLS8vLyAgICAgICAgICAgICAgICAgcGh5X2lkX21hc2s6IDB4ZmZmZmZmZmYsXG4tLy8vICAgICAgICAgICAgIH0pLFxuLS8vLyAgICAgXSk7XG4tLy8vXG4tLy8vIDo6a2VybmVsOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcIm1kaW9cIiwgcGh5ZGV2LCBUQUJMRSk7XG4tLy8vIGBgYFxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG4gICAgIChAcmVwbGFjZV9leHByICRfdDp0dCAkc3ViOmV4cHIpID1cdTAwM2UgeyRzdWJ9O1xuQEAgLTg2NSwxMiArODA5LDEwIEBAIG1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG4gICAgIH07XG4gXG4gICAgIChAZGV2aWNlX3RhYmxlIFskKCRkZXY6ZXhwciksK10pID1cdTAwM2Uge1xuLSAgICAgICAgY29uc3QgTjogdXNpemUgPSAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAY291bnRfZGV2aWNlcyAkKCRkZXYpLCspO1xuLVxuLSAgICAgICAgY29uc3QgVEFCTEU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjJGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsICgpLCBOXHUwMDNlID1cbi0gICAgICAgICAgICAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXgoWyAkKCgkZGV2LCgpKSksKywgXSk7XG4tXG4tICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFwibWRpb1wiLCBwaHlkZXYsIFRBQkxFKTtcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXG4rICAgICAgICAgICAgXCJtZGlvXCIsICRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLFxuKyAgICAgICAgICAgIFRBQkxFLCBAbm9uZSwgWyQoJGRldiksK11cbisgICAgICAgICk7XG4gICAgIH07XG4gXG4gICAgIChkcml2ZXJzOiBbJCgkZHJpdmVyOmlkZW50KSwrICQoLCk/XSwgZGV2aWNlX3RhYmxlOiBbJCgkZGV2OmV4cHIpLCsgJCgsKT9dLCAkKCRmOnR0KSopID1cdTAwM2Uge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29mLnJzIGIvcnVzdC9rZXJuZWwvb2YucnNcbmluZGV4IDU4YjIwYzM2N2Y5OTNmLi5kMDMxOGY2MmFmZDdjOCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL29mLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9vZi5yc1xuQEAgLTI1LDEwICsyNSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZGF0YWAgZmllbGQuXG4gdW5zYWZlIGltcGwgUmF3RGV2aWNlSWRJbmRleCBmb3IgRGV2aWNlSWQge1xuICAgICBjb25zdCBEUklWRVJfREFUQV9PRkZTRVQ6IHVzaXplID0gY29yZTo6bWVtOjpvZmZzZXRfb2YhKGJpbmRpbmdzOjpvZl9kZXZpY2VfaWQsIGRhdGEpO1xuLVxuLSAgICBmbiBpbmRleChcdTAwMjZzZWxmKSAtXHUwMDNlIHVzaXplIHtcbi0gICAgICAgIHNlbGYuMC5kYXRhIGFzIHVzaXplXG4tICAgIH1cbiB9XG4gXG4gaW1wbCBEZXZpY2VJZCB7XG5AQCAtNTMsMTMgKzQ5LDcgQEAgcHViIGNvbnN0IGZuIG5ldyhjb21wYXRpYmxlOiBcdTAwMjYnc3RhdGljIENTdHIpIC1cdTAwM2UgU2VsZiB7XG4gLy8vIENyZWF0ZSBhbiBPRiBgSWRUYWJsZWAgd2l0aCBhbiBcImFsaWFzXCIgZm9yIG1vZHBvc3QuXG4gI1ttYWNyb19leHBvcnRdXG4gbWFjcm9fcnVsZXMhIG9mX2RldmljZV90YWJsZSB7XG4tICAgICgkdGFibGVfbmFtZTppZGVudCwgJG1vZHVsZV90YWJsZV9uYW1lOmlkZW50LCAkaWRfaW5mb190eXBlOiB0eSwgJHRhYmxlX2RhdGE6IGV4cHIpID1cdTAwM2Uge1xuLSAgICAgICAgY29uc3QgJHRhYmxlX25hbWU6ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5XHUwMDNjXG4tICAgICAgICAgICAgJGNyYXRlOjpvZjo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJvZlwiLCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcbisgICAgKCQoJHR0OnR0KSopID1cdTAwM2Uge1xuKyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcIm9mXCIsICRjcmF0ZTo6b2Y6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uOTI1Y2YyODBkYWUyYTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTExMCw3ICsxMTAsMTEgQEAgZXh0ZXJuIFwiQ1wiIGZuIHByb2JlX2NhbGxiYWNrKFxuICAgICAgICAgLy8gU0FGRVRZOiBgRGV2aWNlSWRgIGlzIGEgYCNbcmVwcih0cmFuc3BhcmVudCldYCB3cmFwcGVyIG9mIGBzdHJ1Y3QgcGNpX2RldmljZV9pZGAgYW5kXG4gICAgICAgICAvLyBkb2VzIG5vdCBhZGQgYWRkaXRpb25hbCBpbnZhcmlhbnRzLCBzbyBpdCdzIHNhZmUgdG8gdHJhbnNtdXRlLlxuICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KmlkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbi0gICAgICAgIGxldCBpbmZvID0gVDo6SURfVEFCTEUuaW5mbyhpZC5pbmRleCgpKTtcbitcbisgICAgICAgIC8vIFNBRkVUWTogYGlkYCBjb21lcyBmcm9tIGBUOjpJRF9UQUJMRWAgd2hpY2ggaXMgb2YgdHlwZSBgSWRBcnJheVx1MDAzY18sIFQ6OklkSW5mb1x1MDAzZWAgb3JcbisgICAgICAgIC8vIGBwY2lfZGV2aWNlX2lkX2FueWAgd2hpY2ggaGFzIDAgYXMgZHJpdmVyX2RhdGEuIEl0IGNhbiBhbHNvIGNvbWUgZnJvbSBkeW5hbWljIElEcywgd2hpY2hcbisgICAgICAgIC8vIHdpbGwgZW5zdXJlIHRoYXQgYGRyaXZlcl9kYXRhYCBleGlzdHMgaW4gYFQ6OklEX1RBQkxFYC5cbisgICAgICAgIGxldCBpbmZvID0gdW5zYWZlIHsgaWQuaW5mb191bmNoZWNrZWRfb3B0OjpcdTAwM2NUOjpJZEluZm9cdTAwM2UoKSB9O1xuIFxuICAgICAgICAgZnJvbV9yZXN1bHQofHwge1xuICAgICAgICAgICAgIGxldCBkYXRhID0gVDo6cHJvYmUocGRldiwgaW5mbyk7XG5AQCAtMjMzLDEwICsyMzcsNiBAQCB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZCBmb3IgRGV2aWNlSWQge1xuIC8vIFNBRkVUWTogYERSSVZFUl9EQVRBX09GRlNFVGAgaXMgdGhlIG9mZnNldCB0byB0aGUgYGRyaXZlcl9kYXRhYCBmaWVsZC5cbiB1bnNhZmUgaW1wbCBSYXdEZXZpY2VJZEluZGV4IGZvciBEZXZpY2VJZCB7XG4gICAgIGNvbnN0IERSSVZFUl9EQVRBX09GRlNFVDogdXNpemUgPSBjb3JlOjptZW06Om9mZnNldF9vZiEoYmluZGluZ3M6OnBjaV9kZXZpY2VfaWQsIGRyaXZlcl9kYXRhKTtcbi1cbi0gICAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4tICAgICAgICBzZWxmLjAuZHJpdmVyX2RhdGFcbi0gICAgfVxuIH1cbiBcbiAvLy8gYElkVGFibGVgIHR5cGUgZm9yIFBDSS5cbkBAIC0yNDUsMTQgKzI0NSw4IEBAIGZuIGluZGV4KFx1MDAyNnNlbGYpIC1cdTAwM2UgdXNpemUge1xuIC8vLyBDcmVhdGUgYSBQQ0kgYElkVGFibGVgIHdpdGggaXRzIGFsaWFzIGZvciBtb2Rwb3N0LlxuICNbbWFjcm9fZXhwb3J0XVxuIG1hY3JvX3J1bGVzISBwY2lfZGV2aWNlX3RhYmxlIHtcbi0gICAgKCR0YWJsZV9uYW1lOmlkZW50LCAkbW9kdWxlX3RhYmxlX25hbWU6aWRlbnQsICRpZF9pbmZvX3R5cGU6IHR5LCAkdGFibGVfZGF0YTogZXhwcikgPVx1MDAzZSB7XG4tICAgICAgICBjb25zdCAkdGFibGVfbmFtZTogJGNyYXRlOjpkZXZpY2VfaWQ6OklkQXJyYXlcdTAwM2Ncbi0gICAgICAgICAgICAkY3JhdGU6OnBjaTo6RGV2aWNlSWQsXG4tICAgICAgICAgICAgJGlkX2luZm9fdHlwZSxcbi0gICAgICAgICAgICB7ICR0YWJsZV9kYXRhLmxlbigpIH0sXG4tICAgICAgICBcdTAwM2UgPSAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheTo6bmV3KCR0YWJsZV9kYXRhKTtcbi1cbi0gICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJwY2lcIiwgJG1vZHVsZV90YWJsZV9uYW1lLCAkdGFibGVfbmFtZSk7XG4rICAgICgkKCR0dDp0dCkqKSA9XHUwMDNlIHtcbisgICAgICAgICRjcmF0ZTo6bW9kdWxlX2RldmljZV90YWJsZSEoXCJwY2lcIiwgJGNyYXRlOjpwY2k6OkRldmljZUlkLCAkKCR0dCkqKTtcbiAgICAgfTtcbiB9XG4gXG5AQCAtMjY3LDcgKzI2MSw2IEBAIG1hY3JvX3J1bGVzISBwY2lfZGV2aWNlX3RhYmxlIHtcbiAvLy9cbiAvLy8ga2VybmVsOjpwY2lfZGV2aWNlX3RhYmxlIShcbiAvLy8gICAgIFBDSV9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9QQ0lfVEFCTEUsXG4gLy8vICAgICBcdTAwM2NNeURyaXZlciBhcyBwY2k6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgIChcbkBAIC0yODQsNyArMjc3LDcgQEAgbWFjcm9fcnVsZXMhIHBjaV9kZXZpY2VfdGFibGUge1xuIC8vL1xuIC8vLyAgICAgZm4gcHJvYmVcdTAwM2MnYm91bmRcdTAwM2UoXG4gLy8vICAgICAgICAgX3BkZXY6IFx1MDAyNidib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MnX1x1MDAzZVx1MDAzZSxcbi0vLy8gICAgICAgICBfaWRfaW5mbzogXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcbisvLy8gICAgICAgICBfaWRfaW5mbzogT3B0aW9uXHUwMDNjXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mb1x1MDAzZSxcbiAvLy8gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZCB7XG4gLy8vICAgICAgICAgRXJyKEVOT0RFVilcbiAvLy8gICAgIH1cbkBAIC0zMTMsNyArMzA2LDcgQEAgcHViIHRyYWl0IERyaXZlciB7XG4gICAgIC8vLyBhdHRlbXB0IHRvIGluaXRpYWxpemUgdGhlIGRldmljZSBoZXJlLlxuICAgICBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgIGRldjogXHUwMDI2J2JvdW5kIERldmljZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYydfXHUwMDNlXHUwMDNlLFxuLSAgICAgICAgaWRfaW5mbzogXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcbisgICAgICAgIGlkX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZDtcbiBcbiAgICAgLy8vIFBDSSBkcml2ZXIgdW5iaW5kLlxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbmluZGV4IDliMzYyZTA0OTVkMzIzLi5lMTJlODgxMTNjYTVkMiAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuQEAgLTEwMCw3ICsxMDAsOCBAQCBleHRlcm4gXCJDXCIgZm4gcHJvYmVfY2FsbGJhY2socGRldjogKm11dCBiaW5kaW5nczo6cGxhdGZvcm1fZGV2aWNlKSAtXHUwMDNlIGtlcm5lbDo6ZmZcbiAgICAgICAgIC8vXG4gICAgICAgICAvLyBJTlZBUklBTlQ6IGBwZGV2YCBpcyB2YWxpZCBmb3IgdGhlIGR1cmF0aW9uIG9mIGBwcm9iZV9jYWxsYmFjaygpYC5cbiAgICAgICAgIGxldCBwZGV2ID0gdW5zYWZlIHsgXHUwMDI2KnBkZXYuY2FzdDo6XHUwMDNjRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlSW50ZXJuYWxcdTAwM2MnX1x1MDAzZVx1MDAzZVx1MDAzZSgpIH07XG4tICAgICAgICBsZXQgaW5mbyA9IFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXHUwMDNlOjppZF9pbmZvKHBkZXYuYXNfcmVmKCkpO1xuKyAgICAgICAgLy8gU0FGRVRZOiBgcGRldmAgbWF0Y2hlZCBkYXRhIGlzIG9mIHR5cGUgYFNlbGY6OklkSW5mb2AuXG4rICAgICAgICBsZXQgaW5mbyA9IHVuc2FmZSB7IFx1MDAzY1NlbGYgYXMgZHJpdmVyOjpBZGFwdGVyXHUwMDNlOjppZF9pbmZvKHBkZXYuYXNfcmVmKCkpIH07XG4gXG4gICAgICAgICBmcm9tX3Jlc3VsdCh8fCB7XG4gICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShwZGV2LCBpbmZvKTtcbkBAIC0xNzYsNyArMTc3LDYgQEAgbWFjcm9fcnVsZXMhIG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIge1xuIC8vL1xuIC8vLyBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gLy8vICAgICBPRl9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAvLy8gICAgIFx1MDAzY015RHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAvLy8gICAgIFtcbiAvLy8gICAgICAgICAob2Y6OkRldmljZUlkOjpuZXcoY1widGVzdCxkZXZpY2VcIiksICgpKVxuQEAgLTE4NSw3ICsxODUsNiBAQCBtYWNyb19ydWxlcyEgbW9kdWxlX3BsYXRmb3JtX2RyaXZlciB7XG4gLy8vXG4gLy8vIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxuIC8vLyAgICAgQUNQSV9UQUJMRSxcbi0vLy8gICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuIC8vLyAgICAgXHUwMDNjTXlEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuIC8vLyAgICAgW1xuIC8vLyAgICAgICAgIChhY3BpOjpEZXZpY2VJZDo6bmV3KGNcIkxOVVhCRUVGXCIpLCAoKSlcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnNcbmluZGV4IDdhZmYwYzgyZDBhZmMwLi5hZWM3ZGNlMDQ5NTUzMiAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3VzYi5yc1xuKysrIGIvcnVzdC9rZXJuZWwvdXNiLnJzXG5AQCAtODksNyArODksMTAgQEAgZXh0ZXJuIFwiQ1wiIGZuIHByb2JlX2NhbGxiYWNrKFxuICAgICAgICAgICAgIC8vIGRvZXMgbm90IGFkZCBhZGRpdGlvbmFsIGludmFyaWFudHMsIHNvIGl0J3Mgc2FmZSB0byB0cmFuc211dGUuXG4gICAgICAgICAgICAgbGV0IGlkID0gdW5zYWZlIHsgXHUwMDI2KmlkLmNhc3Q6Olx1MDAzY0RldmljZUlkXHUwMDNlKCkgfTtcbiBcbi0gICAgICAgICAgICBsZXQgaW5mbyA9IFQ6OklEX1RBQkxFLmluZm8oaWQuaW5kZXgoKSk7XG4rICAgICAgICAgICAgLy8gU0FGRVRZOiBgaWRgIGNvbWVzIGZyb20gYFQ6OklEX1RBQkxFYCB3aGljaCBpcyBvZiB0eXBlIGBJZEFycmF5XHUwMDNjXywgVDo6SWRJbmZvXHUwMDNlYC4gSXRcbisgICAgICAgICAgICAvLyBjYW4gYWxzbyBjb21lIGZyb20gZHluYW1pYyBJRHMsIHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgYGRyaXZlcl9kYXRhYCBleGlzdHMgaW5cbisgICAgICAgICAgICAvLyBgVDo6SURfVEFCTEVgIG9yIGlzIDAuXG4rICAgICAgICAgICAgbGV0IGluZm8gPSB1bnNhZmUgeyBpZC5pbmZvX3VuY2hlY2tlZF9vcHQ6Olx1MDAzY1Q6OklkSW5mb1x1MDAzZSgpIH07XG4gICAgICAgICAgICAgbGV0IGRhdGEgPSBUOjpwcm9iZShpbnRmLCBpZCwgaW5mbyk7XG4gXG4gICAgICAgICAgICAgbGV0IGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVJbnRlcm5hbFx1MDAzYydfXHUwMDNlXHUwMDNlID0gaW50Zi5hc19yZWYoKTtcbkBAIC0yNDIsMTAgKzI0NSw2IEBAIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkIGZvciBEZXZpY2VJZCB7XG4gLy8gU0FGRVRZOiBgRFJJVkVSX0RBVEFfT0ZGU0VUYCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBgZHJpdmVyX2luZm9gIGZpZWxkLlxuIHVuc2FmZSBpbXBsIFJhd0RldmljZUlkSW5kZXggZm9yIERldmljZUlkIHtcbiAgICAgY29uc3QgRFJJVkVSX0RBVEFfT0ZGU0VUOiB1c2l6ZSA9IGNvcmU6Om1lbTo6b2Zmc2V0X29mIShiaW5kaW5nczo6dXNiX2RldmljZV9pZCwgZHJpdmVyX2luZm8pO1xuLVxuLSAgICBmbiBpbmRleChcdTAwMjZzZWxmKSAtXHUwMDNlIHVzaXplIHtcbi0gICAgICAgIHNlbGYuMC5kcml2ZXJfaW5mb1xuLSAgICB9XG4gfVxuIFxuIC8vLyBbYElkVGFibGVgXShrZXJuZWw6OmRldmljZV9pZDo6SWRUYWJsZSkgdHlwZSBmb3IgVVNCLlxuQEAgLTI1NCwxNCArMjUzLDggQEAgZm4gaW5kZXgoXHUwMDI2c2VsZikgLVx1MDAzZSB1c2l6ZSB7XG4gLy8vIENyZWF0ZSBhIFVTQiBgSWRUYWJsZWAgd2l0aCBpdHMgYWxpYXMgZm9yIG1vZHBvc3QuXG4gI1ttYWNyb19leHBvcnRdXG4gbWFjcm9fcnVsZXMhIHVzYl9kZXZpY2VfdGFibGUge1xuLSAgICAoJHRhYmxlX25hbWU6aWRlbnQsICRtb2R1bGVfdGFibGVfbmFtZTppZGVudCwgJGlkX2luZm9fdHlwZTogdHksICR0YWJsZV9kYXRhOiBleHByKSA9XHUwMDNlIHtcbi0gICAgICAgIGNvbnN0ICR0YWJsZV9uYW1lOiAkY3JhdGU6OmRldmljZV9pZDo6SWRBcnJheVx1MDAzY1xuLSAgICAgICAgICAgICRjcmF0ZTo6dXNiOjpEZXZpY2VJZCxcbi0gICAgICAgICAgICAkaWRfaW5mb190eXBlLFxuLSAgICAgICAgICAgIHsgJHRhYmxlX2RhdGEubGVuKCkgfSxcbi0gICAgICAgIFx1MDAzZSA9ICRjcmF0ZTo6ZGV2aWNlX2lkOjpJZEFycmF5OjpuZXcoJHRhYmxlX2RhdGEpO1xuLVxuLSAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcInVzYlwiLCAkbW9kdWxlX3RhYmxlX25hbWUsICR0YWJsZV9uYW1lKTtcbisgICAgKCQoJHR0OnR0KSopID1cdTAwM2Uge1xuKyAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcInVzYlwiLCAkY3JhdGU6OnVzYjo6RGV2aWNlSWQsICQoJHR0KSopO1xuICAgICB9O1xuIH1cbiBcbkBAIC0yNzcsNyArMjcwLDYgQEAgbWFjcm9fcnVsZXMhIHVzYl9kZXZpY2VfdGFibGUge1xuIC8vL1xuIC8vLyBrZXJuZWw6OnVzYl9kZXZpY2VfdGFibGUhKFxuIC8vLyAgICAgVVNCX1RBQkxFLFxuLS8vLyAgICAgTU9EVUxFX1VTQl9UQUJMRSxcbiAvLy8gICAgIFx1MDAzY015RHJpdmVyIGFzIHVzYjo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gLy8vICAgICBbXG4gLy8vICAgICAgICAgKHVzYjo6RGV2aWNlSWQ6OmZyb21faWQoMHgxMjM0LCAweDU2NzgpLCAoKSksXG5AQCAtMjkzLDcgKzI4NSw3IEBAIG1hY3JvX3J1bGVzISB1c2JfZGV2aWNlX3RhYmxlIHtcbiAvLy8gICAgIGZuIHByb2JlXHUwMDNjJ2JvdW5kXHUwMDNlKFxuIC8vLyAgICAgICAgIF9pbnRlcmZhY2U6IFx1MDAyNidib3VuZCB1c2I6OkludGVyZmFjZVx1MDAzY0NvcmVcdTAwM2MnX1x1MDAzZVx1MDAzZSxcbiAvLy8gICAgICAgICBfaWQ6IFx1MDAyNnVzYjo6RGV2aWNlSWQsXG4tLy8vICAgICAgICAgX2luZm86IFx1MDAyNidib3VuZCBTZWxmOjpJZEluZm8sXG4rLy8vICAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gLy8vICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZjo6RGF0YVx1MDAzYydib3VuZFx1MDAzZSwgRXJyb3JcdTAwM2UgKyAnYm91bmQge1xuIC8vLyAgICAgICAgIEVycihFTk9ERVYpXG4gLy8vICAgICB9XG5AQCAtMzIyLDcgKzMxNCw3IEBAIHB1YiB0cmFpdCBEcml2ZXIge1xuICAgICBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgIGludGVyZmFjZTogXHUwMDI2J2JvdW5kIEludGVyZmFjZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYydfXHUwMDNlXHUwMDNlLFxuICAgICAgICAgaWQ6IFx1MDAyNkRldmljZUlkLFxuLSAgICAgICAgaWRfaW5mbzogXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcbisgICAgICAgIGlkX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZDtcbiBcbiAgICAgLy8vIFVTQiBkcml2ZXIgZGlzY29ubmVjdC5cbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5yc1xuaW5kZXggMWY1OWUwOGFhYTRiMGQuLjE4MWZkOThhZTViNjYzIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5yc1xuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5yc1xuQEAgLTExMCw3ICsxMTAsNiBAQCBmbiBmcm9tX3N0cihzOiBcdTAwMjZzdHIpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG4gXG4ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXG4gICAgIEFDUElfVEFCTEUsXG4tICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuICAgICBcdTAwM2NSdXN0RGVidWdGcyBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCJMTlVYQkVFRlwiKSwgKCkpXVxuICk7XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzXG5pbmRleCA1MDQ2YjQ2MjhkMGUyOS4uODBjMzA5Y2UwN2U5M2UgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnNcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RtYS5yc1xuQEAgLTUxLDcgKzUxLDYgQEAgdW5zYWZlIGltcGwga2VybmVsOjp0cmFuc211dGU6OkZyb21CeXRlcyBmb3IgTXlTdHJ1Y3Qge31cbiBcbiBrZXJuZWw6OnBjaV9kZXZpY2VfdGFibGUhKFxuICAgICBQQ0lfVEFCTEUsXG4tICAgIE1PRFVMRV9QQ0lfVEFCTEUsXG4gICAgIFx1MDAzY0RtYVNhbXBsZURyaXZlciBhcyBwY2k6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKHBjaTo6RGV2aWNlSWQ6OmZyb21faWQocGNpOjpWZW5kb3I6OlJFREhBVCwgMHg1KSwgKCkpXVxuICk7XG5AQCAtNjMsNyArNjIsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBEbWFTYW1wbGVEcml2ZXIge1xuIFxuICAgICBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgIHBkZXY6IFx1MDAyNidib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MnX1x1MDAzZVx1MDAzZSxcbi0gICAgICAgIF9pbmZvOiBcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvLFxuKyAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSArICdib3VuZCB7XG4gICAgICAgICBwaW5faW5pdDo6cGluX2luaXRfc2NvcGUobW92ZSB8fCB7XG4gICAgICAgICAgICAgZGV2X2luZm8hKHBkZXYsIFwiUHJvYmUgRE1BIHRlc3QgZHJpdmVyLlxcblwiKTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc1xuaW5kZXggMmMxMzUxMDQwZTQ1ZTUuLjcwNDU2N2EwNzJiYWMzIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc1xuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc1xuQEAgLTI0LDcgKzI0LDYgQEBcbiBcbiBrZXJuZWw6OmF1eGlsaWFyeV9kZXZpY2VfdGFibGUhKFxuICAgICBBVVhfVEFCTEUsXG4tICAgIE1PRFVMRV9BVVhfVEFCTEUsXG4gICAgIFx1MDAzY0F1eGlsaWFyeURyaXZlciBhcyBhdXhpbGlhcnk6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKGF1eGlsaWFyeTo6RGV2aWNlSWQ6Om5ldyhNT0RVTEVfTkFNRSwgQVVYSUxJQVJZX05BTUUpLCAoKSldXG4gKTtcbkBAIC02Niw3ICs2NSw2IEBAIHN0cnVjdCBQYXJlbnREYXRhXHUwMDNjJ2JvdW5kXHUwMDNlIHtcbiBcbiBrZXJuZWw6OnBjaV9kZXZpY2VfdGFibGUhKFxuICAgICBQQ0lfVEFCTEUsXG4tICAgIE1PRFVMRV9QQ0lfVEFCTEUsXG4gICAgIFx1MDAzY1BhcmVudERyaXZlciBhcyBwY2k6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKHBjaTo6RGV2aWNlSWQ6OmZyb21faWQocGNpOjpWZW5kb3I6OlJFREhBVCwgMHg1KSwgKCkpXVxuICk7XG5AQCAtNzksNyArNzcsNyBAQCBpbXBsIHBjaTo6RHJpdmVyIGZvciBQYXJlbnREcml2ZXIge1xuIFxuICAgICBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgIHBkZXY6IFx1MDAyNidib3VuZCBwY2k6OkRldmljZVx1MDAzY0NvcmVcdTAwM2MnX1x1MDAzZVx1MDAzZSxcbi0gICAgICAgIF9pbmZvOiBcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvLFxuKyAgICAgICAgX2luZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZCB7XG4gICAgICAgICBPayhQYXJlbnREYXRhIHtcbiAgICAgICAgICAgICAvLyBTQUZFVFk6IGBQYXJlbnREYXRhYCBpcyB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhLCB3aGljaCBpcyBkcm9wcGVkIHdoZW4gdGhlXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbmluZGV4IGVhZDgyNjNhN2Q0ODlhLi5hMGRmMGM2MDk3YzRmNSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnNcbkBAIC0xNCwyMSArMTQsMTggQEBcbiBcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlISB7XG4gICAgIEFDUElfVEFCTEUsXG4tICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuICAgICBcdTAwM2NTYW1wbGVEcml2ZXIgYXMgaTJjOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGNcIkxOVVhCRUVGXCIpLCAwKV1cbiB9XG4gXG4ga2VybmVsOjppMmNfZGV2aWNlX3RhYmxlISB7XG4gICAgIEkyQ19UQUJMRSxcbi0gICAgTU9EVUxFX0kyQ19UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIGkyYzo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoaTJjOjpEZXZpY2VJZDo6bmV3KGNcInJ1c3RfZHJpdmVyX2kyY1wiKSwgMCldXG4gfVxuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlISB7XG4gICAgIE9GX1RBQkxFLFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyBpMmM6OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcInRlc3QscnVzdF9kcml2ZXJfaTJjXCIpLCAwKV1cbiB9XG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnNcbmluZGV4IDFhYTgxOTdkODY5OGMwLi42NTI4MTlkZmYwODI0YiAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnNcbisrKyBiL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wY2kucnNcbkBAIC03NCwxMiArNzQsMTAgQEAgc3RydWN0IFNhbXBsZURyaXZlckRhdGFcdTAwM2MnYm91bmRcdTAwM2Uge1xuIFxuIGtlcm5lbDo6cGNpX2RldmljZV90YWJsZSEoXG4gICAgIFBDSV9UQUJMRSxcbi0gICAgTU9EVUxFX1BDSV9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBjaTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4tICAgIFsoXG4tICAgICAgICBwY2k6OkRldmljZUlkOjpmcm9tX2lkKHBjaTo6VmVuZG9yOjpSRURIQVQsIDB4NSksXG4tICAgICAgICBUZXN0SW5kZXg6Ok5PX0VWRU5URkRcbi0gICAgKV1cbisgICAge1xuKyAgICAgICAgcGNpOjpEZXZpY2VJZDo6ZnJvbV9pZChwY2k6OlZlbmRvcjo6UkVESEFULCAweDUpID1cdTAwM2UgVGVzdEluZGV4OjpOT19FVkVOVEZELFxuKyAgICB9XG4gKTtcbiBcbiBpbXBsIFNhbXBsZURyaXZlckRhdGFcdTAwM2MnX1x1MDAzZSB7XG5AQCAtMTQ0LDcgKzE0Miw3IEBAIGltcGwgcGNpOjpEcml2ZXIgZm9yIFNhbXBsZURyaXZlciB7XG4gXG4gICAgIGZuIHByb2JlXHUwMDNjJ2JvdW5kXHUwMDNlKFxuICAgICAgICAgcGRldjogXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXHUwMDNjQ29yZVx1MDAzYydfXHUwMDNlXHUwMDNlLFxuLSAgICAgICAgaW5mbzogXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcbisgICAgICAgIGluZm86IE9wdGlvblx1MDAzY1x1MDAyNidib3VuZCBTZWxmOjpJZEluZm9cdTAwM2UsXG4gICAgICkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmOjpEYXRhXHUwMDNjJ2JvdW5kXHUwMDNlLCBFcnJvclx1MDAzZSArICdib3VuZCB7XG4gICAgICAgICBsZXQgdmVuZG9yID0gcGRldi52ZW5kb3JfaWQoKTtcbiAgICAgICAgIGRldl9kYmchKFxuQEAgLTE1Myw2ICsxNTEsNyBAQCBmbiBwcm9iZVx1MDAzYydib3VuZFx1MDAzZShcbiAgICAgICAgICAgICB2ZW5kb3IsXG4gICAgICAgICAgICAgcGRldi5kZXZpY2VfaWQoKVxuICAgICAgICAgKTtcbisgICAgICAgIGxldCBpbmZvID0gaW5mby5va19vcihFTk9ERVYpPztcbiBcbiAgICAgICAgIHBkZXYuZW5hYmxlX2RldmljZV9tZW0oKT87XG4gICAgICAgICBwZGV2LnNldF9tYXN0ZXIoKTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMgYi9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnNcbmluZGV4IGVjMGQ2Y2FjNGY1NzBiLi43MTAxNDViMzYwNWEyMSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yc1xuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzXG5AQCAtODcsMTQgKzg3LDEyIEBAIHN0cnVjdCBTYW1wbGVEcml2ZXIge1xuIFxuIGtlcm5lbDo6b2ZfZGV2aWNlX3RhYmxlIShcbiAgICAgT0ZfVEFCTEUsXG4tICAgIE1PRFVMRV9PRl9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhvZjo6RGV2aWNlSWQ6Om5ldyhjXCJ0ZXN0LHJ1c3QtZGV2aWNlXCIpLCBJbmZvKDQyKSldXG4gKTtcbiBcbiBrZXJuZWw6OmFjcGlfZGV2aWNlX3RhYmxlIShcbiAgICAgQUNQSV9UQUJMRSxcbi0gICAgTU9EVUxFX0FDUElfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsoYWNwaTo6RGV2aWNlSWQ6Om5ldyhjXCJMTlVYQkVFRlwiKSwgSW5mbygwKSldXG4gKTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yc1xuaW5kZXggMDJiZDUwODVmOWJjNzYuLjdlZjA0ZTE3N2M4MDk0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yc1xuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yc1xuQEAgLTE5LDcgKzE5LDYgQEAgc3RydWN0IFNhbXBsZURyaXZlciB7XG4gXG4ga2VybmVsOjp1c2JfZGV2aWNlX3RhYmxlIShcbiAgICAgVVNCX1RBQkxFLFxuLSAgICBNT0RVTEVfVVNCX1RBQkxFLFxuICAgICBcdTAwM2NTYW1wbGVEcml2ZXIgYXMgdXNiOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyh1c2I6OkRldmljZUlkOjpmcm9tX2lkKDB4MTIzNCwgMHg1Njc4KSwgKCkpLF1cbiApO1xuQEAgLTMyLDcgKzMxLDcgQEAgaW1wbCB1c2I6OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcbiAgICAgZm4gcHJvYmVcdTAwM2MnYm91bmRcdTAwM2UoXG4gICAgICAgICBpbnRmOiBcdTAwMjYnYm91bmQgdXNiOjpJbnRlcmZhY2VcdTAwM2NDb3JlXHUwMDNjJ19cdTAwM2VcdTAwM2UsXG4gICAgICAgICBfaWQ6IFx1MDAyNnVzYjo6RGV2aWNlSWQsXG4tICAgICAgICBfaW5mbzogXHUwMDI2J2JvdW5kIFNlbGY6OklkSW5mbyxcbisgICAgICAgIF9pbmZvOiBPcHRpb25cdTAwM2NcdTAwMjYnYm91bmQgU2VsZjo6SWRJbmZvXHUwMDNlLFxuICAgICApIC1cdTAwM2UgaW1wbCBQaW5Jbml0XHUwMDNjU2VsZiwgRXJyb3JcdTAwM2UgKyAnYm91bmQge1xuICAgICAgICAgbGV0IGRldjogXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDb3JlXHUwMDNjJ19cdTAwM2VcdTAwM2UgPSBpbnRmLmFzX3JlZigpO1xuICAgICAgICAgZGV2X2luZm8hKGRldiwgXCJSdXN0IFVTQiBkcml2ZXIgc2FtcGxlIHByb2JlZFxcblwiKTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzIGIvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5yc1xuaW5kZXggMmQ4NzZmNGUzZWUwYTIuLmM4YTIzODc1ZWY1YmM1IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5yc1xuKysrIGIvc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5yc1xuQEAgLTg3LDE0ICs4NywxMiBAQCBzdHJ1Y3QgU2FtcGxlRHJpdmVyIHtcbiBcbiBrZXJuZWw6Om9mX2RldmljZV90YWJsZSEoXG4gICAgIE9GX1RBQkxFLFxuLSAgICBNT0RVTEVfT0ZfVEFCTEUsXG4gICAgIFx1MDAzY1NhbXBsZURyaXZlciBhcyBwbGF0Zm9ybTo6RHJpdmVyXHUwMDNlOjpJZEluZm8sXG4gICAgIFsob2Y6OkRldmljZUlkOjpuZXcoY1widGVzdCxydXN0LWRldmljZVwiKSwgKCkpXVxuICk7XG4gXG4ga2VybmVsOjphY3BpX2RldmljZV90YWJsZSEoXG4gICAgIEFDUElfVEFCTEUsXG4tICAgIE1PRFVMRV9BQ1BJX1RBQkxFLFxuICAgICBcdTAwM2NTYW1wbGVEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKGFjcGk6OkRldmljZUlkOjpuZXcoY1wiTE5VWEJFRUZcIiksICgpKV1cbiApO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycyBiL3NhbXBsZXMvcnVzdC9ydXN0X3NvYy5yc1xuaW5kZXggODA4ZDU4MjAwZWI2NzcuLmY1ZTVmMmY5YWRmNzYyIDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzXG4rKysgYi9zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnNcbkBAIC0yMywxNCArMjMsMTIgQEAgc3RydWN0IFNhbXBsZVNvY0RyaXZlciB7XG4gXG4ga2VybmVsOjpvZl9kZXZpY2VfdGFibGUhKFxuICAgICBPRl9UQUJMRSxcbi0gICAgTU9EVUxFX09GX1RBQkxFLFxuICAgICBcdTAwM2NTYW1wbGVTb2NEcml2ZXIgYXMgcGxhdGZvcm06OkRyaXZlclx1MDAzZTo6SWRJbmZvLFxuICAgICBbKG9mOjpEZXZpY2VJZDo6bmV3KGNcInRlc3QscnVzdC1kZXZpY2VcIiksICgpKV1cbiApO1xuIFxuIGtlcm5lbDo6YWNwaV9kZXZpY2VfdGFibGUhKFxuICAgICBBQ1BJX1RBQkxFLFxuLSAgICBNT0RVTEVfQUNQSV9UQUJMRSxcbiAgICAgXHUwMDNjU2FtcGxlU29jRHJpdmVyIGFzIHBsYXRmb3JtOjpEcml2ZXJcdTAwM2U6OklkSW5mbyxcbiAgICAgWyhhY3BpOjpEZXZpY2VJZDo6bmV3KGNcIkxOVVhCRUVGXCIpLCAoKSldXG4gKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjExLjMxOTQwMzEyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNDkzNTg0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgUnVzdCBEZXZpY2UgSUQgVGFibGUgR2VuZXJhdGlvbjogRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gaG93IFJ1c3QgZGV2aWNlIElEIHRhYmxlcyBhcmUgZ2VuZXJhdGVkIGFuZCBob3cgZHJpdmVyIG1hdGNoIGRhdGEgaXMgaGFuZGxlZC4gRXNzZW50aWFsbHksIGl0J3MgYSBkZWVwIGRpdmUgaW50byB0aGUgY29yZSBSdXN0IGFic3RyYWN0aW9ucyBmb3IgdmFyaW91cyBkcml2ZXIgdHlwZXMg4oCTIFBDSSwgVVNCLCBwbGF0Zm9ybSwgSTJDLCBBdXhpbGlhcnksIGFuZCBBQ1BJLlxuXG5TcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgdGhleSdyZSByZW1vdmluZyB0aGUgYE1PRFVMRV9PRl9UQUJMRWAgYXJndW1lbnRzIGZyb20gdGhvc2UgYF9kZXZpY2VfdGFibGUhYCBtYWNyb3MgYW5kIHR3ZWFraW5nIHRoZSBgSWRBcnJheWAgdG8gc3RvcmUgcmVmZXJlbmNlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIGFuIGluZGV4LiBUaGV5J3ZlIGFsc28gcmlwcGVkIG91dCBgYWNwaV9vZl9tYXRjaF9kZXZpY2VgIGZyb20gYSBjb3VwbGUgb2YgcGxhY2VzLCBhbmQgdGhlIGBwcm9iZWAgc2lnbmF0dXJlcyBpbiB0aGUgYHBjaTo6RHJpdmVyYCBhbmQgYHVzYjo6RHJpdmVyYCB0cmFpdHMgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIGBPcHRpb25gIGZvciB0aGUgYElkSW5mb2AuIFBsdXMsIHRoZXkncmUgdXNpbmcgYGJpbmRpbmdzOjpkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZvciB0aGUgYGlkX2luZm9gIGluIHRoZSBgQWRhcHRlcmAgdHJhaXQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgKnllcyosIHRoaXMgbmVlZHMgZnV6emluZy4gSXQgZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IGRyaXZlcnMgYXJlIHByb2JlZCBhbmQgaG93IHRoZXkgcmVjZWl2ZSB0aGVpciBjcml0aWNhbCBtYXRjaCBkYXRhLiBJZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBoZXJlLCBkcml2ZXJzIGNvdWxkIGVhc2lseSBjcmFzaCBkdXJpbmcgcHJvYmUgb3IsIHdvcnNlLCBvcGVyYXRlIHdpdGggaW5jb3JyZWN0IGRhdGEuIFRoaXMgaXMgcmlnaHQgaW4gdGhlIGNyaXRpY2FsIHBhdGguXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHNlZW0gdG8gYmUgaW4gbWFjcm9zIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYElkQXJyYXlgLCBidXQgdGhlIHJlYWwgYWN0aW9uIGhhcHBlbnMgZHVyaW5nIGRyaXZlciBwcm9iZS4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBjb2RlIHdoZXJlIHRoZSBkcml2ZXJzIGFjdHVhbGx5IGdldCBjYWxsZWQuXG5cblNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCB0aGUgYHByb2JlX2NhbGxiYWNrYCBmdW5jdGlvbnMgd2l0aGluIHRoZSByZXNwZWN0aXZlIGRyaXZlciBpbXBsZW1lbnRhdGlvbnM6IGBwY2kucnNgLCBgdXNiLnJzYCwgYHBsYXRmb3JtLnJzYCwgYGkyYy5yc2AsIGFuZCBgYXV4aWxpYXJ5LnJzYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuXG5cbk5vdywgY2FuIEkgZnV6eiB0aGVzZSB0aGluZ3MgZWZmZWN0aXZlbHk/IFN5emthbGxlciBkb2Vzbid0IGhhdmUgbmF0aXZlIFJ1c3QgZHJpdmVyIHN1cHBvcnQgKnlldCosIHdoaWNoIGlzIGEgcG90ZW50aWFsIHJvYWRibG9jay4gSG93ZXZlciwgaXQgKmRvZXMqIHN1cHBvcnQgZnV6emluZyBQQ0ksIFVTQiwgcGxhdGZvcm0sIGFuZCBJMkMgZGV2aWNlcy4gSWYgSSBlbmFibGUgUnVzdCBzdXBwb3J0IGFuZCB0aGUgc2FtcGxlIGRyaXZlcnMsIEkgKnNob3VsZCogYmUgYWJsZSB0byB0ZXN0IHRoZXNlIGNvZGUgcGF0aHMuIFdoZXJlIGFyZSB0aG9zZSBzYW1wbGUgZHJpdmVycz8gUmlnaHQsIHRoZXkncmUgaW4gYHNhbXBsZXMvcnVzdC9gLiBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfU0FNUExFU19SVVNUPXlgIG9yIHRoZSBhcHByb3ByaWF0ZSBzYW1wbGUgY29uZmlncyB0byBnZXQgdGhlbSBidWlsdC4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUzMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjIwLjY2ODc2NjI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNDk3NTI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0FNUExFX1JVU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9ydXN0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9ydXN0L0tjb25maWc9MTE9aWYgU0FNUExFU19SVVNUXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMTItXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6MTM6Y29uZmlnIFNBTVBMRV9SVVNUX0NPTkZJR0ZTXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMTQtXFx0dHJpc3RhdGUgXFxcIkNvbmZpZ2ZzIHNhbXBsZVxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTIzLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnOjI0OmNvbmZpZyBTQU1QTEVfUlVTVF9NSU5JTUFMXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMjUtXFx0dHJpc3RhdGUgXFxcIk1pbmltYWxcXFwiXFxuLS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0zMy1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzozNDpjb25maWcgU0FNUExFX1JVU1RfTUlTQ19ERVZJQ0VcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0zNS1cXHR0cmlzdGF0ZSBcXFwiTWlzYyBkZXZpY2VcXFwiXFxuLS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy00My1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo0NDpjb25maWcgU0FNUExFX1JVU1RfUFJJTlRcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiUHJpbnRpbmcgbWFjcm9zXFxcIlxcbi0tXFxuc2FtcGxlcy9ydXN0L0tjb25maWctNTMtXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6NTQ6Y29uZmlnIFNBTVBMRV9SVVNUX0RNQVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJETUEgVGVzdCBEcml2ZXJcXFwiXFxuLS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy02NC1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzo2NTpjb25maWcgU0FNUExFX1JVU1RfREVCVUdGU1xcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJEZWJ1Z0ZTIFRlc3QgTW9kdWxlXFxcIlxcbi0tXFxuc2FtcGxlcy9ydXN0L0tjb25maWctNzUtXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6NzY6Y29uZmlnIFNBTVBMRV9SVVNUX0RFQlVHRlNfU0NPUEVEXFxuc2FtcGxlcy9ydXN0L0tjb25maWctNzctXFx0dHJpc3RhdGUgXFxcIlNjb3BlZCBEZWJ1Z0ZTIFRlc3QgTW9kdWxlXFxcIlxcbi0tXFxuc2FtcGxlcy9ydXN0L0tjb25maWctODYtXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6ODc6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy04OC1cXHR0cmlzdGF0ZSBcXFwiSTJDIERyaXZlclxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTk3LVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnOjk4OmNvbmZpZyBTQU1QTEVfUlVTVF9JMkNfQ0xJRU5UXFxuc2FtcGxlcy9ydXN0L0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcIkkyQyBDbGllbnQgUmVnaXN0cmF0aW9uXFxcIlxcbi0tXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMTA5LVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnOjExMDpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX1BDSVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTExMS1cXHR0cmlzdGF0ZSBcXFwiUENJIERyaXZlclxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEyMC1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzoxMjE6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiUGxhdGZvcm0gRHJpdmVyXFxcIlxcbi0tXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMTMwLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnOjEzMTpjb25maWcgU0FNUExFX1JVU1RfRFJJVkVSX1VTQlxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTEzMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIERyaXZlclxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTE0MS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzoxNDI6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9GQVVYXFxuc2FtcGxlcy9ydXN0L0tjb25maWctMTQzLVxcdHRyaXN0YXRlIFxcXCJGYXV4IERyaXZlclxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTE1MS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzoxNTI6Y29uZmlnIFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNTMtXFx0dHJpc3RhdGUgXFxcIkF1eGlsaWFyeSBEcml2ZXJcXFwiXFxuLS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNjMtXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6MTY0OmNvbmZpZyBTQU1QTEVfUlVTVF9TT0NcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNjUtXFx0dHJpc3RhdGUgXFxcIlNvQyBEcml2ZXJcXFwiXFxuLS1cXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNzQtXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6MTc1OmNvbmZpZyBTQU1QTEVfUlVTVF9IT1NUUFJPR1NcXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiSG9zdCBwcm9ncmFtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTM6MjAuOTgzNzUwMjM5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3MDE2NTc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJ1c3QgRHJpdmVyIEFic3RyYWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGRpdmluZyBpbnRvIHRoZSBjb3JlIFJ1c3QgYWJzdHJhY3Rpb25zIHVzZWQgZm9yIGRldmljZSBkcml2ZXJzLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEkgc2VlIGEgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZDogYFJVU1RgLCBgU0FNUExFU19SVVNUYCwgYW5kIGEgYnVuY2ggb2Ygc2FtcGxlcyByZWxhdGVkIHRvIERNQSwgSTJDLCBQQ0ksIHBsYXRmb3JtIGRldmljZXMsIFVTQiwgYXV4aWxpYXJ5IGRyaXZlcnMsIGFuZCB0aGUgU3lzdGVtLW9uLWEtQ2hpcC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgc2V0IG9mIGV4YW1wbGVzLCBjb3ZlcmluZyBhIGdvb2QgcmFuZ2Ugb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLlxuXG5Ob3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcy4gSSBoYXZlIHRvIHNlZSBpZiBhbnkgZXhpc3RpbmcgZHJpdmVycyBvdXQgdGhlcmUgYXJlIGFscmVhZHkgbWFraW5nIHVzZSBvZiB0aGVzZSBhYnN0cmFjdGlvbnMuIExldCdzIHNlZS4uLiBJJ3ZlIGdvdCBhIGxpc3Qgb2Ygc29tZSBmaWxlcyB0byBjaGVjazogYGRyaXZlcnMvZ3B1L2RybS9ub3ZhL2RyaXZlci5yc2AsIGBkcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5yc2AsIGBkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzYCwgYGRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnNgLCBhbmQgYGRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yc2AuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZHJpdmVycyBhbmQgc2VlIGlmIHRoZXkgaGF2ZSBhbnkgaW50ZXJhY3Rpb25zIHdpdGggd2hhdCBpcyBpbiB0aGUgcGF0Y2guIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBmaWxlcyBkb24ndCB1c2UgdGhlIG1hY3JvcyBiZWluZyBjaGFuZ2VkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGZvciBjb25mbGljdHMgb3IgcmVncmVzc2lvbnMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBhbnl0aGluZyBpbiB0aGUgcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIGNvcnJlbGF0ZSB0aGVzZSBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUyOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzoyNS44NTM5MTk4MDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxODY4ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fTk9WQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWc6MTpjb25maWcgRFJNX05PVkFcXG5kcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIk5vdmEgRFJNIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTM6MjYuNDg1ODA0Mzg4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0NTY5MTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVlcCBEaXZlIEluY29taW5nOiBJbml0aWFsIENvZGUgUmV2aWV3IFRob3VnaHRzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gVGhlIGluaXRpYWwgZm9jdXMgaXMgb24gYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBhbmQgYEFSTV9EVF9DUFVGUkVRX1JVU1RgLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGhlcmUuIGBEUk1fVFlSYCBzdWdnZXN0cyBkaXNwbGF5IG9yIGdyYXBoaWNzIHByb2Nlc3NpbmcsIGxpa2VseSBvbiBhIGBUWVJgIHBsYXRmb3JtIG9yIHJlbGF0ZWQgdGVjaG5vbG9neS4gYE5PVkFfQ09SRWAuLi4gdGhhdCdzIGxlc3MgaW1tZWRpYXRlbHkgb2J2aW91cyB3aXRob3V0IGNvbnRleHQsIGJ1dCB0aGUgXCJDT1JFXCIgaW1wbGllcyBzb21ldGhpbmcgZnVuZGFtZW50YWwsIHBlcmhhcHMgYSBjZW50cmFsIGNvbnRyb2wgb3Igc3lzdGVtIG1vZHVsZSByZWxhdGVkIHRvIGEgcHJvamVjdCdzIGFyY2hpdGVjdHVyZS4gYFBXTV9USDE1MjBgIGp1bXBzIG91dCBhcyBhIFB1bHNlLVdpZHRoIE1vZHVsYXRpb24gaW1wbGVtZW50YXRpb24gcmVsYXRlZCB0byBhIGBUSDE1MjBgIGRldmljZS4gVGhpcyB0ZWxscyBtZSB3ZSBjb3VsZCBiZSBsb29raW5nIGF0IHBvd2VyIGNvbnRyb2wsIGRpbW1pbmcsIG9yIG1vdG9yIGNvbnRyb2wsIHBvc3NpYmx5IHNvbWV0aGluZyBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gRmluYWxseSwgYEFSTV9EVF9DUFVGUkVRX1JVU1RgIGlzIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZDogQ1BVIGZyZXF1ZW5jeSBzY2FsaW5nIG9uIGFuIEFSTSBzeXN0ZW0sIHBvdGVudGlhbGx5IHVzaW5nIGEgZGV2aWNlIHRyZWUgKGBEVGApIGZvciBjb25maWd1cmF0aW9uLCBhbmQgd3JpdHRlbiBpbiBSdXN0LlxuXG5JJ20gaW5zdGFudGx5IGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBmb3VyIHJlbGF0ZS4gSXMgdGhlIGRpc3BsYXkgbGlua2VkIHRvIENQVSBmcmVxdWVuY3kgc2NhbGluZz8gSXMgdGhlcmUgYSBkaXNwbGF5IGludGVyZmFjZSB1c2luZyBQV00/IEFyZSB3ZSBidWlsZGluZyBvbiBhIG5ldyBSdXN0IGZyYW1ld29yayB3aXRoIGEgY29yZT8gSSdtIGFscmVhZHkgZW52aXNpb25pbmcgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGFuZCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4gTXkgbWluZCdzIHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gaXNzdWVzIHdpdGggZnJlcXVlbmN5IHNjYWxpbmcgYW5kIFBXTTogcG93ZXIgY29uc3VtcHRpb24gdHJhZGUtb2ZmcywgcmVzcG9uc2UgdGltZXMsIHBvdGVudGlhbCBmb3IgZGlzcGxheSBmbGlja2VyaW5nIG9yIGJhbmRpbmcsIGV0Yy4gVGhlIHVzZSBvZiBSdXN0IHN1Z2dlc3RzIGEgZm9jdXMgb24gbWVtb3J5IHNhZmV0eSBhbmQgY29uY3VycmVuY3ksIHdoaWNoIGNvdWxkIGJlIHJlbGV2YW50IGdpdmVuIGhvdyBwb3dlciBhbmQgcGVyZm9ybWFuY2UgbWFuYWdlbWVudCB0ZW5kcyB0byBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGVhY2ggb2YgdGhlc2UgY29tcG9uZW50cyBjb250cmlidXRlcyB0byB0aGUgd2hvbGUgc3lzdGVtIGRlc2lnbiBhbmQgd2hhdCB0aGVpciBpbnRlcmZhY2VzIGFyZS4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgc2V0dGluZyB0aGUgc3RhZ2UgYW5kIGFudGljaXBhdGluZyB3aGVyZSB0aGUgcmVhbCBjaGFsbGVuZ2VzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExNTIsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzozMS4yMzE1MDI3NjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0OTQzMTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgKERSTV9UWVJ8Tk9WQV9DT1JFfFBXTV9USDE1MjB8QVJNX0RUX0NQVUZSRVFfUlVTVClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3R5ci9LY29uZmlnLTItXFxuZHJpdmVycy9ncHUvZHJtL3R5ci9LY29uZmlnOjM6Y29uZmlnIERSTV9UWVJcXG5kcml2ZXJzL2dwdS9kcm0vdHlyL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiVHlyIChSdXN0IERSTSBzdXBwb3J0IGZvciBBUk0gTWFsaSBDU0YtYmFzZWQgR1BVcylcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZzoxOmNvbmZpZyBOT1ZBX0NPUkVcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJOb3ZhIENvcmUgR1BVIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvcHdtL0tjb25maWc9NzYyPWNvbmZpZyBQV01fVEVHUkFcXG4tLVxcbmRyaXZlcnMvcHdtL0tjb25maWctNzcyLVxcbmRyaXZlcnMvcHdtL0tjb25maWc6NzczOmNvbmZpZyBQV01fVEgxNTIwXFxuZHJpdmVycy9wd20vS2NvbmZpZy03NzQtXFx0dHJpc3RhdGUgXFxcIlRIMTUyMCBQV00gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTM6MzIuODgwOTY2MDg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMzUxMzQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIENQVSBGcmVxdWVuY3kgU2NhbGluZyBPcHRpb25zKipcblxuQWxyaWdodCwgSSdtIGRpZ2dpbmcgaW50byBmcmVxdWVuY3kgc2NhbGluZyBtZWNoYW5pc21zLiBXZSdyZSBsb29raW5nIGF0IHdheXMgdG8gb3B0aW1pemUgcG93ZXIgY29uc3VtcHRpb24gYW5kIHBlcmZvcm1hbmNlLCBhbmQgdGhlIHBvc3NpYmlsaXRpZXMgYXJlIGVuZGxlc3MuIEknbSBmb2N1c2luZyBvbiB0aGUgbG93LWxldmVsIGludGVyYWN0aW9ucyBoZXJlLiBPbmUgYXJlYSB0aGF0J3MgYWx3YXlzIGludHJpZ3VlZCBtZSwgYW5kIG5lZWRzIGZ1cnRoZXIgYXR0ZW50aW9uLCBpcyB0aGUgYHJjcHVmcmVxX2R0YCBkcml2ZXIuIFdoYXQncyB0aGUgbGF0ZXN0IHdpdGggdGhhdD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgRGV2aWNlIFRyZWUgKERUKSBhbmQgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ1BVRnJlcSBjb3JlLiBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSBzcGVjaWZpY3Mgb2YgaXRzIGdvdmVybm9yIGltcGxlbWVudGF0aW9ucywgYW5kIHdoZXRoZXIgaXQncyBoYW5kbGluZyBmcmVxdWVuY3kgdHJhbnNpdGlvbnMgb3B0aW1hbGx5LiBUaGVyZSBtaWdodCBiZSBzb21lIHN1YnRsZSBkaWZmZXJlbmNlcyB0aGF0IEkgbmVlZCB0byBiZW5jaG1hcmsgYWdhaW5zdCB0aGUgb3RoZXIgZHJpdmVycy4gQXJlIHdlIHNlZWluZyBhbnkgbmV3IHBhdGNoZXMgb3IgZmVhdHVyZXM/IEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBTb0NzPyBXaGF0IGlzIGl0cyBsZXZlbCBvZiBjb21tdW5pdHkgc3VwcG9ydCBhbmQgbWFpbnRlbmFuY2UgbGlrZT8gSXMgaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBuZXdlciBwb3dlciBtYW5hZ2VtZW50IGZyYW1ld29ya3M/IEkgc2hvdWxkIHByb2JhYmx5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIHJlbGV2YW50IGtlcm5lbCBkb2N1bWVudGF0aW9uIGFuZCB0aGUgdXBzdHJlYW0gbWFpbGluZyBsaXN0cy4gSSBzaG91bGQgbWFrZSBzdXJlIEknbSB1cCB0byBzcGVlZCBvbiB0aGUgbGF0ZXN0IGNoYW5nZXMuIE15IHJlc2VhcmNoIGhhcyBiZWVuIGZhaXJseSByZWNlbnQsIGJ1dCB0aGlzIGlzIGEgY3JpdGljYWwgZHJpdmVyIGZvciBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBtb2JpbGUgZGV2aWNlcy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRvY3VtZW50YXRpb24gc2F5cyBhYm91dCB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTg1NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjM3LjU4NDQ4Mjg4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNjA0MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJjcHVmcmVxX2R0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY3B1ZnJlcS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jcHVmcmVxL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19DUFVGUkVRX0RUKVxcdFxcdCs9IGNwdWZyZXEtZHQub1xcbmRyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQ1BVRlJFUV9EVF9SVVNUKVxcdFxcdCs9IHJjcHVmcmVxX2R0Lm9cXG5kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUtMTktb2JqLSQoQ09ORklHX0NQVUZSRVFfRFRfUExBVERFVilcXHQrPSBjcHVmcmVxLWR0LXBsYXRkZXYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzozNy42ODUwOTU4OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0OTYxNzMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnM6XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIFBhcmFtZXRlcnMqKlxuXG5Pa2F5LCBsZXQncyBzZWUuIFdlJ3ZlIGdvdCBhIGxpc3Qgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjb25zaWRlcjogYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBlc3RhYmxpc2ggaWYgYENQVUZSRVFfRFRfUlVTVGAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsLiBXaXRob3V0IHRoYXQsIHdlIGNhbid0IGJlIHN1cmUgdGhpcyBpcyBhIHZpYWJsZSBwYXJ0IG9mIHRoZSBvdmVyYWxsIGRlc2lnbi4gTXkgbmV4dCBzdGVwIGludm9sdmVzIGNoZWNraW5nIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGUgaW5pdGlhbCBsaXN0IGlzIHRoZXJlLCB0aW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI5NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjQxLjUzNDcxOTMyM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NDAyODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUFVGUkVRX0RUX1JVU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jcHVmcmVxL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2NwdWZyZXEvS2NvbmZpZz0yMDc9Y29uZmlnIENQVUZSRVFfRFRcXG4tLVxcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLTIxOC1cXG5kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZzoyMTk6Y29uZmlnIENQVUZSRVFfRFRfUlVTVFxcbmRyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLTIyMC1cXHR0cmlzdGF0ZSBcXFwiUnVzdCBiYXNlZCBHZW5lcmljIERUIGJhc2VkIGNwdWZyZXEgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzo0MS42NDExMzA1MTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzOTY5OTM5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFByb2JlIENhbGxiYWNrcyBpbiB0aGUgS2VybmVsKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGhlcmUuIFRoZSBmaXJzdCBxdWVzdGlvbiBpcywgXCJBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgcmVsZXZhbnQgc3RydWN0dXJlcyBJJ20gbWlzc2luZz9cIiAgTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZXNlIGBwcm9iZV9jYWxsYmFja2AgZnVuY3Rpb25zLiBJIGtub3cgSSd2ZSBzZWVuIGl0IGRlZmluZWQgaW4gc2V2ZXJhbCBwbGFjZXMgbGlrZSBgcnVzdC9rZXJuZWwvcGNpLnJzYCwgYnV0IEkgYWxzbyBzZWUgaXQgaW4gYHJ1c3Qva2VybmVsL3VzYi5yc2AsIGBydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc2AsIGBydXN0L2tlcm5lbC9pMmMucnNgIGFuZCBgcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzYC5cblxuR2l2ZW4gdGhvc2UgZmlsZXMsIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aG9zZSBmaXZlIGluc3RhbmNlcyBvZiB0aGUgYHByb2JlX2NhbGxiYWNrYCBmdW5jdGlvbiBzcGVjaWZpY2FsbHk6IHRoZSBvbmUgaW4gUENJLCBVU0IsIHBsYXRmb3JtLCBpMmMgYW5kIGF1eGlsaWFyeSBmaWxlcy5cblxuSG93ZXZlciwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgc2luY2UgdGhpcyBpcyBhbiBgZXh0ZXJuIFwiQ1wiYCBmdW5jdGlvbiwgdGhlIG5hbWUgaW4gdGhlIGNvbXBpbGVkIGJpbmFyeSBtaWdodCBiZSBhIGJpdCB0cmlja3kuIEl0IGNvdWxkIGJlIG1hbmdsZWQgZHVyaW5nIHRoZSBsaW5raW5nIHByb2Nlc3MsIG9yIHBvc3NpYmx5IGV2ZW4gYmUgc3RhdGljYWxseSBsaW5rZWQsIHNvIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGV4YWN0IGRlZmluaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYzMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzo1My4wMzgxMjg5NDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTE5NjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHRlcm4gXFxcIkNcXFwiIGZuIHByb2JlX2NhbGxiYWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInJ1c3Qva2VybmVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJydXN0L2tlcm5lbC9hdXhpbGlhcnkucnM9ODI9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yczo4MzogICAgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhcXG5ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMtODQtICAgICAgICBhZGV2OiAqbXV0IGJpbmRpbmdzOjphdXhpbGlhcnlfZGV2aWNlLFxcbi0tXFxucnVzdC9rZXJuZWwvZXJyb3IucnM9NDk5PXB1YiBmbiBmcm9tX2Vycl9wdHJcXHUwMDNjVFxcdTAwM2UocHRyOiAqbXV0IFQpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2MqbXV0IFRcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2Vycm9yLnJzLTUzNC0vLy8gIyB1c2Uga2VybmVsOjpiaW5kaW5ncztcXG5ydXN0L2tlcm5lbC9lcnJvci5yczo1MzU6Ly8vIHVuc2FmZSBleHRlcm4gXFxcIkNcXFwiIGZuIHByb2JlX2NhbGxiYWNrKFxcbnJ1c3Qva2VybmVsL2Vycm9yLnJzLTUzNi0vLy8gICAgIHBkZXY6ICptdXQgYmluZGluZ3M6OnBsYXRmb3JtX2RldmljZSxcXG4tLVxcbnJ1c3Qva2VybmVsL2kyYy5ycz0xNDQ9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2kyYy5yczoxNDU6ICAgIGV4dGVybiBcXFwiQ1xcXCIgZm4gcHJvYmVfY2FsbGJhY2soaWRldjogKm11dCBiaW5kaW5nczo6aTJjX2NsaWVudCkgLVxcdTAwM2Uga2VybmVsOjpmZmk6OmNfaW50IHtcXG5ydXN0L2tlcm5lbC9pMmMucnMtMTQ2LSAgICAgICAgLy8gU0FGRVRZOiBUaGUgSTJDIGJ1cyBvbmx5IGV2ZXIgY2FsbHMgdGhlIHByb2JlIGNhbGxiYWNrIHdpdGggYSB2YWxpZCBwb2ludGVyIHRvIGFcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9MzA4PWltcGxcXHUwMDNjVDogRHJpdmVyXFx1MDAzZSBBZGFwdGVyXFx1MDAzY1RcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMzI1LSAgICAvLy8gYHBoeWRldmAgbXVzdCBiZSBwYXNzZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgaW4gYHBoeV9kcml2ZXJgLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MzI2OiAgICB1bnNhZmUgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhwaHlkZXY6ICptdXQgYmluZGluZ3M6OnBoeV9kZXZpY2UpIC1cXHUwMDNlIGNfaW50IHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTMyNy0gICAgICAgIGZyb21fcmVzdWx0KHx8IHtcXG4tLVxcbnJ1c3Qva2VybmVsL3BjaS5ycz05OT1pbXBsXFx1MDAzY1Q6IERyaXZlclxcdTAwM2UgQWRhcHRlclxcdTAwM2NUXFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvcGNpLnJzOjEwMDogICAgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhcXG5ydXN0L2tlcm5lbC9wY2kucnMtMTAxLSAgICAgICAgcGRldjogKm11dCBiaW5kaW5nczo6cGNpX2RldixcXG4tLVxcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzPTk2PWltcGxcXHUwMDNjVDogRHJpdmVyXFx1MDAzZSBBZGFwdGVyXFx1MDAzY1RcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yczo5NzogICAgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwbGF0Zm9ybV9kZXZpY2UpIC1cXHUwMDNlIGtlcm5lbDo6ZmZpOjpjX2ludCB7XFxucnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMtOTgtICAgICAgICAvLyBTQUZFVFk6IFRoZSBwbGF0Zm9ybSBidXMgb25seSBldmVyIGNhbGxzIHRoZSBwcm9iZSBjYWxsYmFjayB3aXRoIGEgdmFsaWQgcG9pbnRlciB0byBhXFxuLS1cXG5ydXN0L2tlcm5lbC91c2IucnM9NzY9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL3VzYi5yczo3NzogICAgZXh0ZXJuIFxcXCJDXFxcIiBmbiBwcm9iZV9jYWxsYmFjayhcXG5ydXN0L2tlcm5lbC91c2IucnMtNzgtICAgICAgICBpbnRmOiAqbXV0IGJpbmRpbmdzOjp1c2JfaW50ZXJmYWNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxMzo1My4xNDczMzQzOTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NDQyMzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRnVuY3Rpb24gU3ltYm9sIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IHByZXNlbnQgZnVuY3Rpb24gc3ltYm9scyByZWxhdGVkIHRvIG91ciBkcml2ZXJzLiBXZSd2ZSBnb3QgYHByb2JlX2NhbGxiYWNrYCBuZXN0ZWQgd2l0aGluIHRoZSBgQWRhcHRlclx1MDAzY1RcdTAwM2VgIHN0cnVjdHVyZS4gQ3J1Y2lhbGx5LCB0aGVzZSBhcmUgZ2VuZXJpYyBvdmVyIGBUOiBEcml2ZXJgLCBtZWFuaW5nIHRoZXknbGwgYmUgaW5zdGFudGlhdGVkIHNlcGFyYXRlbHkgZm9yIGVhY2ggc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgZ29pbmcgdG8gbGVhZCB0byBtYW5nbGVkIHN5bWJvbCBuYW1lcywgc29tZXRoaW5nIGxpa2UgYCpBZGFwdGVyKnByb2JlX2NhbGxiYWNrKmAuIEJ1dCB0aGF0J3Mgbm90IGdvaW5nIHRvIGJlIGhlbHBmdWwgdG8gdGhlIHVzZXIuXG5cbkxpc3RpbmcgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaXRzZWxmLCBvciB0aGVzZSBwb3RlbnRpYWxseSBtdWx0aXBseSBpbnN0YW50aWF0ZWQgdmVyc2lvbnMsIGlzIGEgcmVjaXBlIGZvciBjb25mdXNpb24gYW5kIGRpZmZpY3VsdHkgaW4gbWF0Y2hpbmcgdGhlbSB0byB0aGUgZHJpdmVycyBwZW9wbGUgYXJlIGFjdHVhbGx5IHVzaW5nLiBJdCB3aWxsIGJlIG11Y2ggY2xlYXJlciB0byBqdXN0IHNob3cgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgcHJvYmUuXG5cblNvLCBpbnN0ZWFkIG9mIHRoZSBtYW5nbGVkIG5hbWVzLCBsZXQncyBmb2N1cyBvbiB0aGUgYHByb2JlYCBmdW5jdGlvbnMgb2YgdGhlICpzYW1wbGUqIGRyaXZlcnMuIExpc3RpbmcgYFNhbXBsZURyaXZlcjo6cHJvYmVgLCBgRG1hU2FtcGxlRHJpdmVyOjpwcm9iZWAsIGV0Yy4gd291bGQgYmUgZmFyIG1vcmUgaW50dWl0aXZlLiBJdCBkaXJlY3RseSBtYXBzIHRoZSBjb2RlIGJhY2sgdG8gdGhlIGNvbmNyZXRlIGRyaXZlcnMuXG5cbkxldCBtZSB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yc2AgdG8gbWFrZSBzdXJlIHRoZSBzYW1wbGUgZHJpdmVycyBwcm92aWRlIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODEyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjEzOjU3LjcyMTc2Mjg4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzOTE0NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZuIHByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvcnVzdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5ycz0xMTc9aW1wbCBwbGF0Zm9ybTo6RHJpdmVyIGZvciBSdXN0RGVidWdGcyB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTEyMi1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzOjEyMzogICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTEyNC0gICAgICAgIHBkZXY6IFxcdTAwMjYnYm91bmQgcGxhdGZvcm06OkRldmljZVxcdTAwM2NDb3JlXFx1MDAzYydfXFx1MDAzZVxcdTAwM2UsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnM9NTg9aW1wbCBwY2k6OkRyaXZlciBmb3IgRG1hU2FtcGxlRHJpdmVyIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycy02Mi1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnM6NjM6ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTY0LSAgICAgICAgcGRldjogXFx1MDAyNidib3VuZCBwY2k6OkRldmljZVxcdTAwM2NDb3JlXFx1MDAzYydfXFx1MDAzZVxcdTAwM2UsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzPTMxPWltcGwgYXV4aWxpYXJ5OjpEcml2ZXIgZm9yIEF1eGlsaWFyeURyaXZlciB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzLTM2LVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnM6Mzc6ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycy0zOC0gICAgICAgIGFkZXY6IFxcdTAwMjYnYm91bmQgYXV4aWxpYXJ5OjpEZXZpY2VcXHUwMDNjQ29yZVxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycz03Mj1pbXBsIHBjaTo6RHJpdmVyIGZvciBQYXJlbnREcml2ZXIge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5ycy03Ny1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzOjc4OiAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnMtNzktICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnM9MzM9aW1wbCBpMmM6OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMtNDAtXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5yczo0MTogICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzLTQyLSAgICAgICAgaWRldjogXFx1MDAyNidib3VuZCBpMmM6OkkyY0NsaWVudFxcdTAwM2NDb3JlXFx1MDAzYydfXFx1MDAzZVxcdTAwM2UsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzPTEzNz1pbXBsIHBjaTo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xNDItXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5yczoxNDM6ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xNDQtICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBjaTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycz0xMDA9aW1wbCBwbGF0Zm9ybTo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzLTEwNS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnM6MTA2OiAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycy0xMDctICAgICAgICBwZGV2OiBcXHUwMDI2J2JvdW5kIHBsYXRmb3JtOjpEZXZpY2VcXHUwMDNjQ29yZVxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycz0yNj1pbXBsIHVzYjo6RHJpdmVyIGZvciBTYW1wbGVEcml2ZXIge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy0zMC1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzOjMxOiAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnMtMzItICAgICAgICBpbnRmOiBcXHUwMDI2J2JvdW5kIHVzYjo6SW50ZXJmYWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnM9MTA1PWltcGwgcGxhdGZvcm06OkRyaXZlciBmb3IgU2FtcGxlRHJpdmVyIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMtMTEwLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnM6MTExOiAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbnNhbXBsZXMvcnVzdC9ydXN0X2kyY19jbGllbnQucnMtMTEyLSAgICAgICAgcGRldjogXFx1MDAyNidib3VuZCBwbGF0Zm9ybTo6RGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzPTM2PWltcGwgcGxhdGZvcm06OkRyaXZlciBmb3IgU2FtcGxlU29jRHJpdmVyIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycy00MS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnM6NDI6ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTQzLSAgICAgICAgcGRldjogXFx1MDAyNidib3VuZCBwbGF0Zm9ybTo6RGV2aWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTM6NTcuODM1NjkyNjI4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExOTI4MDQxMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBDb251bmRydW0gYW5kIENvbmZpZyBWZXJpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBpbnRlZ3JhdGUgdGhlc2UgUnVzdCBkcml2ZXIgY2hhbmdlcyB3aXRoIHRoZSBmdXp6ZXIsIHNwZWNpZmljYWxseSBjb25zaWRlcmluZyBgRm9jdXNTeW1ib2xzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgdGhlIGBwcm9iZWAgZnVuY3Rpb25zIGZyb20gdGhlIHNhbXBsZSBkcml2ZXJzIGFzIHRhcmdldHMuIEhvd2V2ZXIsIHRoZSBpc3N1ZSBpcyB0aGF0IHN5emthbGxlciByZWxpZXMgb24gc3ltYm9sIG5hbWVzLCBhbmQgUnVzdCB1c2VzIG5hbWUgbWFuZ2xpbmcuIEZvciBpbnN0YW5jZSwgYHJ1c3RfZHJpdmVyX3BjaTo6U2FtcGxlRHJpdmVyOjpwcm9iZWAgYmVjb21lcyBzb21ldGhpbmcgdW5yZWFkYWJsZS5cblxuSSdtIHF1ZXN0aW9uaW5nIHdoZXRoZXIgc3l6a2FsbGVyIGV2ZW4gKnN1cHBvcnRzKiBSdXN0IGRlbWFuZ2xpbmcgb3IgbWF0Y2hpbmcuIEkgY291bGQgcHJvdmlkZSBlaXRoZXIgbmFtZSwgbWFuZ2xlZCBvciBkZW1hbmdsZWQsIGJ1dCB0aGUgc2FmZXN0IGFwcHJvYWNoIGlzIHRoZSBleGFjdCBuYW1lIGlmIGF2YWlsYWJsZS4gT3IsIHBlcmhhcHMsIEkgc2hvdWxkIGp1c3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGNoYW5nZXMgd2VyZSBtYWRlIGluIGBydXN0L2tlcm5lbC9wY2kucnNgIGFuZCBvdGhlciBzaW1pbGFyIGZpbGVzLiBJIHRob3VnaHQgYWJvdXQgYElkQXJyYXk6Om5ld2AgYW5kIGBJZEFycmF5OjpuZXdfd2l0aG91dF9pbmRleGAgYXMgcG9zc2liaWxpdGllcywgYnV0IHRoZXNlIGFyZSBgY29uc3QgZm5gIGFuZCBldmFsdWF0ZWQgYXQgY29tcGlsZS10aW1lLCBzbyB0aGV5IHdvbid0IGV2ZW4gYmUgaW4gdGhlIGJpbmFyeSwgcmlnaHQ/XG5cblRoZW4gSSB3ZW50IHRocm91Z2ggdGhlIHJ1bnRpbWUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZC4gRnJvbSBgcnVzdC9rZXJuZWwvZGV2aWNlX2lkLnJzYCBpdCdzIGBpbmZvX3VuY2hlY2tlZGAsIGBpbmZvX3VuY2hlY2tlZF9vcHRgLiBUaGVzZSBhcmUgbWFya2VkIGFzIGB1bnNhZmUgZm5gIGFuZCBsaWtlbHkgaW5saW5lZC4gSW4gYHJ1c3Qva2VybmVsL2RyaXZlci5yc2AsIEknbSBzZWVpbmcgYGlkX2luZm9gLCBhbHNvIGB1bnNhZmUgZm5gIGFuZCBsaWtlbHkgaW5saW5lZC4gTm93IHRoZSBpbnRlcmVzdGluZyBvbmVzOiBgcHJvYmVfY2FsbGJhY2tgIGluIGBydXN0L2tlcm5lbC9wY2kucnNgLCBgcnVzdC9rZXJuZWwvdXNiLnJzYCwgYHJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzYCwgYHJ1c3Qva2VybmVsL2kyYy5yc2AsIGFuZCBgcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzYC5cblxuT2theSwgbGV0J3Mgc2VlIGhvdyBgcHJvYmVfY2FsbGJhY2tgIGlzIGV4cG9ydGVkLiBJdCdzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gQyBjb2RlLCBsaWtlIGluIGBydXN0L2tlcm5lbC9wY2kucnNgLCBzbyBpdCdzICpkZWZpbml0ZWx5KiBpbiB0aGUgYmluYXJ5LiBUaGUgbWFuZ2xlZCBuYW1lIGlzIGdvaW5nIHRvIGJlIHNvbWV0aGluZyBjcnlwdGljIGxpa2UgYF9aTi4uLnByb2JlX2NhbGxiYWNrLi4uRWAuIEdpdmVuIHRoZSBtYW5nbGluZywgaXQgc2VlbXMgY2hhbGxlbmdpbmcgdG8gZ2V0IHRoZSBleGFjdCBuYW1lIHdpdGhvdXQgZGlnZ2luZyBkZWVwZXIuIE1heWJlIEkgc2hvdWxkbid0IHNwZWNpZnkgYEZvY3VzU3ltYm9sc2AgZm9yIHRoZXNlIFJ1c3QgZ2VuZXJpYyBmdW5jdGlvbnMsIG9yIGp1c3Qgb21pdCBgRm9jdXNTeW1ib2xzYCBjb21wbGV0ZWx5LiBJZiBJIHNraXAgYEZvY3VzU3ltYm9sc2AsIHRoZSBmdXp6ZXIgd2lsbCBzdGlsbCBoaXQgdGhlc2UgY29kZSBwYXRocyBuYXR1cmFsbHkgaWYgcmVhY2hhYmxlLCBzbyB0aGF0IG1ha2VzIHRoaW5ncyBlYXNpZXIuXG5cbkxldCdzIGRvIGEgcXVpY2sgc2NhbiBmb3Igbm9uLWdlbmVyaWMgZnVuY3Rpb25zLiBJIHNlZSBgYWNwaV9vZl9tYXRjaF9kZXZpY2VgIGluIGBkcml2ZXJzL2FjcGkvYnVzLmNgIGNoYW5nZWQgdG8gYHN0YXRpY2AsIGFuZCB0aGUgcmVtb3ZhbCBvZiBgcnVzdF9oZWxwZXJfYWNwaV9vZl9tYXRjaF9kZXZpY2VgLCBzbyBubyBuZXcgQyBmdW5jdGlvbnMgYXJlIGFkZGVkLlxuXG5Ob3cgZm9yIHRoZSBjb25maWdzOiBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCB0byBlbmFibGUuIFRoZSBvbmVzIEkndmUgbGlzdGVkIGFyZSBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBgU0FNUExFX1JVU1RfU09DYCwgYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuXG5cblRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgRFJNX05PVkFgLCBgRFJNX1RZUmAsIGBOT1ZBX0NPUkVgLCBgUFdNX1RIMTUyMGAsIGFuZCBgQ1BVRlJFUV9EVF9SVVNUYCBhcmUgYWN0dWFsbHkgcHJlc2VudCBpbiB0aGUgdHJlZSBhbmQgY2FuIGJlIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjM0LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjA5Ljc2MzczODIzNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNzUyODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgKERSTV9OT1ZBfERSTV9UWVJ8Tk9WQV9DT1JFfFBXTV9USDE1MjB8Q1BVRlJFUV9EVF9SVVNUKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jcHVmcmVxL0tjb25maWc9MjA3PWNvbmZpZyBDUFVGUkVRX0RUXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy0yMTgtXFxuZHJpdmVycy9jcHVmcmVxL0tjb25maWc6MjE5OmNvbmZpZyBDUFVGUkVRX0RUX1JVU1RcXG5kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy0yMjAtXFx0dHJpc3RhdGUgXFxcIlJ1c3QgYmFzZWQgR2VuZXJpYyBEVCBiYXNlZCBjcHVmcmVxIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWc6MTpjb25maWcgRFJNX05PVkFcXG5kcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIk5vdmEgRFJNIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZy0yLVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZzozOmNvbmZpZyBEUk1fVFlSXFxuZHJpdmVycy9ncHUvZHJtL3R5ci9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIlR5ciAoUnVzdCBEUk0gc3VwcG9ydCBmb3IgQVJNIE1hbGkgQ1NGLWJhc2VkIEdQVXMpXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWc6MTpjb25maWcgTk9WQV9DT1JFXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiTm92YSBDb3JlIEdQVSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3B3bS9LY29uZmlnPTc2Mj1jb25maWcgUFdNX1RFR1JBXFxuLS1cXG5kcml2ZXJzL3B3bS9LY29uZmlnLTc3Mi1cXG5kcml2ZXJzL3B3bS9LY29uZmlnOjc3Mzpjb25maWcgUFdNX1RIMTUyMFxcbmRyaXZlcnMvcHdtL0tjb25maWctNzc0LVxcdHRyaXN0YXRlIFxcXCJUSDE1MjAgUFdNIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjEyLjk4MTI3NzE3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkzMDU0NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqUnVzdCBEcml2ZXIgTGFuZHNjYXBlIEFzc2Vzc21lbnQqKlxuXG5ZZXMsIHRoYXQncyBhYnNvbHV0ZWx5IHJpZ2h0LiBUaGUgaW5pdGlhbCBhc3Nlc3NtZW50IGNvbmZpcm1zIHRoZSBuZWVkIHRvIGV2YWx1YXRlIGF2YWlsYWJsZSBSdXN0IGRyaXZlcnMuIE15IHByaW1hcnkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgbWF0dXJpdHkgYW5kIGF2YWlsYWJpbGl0eSBvZiBkcml2ZXJzIHNwZWNpZmljYWxseSB3cml0dGVuIGluIFJ1c3QuIFNvLCBub3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYW55IG90aGVyIFJ1c3QgZHJpdmVycyBvdXQgdGhlcmU/IEkgbmVlZCB0byBidWlsZCBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgb2YgbGV2ZXJhZ2luZyB0aGlzIGxhbmd1YWdlIGZvciBvdXIgcmVxdWlyZW1lbnRzLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIGxhbmRzY2FwZSBhY3R1YWxseSBsb29rcyBsaWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI1NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjE3LjI3NDMzNDYyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI0Nzk2ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyIVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvcGNpLnJzPTEyNz0gICAgZXh0ZXJuIFxcXCJDXFxcIiBmbiByZW1vdmVfY2FsbGJhY2socGRldjogKm11dCBiaW5kaW5nczo6cGNpX2Rldikge1xcbi0tXFxucnVzdC9rZXJuZWwvcGNpLnJzLTE0Ny0vLy9gYGBpZ25vcmVcXG5ydXN0L2tlcm5lbC9wY2kucnM6MTQ4Oi8vLyBrZXJuZWw6Om1vZHVsZV9wY2lfZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvcGNpLnJzLTE0OS0vLy8gICAgIHR5cGU6IE15RHJpdmVyLFxcbi0tXFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzPTQyOD1wdWIoY3JhdGUpIGZuIG1vZHVsZShpbmZvOiBNb2R1bGVJbmZvKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW1cXHUwMDNlIHtcXG4tLVxcbnJ1c3QvbWFjcm9zL21vZHVsZS5ycy01MTYtICAgICAgICAvLy8gVGhlIGBMb2NhbE1vZHVsZWAgdHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIGNyZWF0ZWQgYnkgYG1vZHVsZSFgLFxcbnJ1c3QvbWFjcm9zL21vZHVsZS5yczo1MTc6ICAgICAgICAvLy8gYG1vZHVsZV9wY2lfZHJpdmVyIWAsIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyIWAsIGV0Yy5cXG5ydXN0L21hY3Jvcy9tb2R1bGUucnMtNTE4LSAgICAgICAgdHlwZSBMb2NhbE1vZHVsZSA9ICN0eXBlXztcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycz0xMTA9ICAgIGZuIGRyb3Aoc2VsZjogUGluXFx1MDAzY1xcdTAwMjZtdXQgU2VsZlxcdTAwM2UpIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RtYS5ycy0xMjUtXFxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzOjEyNjprZXJuZWw6Om1vZHVsZV9wY2lfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTEyNy0gICAgdHlwZTogRG1hU2FtcGxlRHJpdmVyLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycz0xODI9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzLTE4Ni1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzOjE4NzprZXJuZWw6Om1vZHVsZV9wY2lfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xODgtICAgIHR5cGU6IFNhbXBsZURyaXZlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTQ6MjAuMjk5MTQwMzg4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTYwNTgxMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlciFgIE1hY3JvKipcblxuT2theSwgdGltZSB0byBkaXNzZWN0IGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyIWAuIExldCdzIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGV4cGFuc2lvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBwbGF0Zm9ybSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUgaW4gdGhlIGtlcm5lbC4gSSBhbHJlYWR5IGtub3cgdGhlIGJhc2ljcywgYnV0IEkgbmVlZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtYWNybydzIHNwZWNpZmljIHJvbGUuIEkgd2FudCB0byBzZWUgaG93IGl0IHJlZ2lzdGVycyB0aGUgZHJpdmVyLCBoYW5kbGVzIHByb2JlL3JlbW92ZSBmdW5jdGlvbnMsIGFuZCBsaWtlbHkgbWFuYWdlcyB0aGUgZHJpdmVyJ3MgbGlmZXRpbWUgd2l0aGluIHRoZSBwbGF0Zm9ybSBidXMgc3lzdGVtLiBJIGV4cGVjdCBpdCdzIGEgY29udmVuaWVuY2UgbWFjcm8sIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udmVuaWVuY2UgZmFjdG9yIGlzIGltcGxlbWVudGVkIHVuZGVyIHRoZSBob29kLiBJJ20gbG9va2luZyBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBob3cgZGV2aWNlIG1hdGNoaW5nIGlzIGhhbmRsZWQsIGFuZCB3aGF0IG1lY2hhbmlzbXMgYXJlIHVzZWQgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBkcml2ZXIuIExldCdzIHNlZSBob3cgbXVjaCBib2lsZXJwbGF0ZSBpdCBhYnN0cmFjdHMgYW5kIHdoYXQgcmVtYWlucyBleHBvc2VkLiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIG9uZSFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NDMsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNDoyMy42NTUyMDMyMzRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1ODEzMjYxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlciFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycz0yMDY9ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnMtMjE0LVxcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yczoyMTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTYtICAgIHR5cGU6IENQVUZyZXFEVERyaXZlcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzLTE1LVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzOjE2Omtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzLTE3LSAgICB0eXBlOiBUeXJQbGF0Zm9ybURyaXZlcixcXG4tLVxcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzPTEzNz0gICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NhY3BpOjpJZFRhYmxlXFx1MDAzY1NlbGY6OklkSW5mb1xcdTAwM2VcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzLTE0Ni0vLy8gYGBgaWdub3JlXFxucnVzdC9rZXJuZWwvcGxhdGZvcm0ucnM6MTQ3Oi8vLyBrZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcXG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycy0xNDgtLy8vICAgICB0eXBlOiBNeURyaXZlcixcXG4tLVxcbnJ1c3Qva2VybmVsL3B3bS5ycz03MzQ9bWFjcm9fcnVsZXMhIG1vZHVsZV9wd21fcGxhdGZvcm1fZHJpdmVyIHtcXG5ydXN0L2tlcm5lbC9wd20ucnMtNzM1LSAgICAoJCgkdXNlcl9hcmdzOnR0KSopID1cXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9wd20ucnM6NzM2OiAgICAgICAgJGNyYXRlOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvcHdtLnJzLTczNy0gICAgICAgICAgICAkKCR1c2VyX2FyZ3MpKlxcbi0tXFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzPTQyOD1wdWIoY3JhdGUpIGZuIG1vZHVsZShpbmZvOiBNb2R1bGVJbmZvKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjVG9rZW5TdHJlYW1cXHUwMDNlIHtcXG4tLVxcbnJ1c3QvbWFjcm9zL21vZHVsZS5ycy01MTYtICAgICAgICAvLy8gVGhlIGBMb2NhbE1vZHVsZWAgdHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlIGNyZWF0ZWQgYnkgYG1vZHVsZSFgLFxcbnJ1c3QvbWFjcm9zL21vZHVsZS5yczo1MTc6ICAgICAgICAvLy8gYG1vZHVsZV9wY2lfZHJpdmVyIWAsIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyIWAsIGV0Yy5cXG5ydXN0L21hY3Jvcy9tb2R1bGUucnMtNTE4LSAgICAgICAgdHlwZSBMb2NhbE1vZHVsZSA9ICN0eXBlXztcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMtNTctXFxuc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5yczo1ODprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzLTU5LSAgICB0eXBlOiBSdXN0RGVidWdGcyxcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycz0xODE9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMtMTg1LVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yczoxODY6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzLTE4Ny0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycz0xMzE9ICAgIGZuIHVuYmluZFxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycy0xNDEtXFxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5yczoxNDI6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfaTJjX2NsaWVudC5ycy0xNDMtICAgIHR5cGU6IFNhbXBsZURyaXZlcixcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycz00Mj0gICAgZm4gcHJvYmVcXHUwMDNjJ2JvdW5kXFx1MDAzZShcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5ycy03MS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnM6NzI6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTczLSAgICB0eXBlOiBTYW1wbGVTb2NEcml2ZXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjI3LjIzNjUzNzYzOFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI0MzQyMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBEcml2ZXJzIGFuZCBNb2R1bGVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgcG9pbnRzIHRvIGEgZmV3IGtleSBkcml2ZXJzIGFuZCBtb2R1bGVzIHRoYXQgbmVlZCBjbG9zZXIgZXhhbWluYXRpb24uIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQ1BVRlJFUV9EVF9SVVNUYCwgd2hpY2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgbGlrZWx5IHJlbGF0aW5nIHRvIENQVSBmcmVxdWVuY3kgc2NhbGluZyBhbmQgZGV2aWNlIHRyZWUgaW50ZWdyYXRpb24sIGFsbCB3cml0dGVuIGluIFJ1c3QuIFRoZW4gdGhlcmUncyBgRFJNX1RZUmAsIHN1Z2dlc3Rpbmcgd2UncmUgbG9va2luZyBhdCBhIGRpc3BsYXkgZHJpdmVyLCBhbmQgYFBXTV9USDE1MjBgIHZpYSBgbW9kdWxlX3B3bV9wbGF0Zm9ybV9kcml2ZXIhYCwgd2hpY2ggcHJvYmFibHkgZGVhbHMgd2l0aCBwdWxzZS13aWR0aCBtb2R1bGF0aW9uLCBsaWtlbHkgdGhlIFRIMTUyMCB2YXJpYW50LiBUaGUgaW5jbHVzaW9uIG9mIGBtb2R1bGVfcHdtX3BsYXRmb3JtX2RyaXZlciFgIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc3VnZ2VzdHMgYSBjZXJ0YWluIHBsYXRmb3JtIGFic3RyYWN0aW9uIGxheWVyIGFuZCBob3cgdGhlIFBXTSBkcml2ZXIgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtLlxuXG5Ob3csIGBEUk1fTk9WQWAgaXMgYWxzbyBvbiB0aGUgbGlzdCDigJMgY291bGQgYmUgYW5vdGhlciBkaXNwbGF5IGRyaXZlciwgb3IgcGVyaGFwcyBhdXhpbGlhcnkgdG8gYERSTV9UWVJgLiBGaW5hbGx5LCB0aGVyZSdzIGBOT1ZBX0NPUkVgLCBmbGFnZ2VkIGFzIFBDSS4gVGhpcyBvbmUgbmVlZHMgYSB0aG9yb3VnaCBsb29rLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBgTk9WQV9DT1JFYCBpcyB0aGUgY3J1Y2lhbCBwaWVjZSwgYWN0aW5nIGFzIHRoZSBjb3JlIFBDSSBkcml2ZXIgZm9yIHRoZSBcIk5PVkFcIiBoYXJkd2FyZS4gSSB0aGluayBJJ2xsIHN0YXJ0IHRoZXJlLiBVbmRlcnN0YW5kaW5nIGBOT1ZBX0NPUkVgIHdpbGwgbGlrZWx5IHNoZWQgbGlnaHQgb24gaG93IGFsbCB0aGVzZSBvdGhlciBkcml2ZXJzLCBlc3BlY2lhbGx5IHRoZSBkaXNwbGF5LXJlbGF0ZWQgb25lcywgaW50ZXJmYWNlIGFuZCBhcmUgbWFuYWdlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MzAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNDozMS44NjA4ODM5MTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzY4MjA2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXIhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L25vdmEtY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjMyLjAxNDU3NzgzNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgyNjQyMDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTm92YSBHUFUgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYG5vdmFgIEdQVSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnNgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIHRoZSBcImNvcmVcIiBkaXJlY3Rvcnkgb2Z0ZW4gaG91c2VzIHRoZSBlc3NlbnRpYWwgbG9naWMgZm9yIGEgZHJpdmVyLiBNeSBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyBmaWxlIHdpbGwgY29udGFpbiB0aGUgbWFpbiBkcml2ZXIgZW50cnkgcG9pbnRzIGFuZCwgdmVyeSBsaWtlbHksIHRoZSBkZWZpbml0aW9uIG9yIHVzYWdlIG9mIGEgYG1vZHVsZV9gIHZhcmlhYmxlIG9yIHN0cnVjdHVyZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGluIGtlcm5lbCBtb2R1bGVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgaXQncyB0aGUgY29yZSBtb2R1bGUsIG9yIHBvc3NpYmx5IGEgaGVscGVyIG1vZHVsZS4gSSdsbCBsb29rIGZvciBob3cgdGhlIGtlcm5lbCBpcyBoYW5kbGluZyB0aGlzIGRyaXZlciBtb2R1bGUncyBpbnRlcmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzNjMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNDozNS40OTcyMjMzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExMDk4MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5ycz00NDU9ICAgIHB1YihjcmF0ZSkgY29uc3QgZm4gY3JlYXRlKFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5yczo0NDY6ICAgICAgICBtb2R1bGVfbmFtZTogXFx1MDAyNidzdGF0aWMgY29yZTo6ZmZpOjpDU3RyLFxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5ycy00NDctICAgICkgLVxcdTAwM2UgZmlybXdhcmU6Ok1vZEluZm9CdWlsZGVyXFx1MDAzY05cXHUwMDNlIHtcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZmlybXdhcmUucnM6NDQ4OiAgICAgICAgbGV0IG11dCB0aGlzID0gU2VsZihmaXJtd2FyZTo6TW9kSW5mb0J1aWxkZXI6Om5ldyhtb2R1bGVfbmFtZSkpO1xcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9maXJtd2FyZS5ycy00NDktICAgICAgICBsZXQgbXV0IGkgPSAwO1xcbi0tXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL25vdmFfY29yZS5ycz01Nj0gICAgZm4gaW5pdChtb2R1bGU6IFxcdTAwMjYnc3RhdGljIGtlcm5lbDo6VGhpc01vZHVsZSkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGYsIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzLTc4LVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9ub3ZhX2NvcmUucnM6Nzk6a2VybmVsOjptb2R1bGVfZmlybXdhcmUhKGZpcm13YXJlOjpNb2RJbmZvQnVpbGRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjM1LjU1ODM0MzE4NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkyMTUxNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIGBub3ZhX2NvcmVgIERyaXZlciBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBzbyBJIHNlZSBhIHJlZmVyZW5jZSB0byBgbm92YV9jb3JlYC4uLiBhbmQgSSBpbW1lZGlhdGVseSBhc3N1bWUgaXQncyBlbXBsb3lpbmcgYSBtYWNybywgbW9zdCBsaWtlbHkgYG1vZHVsZSFgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGdpdmVuIGl0cyBsaWtlbHkgcm9sZSBpbiBhIGtlcm5lbCBkcml2ZXIuIEdvb2QgcGxhY2UgdG8gc3RhcnQuIExldCdzIGdldCByaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIGlzIGBkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzYC4gVGltZSB0byBvcGVuIHVwIHRoYXQgZmlsZSBhbmQgc3RhcnQgZGlzc2VjdGluZyB0aGUgaW1wbGVtZW50YXRpb24uIEknbSBrZWVuIHRvIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBtb2R1bGUgYW5kIHdoYXQgaW5pdGlhbGl6YXRpb24vbWFuYWdlbWVudCBzdHJhdGVnaWVzIGFyZSBpbiBwbGF5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg0MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjM4Ljg1MDQ5ODA0NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzMzU2ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZSFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvbm92YS1jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzPTU2PSAgICBmbiBpbml0KG1vZHVsZTogXFx1MDAyNidzdGF0aWMga2VybmVsOjpUaGlzTW9kdWxlKSAtXFx1MDAzZSBpbXBsIFBpbkluaXRcXHUwMDNjU2VsZiwgRXJyb3JcXHUwMDNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L25vdmEtY29yZS9ub3ZhX2NvcmUucnMtNjktXFxuZHJpdmVycy9ncHUvbm92YS1jb3JlL25vdmFfY29yZS5yczo3MDptb2R1bGUhIHtcXG5kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbm92YV9jb3JlLnJzLTcxLSAgICB0eXBlOiBOb3ZhQ29yZU1vZHVsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTQ6MzkuMDYzODYyODk1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMjU5NjU0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJ1c3QtQmFzZWQgTW9kdWxlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgdXNpbmcgYG1vZHVsZSFgLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgbGV0IG1lIGJyZWFrIGRvd24gdGhlc2UgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQuIFdlJ3ZlIGdvdCBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBhbmQgYFNBTVBMRV9SVVNUX1NPQ2AuIFRoYXQgY292ZXJzIGEgZ29vZCByYW5nZSBvZiBzYW1wbGUgZHJpdmVycy5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBkaXNwbGF5IG9wdGlvbnMgYXMgd2UgaGF2ZSBgRFJNX05PVkFgLCBgRFJNX1RZUmAsIGBOT1ZBX0NPUkVgLiBXYWl0LCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIHRoYXQgYERSTV9OT1ZBYCBhbmQgYE5PVkFfQ09SRWAgaW5oZXJlbnRseSBkZXBlbmQgb24gYERSTWAsIHNvIGVuYWJsaW5nIHRob3NlIG1lYW5zIGBEUk1gIGlzIGltcGxpZWQuIFRoZW4gd2UgaGF2ZSBgUFdNX1RIMTUyMGAgd2hpY2ggcmVxdWlyZXMgYFBXTWAsIGFuZCB0aGVuIHRoZXJlJ3MgYENQVUZSRVFfRFRfUlVTVGAgcmVxdWlyaW5nIGBDUFVGUkVRX0RUYC4gSTJDLCBQQ0ksIFVTQiwgcGxhdGZvcm0gYW5kIGF1eGlsaWFyeSBhcmUgYWxsIHRha2VuIGNhcmUgb2YgaW4gdGhpcyBzYW1wbGUuXG5cblNvLCBgU0FNUExFX1JVU1RfRFJJVkVSX0kyQ2AgbmVlZHMgYEkyQ2AsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCBuZWVkcyBgUENJYCwgYW5kIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCBkZXBlbmRzIG9uIGBVU0JgLiBJdCBsb29rcyBsaWtlIGBTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk1gIGlzIG9uIHRoZSBwbGF0Zm9ybSBidXMsIHdoaWNoIHNob3VsZCBhbHdheXMgYmUgb24uIGBTQU1QTEVfUlVTVF9EUklWRVJfQVVYSUxJQVJZYCBuZWVkcyBgQVVYSUxJQVJZX0JVU2AsIHNvIHRoYXQncyBhbGwuXG5cbkknbSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBSdXN0LWJhc2VkIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgaW4gYWRkaXRpb24gdG8gdGhlc2Ugc2FtcGxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNzQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTQ6NDUuMTg5ODMyMjU0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM3MDg5MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pMmNfZHJpdmVyIVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvaTJjLnJzPTIyNT0gICAgZm4gYWNwaV9pZF90YWJsZSgpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NhY3BpOjpJZFRhYmxlXFx1MDAzY1NlbGY6OklkSW5mb1xcdTAwM2VcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2kyYy5ycy0yMzQtLy8vIGBgYGlnbm9yZVxcbnJ1c3Qva2VybmVsL2kyYy5yczoyMzU6Ly8vIGtlcm5lbDo6bW9kdWxlX2kyY19kcml2ZXIhIHtcXG5ydXN0L2tlcm5lbC9pMmMucnMtMjM2LS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzPTYwPSAgICBmbiB1bmJpbmRcXHUwMDNjJ2JvdW5kXFx1MDAzZShpZGV2OiBcXHUwMDI2J2JvdW5kIGkyYzo6STJjQ2xpZW50XFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSwgX3RoaXM6IFBpblxcdTAwM2NcXHUwMDI2U2VsZlxcdTAwM2UpIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMtNjQtXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5yczo2NTprZXJuZWw6Om1vZHVsZV9pMmNfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycy02Ni0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNDo0Ny4zMjY5MjkyNjdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NTk0NDY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBVU0IgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIFVTQiBkcml2ZXIgaW1wbGVtZW50YXRpb24uLi4gYW5kIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogd2hhdCdzIHRoZSBkZWFsIHdpdGggYG1vZHVsZV91c2JfZHJpdmVyIWA/IFRoYXQgbWFjcm8gb3IgZnVuY3Rpb24sIHdoYXRldmVyIGl0J3MgZGVmaW5lZCBhcywgaXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQsIGlzbid0IGl0PyBJdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHdoZXJlIHRoZSBrZXJuZWwgYW5kIG91ciBkcml2ZXIgYXJlIGxpbmtlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwaWVjZSBmaXJzdC4gSXMgaXQgdXNlZCB0byByZWdpc3RlciB0aGUgZHJpdmVyPyBEZXNjcmliZSB0aGUgaW50ZXJmYWNlcyB0aGUgVVNCIGRldmljZSBzdXBwb3J0cz8gT3IgaXMgaXQgbW9yZSBpbnZvbHZlZCB0aGFuIHRoYXQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG5hbWU/IElzIGl0IGEgcnVzdCBzcGVjaWZpYyB0aGluZywgb3IgaXMgaXQgY29tbW9uIGluIG90aGVyIGxhbmd1YWdlcz8gV2hhdCdzIHRoZSBjb250ZXh0IHdoZXJlIEkgZmluZCBpdCB1c2VkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZ290Y2hhcz8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHN0cnVjdHVyZS4gSXMgaXQgYSBjb21waWxlLXRpbWUgbWVjaGFuaXNtLCBsaW5raW5nIGEgZHJpdmVyIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHk/IE9yIGRvZXMgaXQgcGVyZm9ybSBydW50aW1lIHJlZ2lzdHJhdGlvbj8gRGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUsIGl0IGNvdWxkIGJlIGEgc2ltcGxlIGludGVyZmFjZS4gSWYgSSB1bmRlcnN0YW5kIHRoYXQgbWFjcm8ncyBmdW5jdGlvbiB0aGVuIHRoZSByZXN0IG9mIHRoZSBjb2RlIHdpbGwgbWFrZSBtb3JlIHNlbnNlLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgbWFjcm8gaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE4MCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjUwLjU4Mjg3NzYyMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0Mzc3ODkyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfdXNiX2RyaXZlciFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInJ1c3Qva2VybmVsL3VzYi5ycz00NzI9dW5zYWZlIGltcGwgU3luYyBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Qm91bmRcXHUwMDNlIHt9XFxuLS1cXG5ydXN0L2tlcm5lbC91c2IucnMtNDc4LS8vLyBgYGBpZ25vcmVcXG5ydXN0L2tlcm5lbC91c2IucnM6NDc5Oi8vLyBtb2R1bGVfdXNiX2RyaXZlciEge1xcbnJ1c3Qva2VybmVsL3VzYi5ycy00ODAtLy8vICAgICB0eXBlOiBNeURyaXZlcixcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnM9NDI9ICAgIGZuIGRpc2Nvbm5lY3RcXHUwMDNjJ2JvdW5kXFx1MDAzZShpbnRmOiBcXHUwMDI2J2JvdW5kIHVzYjo6SW50ZXJmYWNlXFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSwgX2RhdGE6IFBpblxcdTAwM2NcXHUwMDI2U2VsZlxcdTAwM2UpIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl91c2IucnMtNDctXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5yczo0ODprZXJuZWw6Om1vZHVsZV91c2JfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy00OS0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNDo1Mi42MjY2NjUxMDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NTMwNDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0J3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBDb2RlIEFyY2hpdGVjdHVyZSBFbGVtZW50KipcblxuSG1tLCBJJ20ganVzdCBjb25zaWRlcmluZyBhIHNwZWNpZmljIHBvaW50IHdpdGhpbiB0aGlzIGFyY2hpdGVjdHVyZS4gV2hhdCdzIHRoZSBkZWFsIHdpdGggYG1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyIWA/IEl0IGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gSXMgaXQgYSBjZW50cmFsIGNvbXBvbmVudCwgYSB1dGlsaXR5LCBvciBhIG1vcmUgb2JzY3VyZSBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZsb3c/IEknbSB3b25kZXJpbmcgYWJvdXQgaXRzIHB1cnBvc2UsIGl0cyBwb3RlbnRpYWwgZm9yIHJldXNlLCBhbmQgaWYgaXQgY291bGQgYmVjb21lIGEgYm90dGxlbmVjayBvciBhIHBvaW50IG9mIGNyaXRpY2FsIGZhaWx1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyB0aGVyZSBhIGJldHRlciB3YXk/IFBlcmhhcHMgaXQgc2hvdWxkIGJlIHJlZmFjdG9yZWQsIG9yIGltcHJvdmVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMTY3NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE0OjU1LjcyMTk3MTg3NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNTYzNDYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfYXV4aWxpYXJ5X2RyaXZlciFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9ub3ZhL25vdmEucnMtMTAtXFxuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5yczoxMTprZXJuZWw6Om1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyISB7XFxuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5ycy0xMi0gICAgdHlwZTogTm92YURyaXZlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTQ6NTcuODI3NjE2MDgyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxODE3NDU5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKlJ1c3QgRHJpdmVyIE1vZHVsZSBEaXZlKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHJldmlld2luZyB0aGlzIFJ1c3QgY29kZSwgYW5kIEkndmUganVzdCBsYW5kZWQgb24gYHNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9hdXhpbGlhcnkucnNgLiBBbmQgd2hhdCdzIHRoaXM/IEknbSBzZWVpbmcgYSBgbW9kdWxlX2F1eGlsaWFyeV9kcml2ZXIhYCBtYWNybyBpbnZvY2F0aW9uLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgc3BlY2lmaWMgYXV4aWxpYXJ5IGZpbGUgaXMgbGV2ZXJhZ2luZyBhIGRyaXZlciBtYWNybyBhbmQsIGJ5IGV4dGVuc2lvbiwgd2hlcmUgZWxzZSB0aGlzIGRlc2lnbiBkZWNpc2lvbiBtYXkgcHJlc2VudC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIG1vcmUgbnVhbmNlZCBiZWhhdmlvcnMgdGhhdCBzaG91bGQgaW5mbHVlbmNlIGZ1cnRoZXIgd29yay4gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBnZW5lcmFsIHBhdHRlcm4gb2YgdGhpcyBtb2R1bGUgZGVzaWduLi4uIHJpZ2h0LCB0aGUgaW50ZW50aW9uIGhlcmUgaXMgbGlrZWx5IHRvIGRlZmluZSB0aGUgZHJpdmVyIGxvZ2ljIGluIGEgbW9kdWxhciBhbmQgcmV1c2FibGUgd2F5LCBwcmVzdW1hYmx5IGZvciBtYW5hZ2luZyBzb21lIGF1eGlsaWFyeSBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gdGhlIG1haW4gZHJpdmVyIG9yIHRvIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uIGFuZCBlbmhhbmNlIG1haW50YWluYWJpbGl0eSwgcGVyaGFwcyB3aXRoaW4gYSBsYXJnZXIgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gZGlnIGludG8gYG1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyIWAgYW5kIHRyYWNlIGl0cyB1c2FnZSB0byBjb25maXJtIG15IGluaXRpYWwgaHlwb3RoZXNpcyBhbmQgZGV0ZXJtaW5lIGV4YWN0bHkgd2hhdCBhdXhpbGlhcnkgZnVuY3Rpb25hbGl0eSBpdCdzIG9yY2hlc3RyYXRpbmcgaGVyZS4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgbWFjcm8gdHJhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxOTM5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTU6MDIuMDA5MzY1NDY5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQwNDQwNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2F1eGlsaWFyeV9kcml2ZXIhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvcnVzdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjAyLjA3MDc4NTAxM1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ3OTE1MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQXV4aWxpYXJ5IFJ1c3QgRHJpdmVyIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBSdXN0IGRyaXZlciBhdXhpbGlhcnkgY29kZS4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc2AuIFRoaXMgZmlsZSBpcyBsaWtlbHkgcHJvdmlkaW5nIGNyaXRpY2FsIHN1cHBvcnRpbmcgZnVuY3Rpb25zIG9yIHN0cnVjdHVyZXMgZm9yIHRoZSBtYWluIGRyaXZlci4gSSdsbCBuZWVkIHRvIGFuYWx5emUgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIGl0cyBjb3JlIHJlc3BvbnNpYmlsaXRpZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb25zLCBoZWxwZXIgZnVuY3Rpb25zLCBhbmQgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtcy4gVW5kZXJzdGFuZGluZyB0aGlzIGF1eGlsaWFyeSBjb2RlIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgZ3Jhc3Agb2YgaG93IHRoZSBSdXN0IGRyaXZlciBmdW5jdGlvbnMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI0MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjA1LjAxODcwNjE2OFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyNzU1MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZSFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2F1eGlsaWFyeS5yc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzPTE0Nj0gICAgZm4gaW5pdChtb2R1bGU6IFxcdTAwMjYnc3RhdGljIGtlcm5lbDo6VGhpc01vZHVsZSkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGYsIEVycm9yXFx1MDAzZSB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzLTE1My1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzOjE1NDptb2R1bGUhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfYXV4aWxpYXJ5LnJzLTE1NS0gICAgdHlwZTogU2FtcGxlTW9kdWxlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNTowNS4yMzE0NzQyMjdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5NTE4NjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gU3RydWN0dXJlKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBjb25maWd1cmF0aW9uIGlzIHVzaW5nIGBtb2R1bGUhYCB0byBkZWZpbmUgaXRzIHN0cnVjdHVyZS4gVGhhdCdzIGEgZmFtaWxpYXIgcGF0dGVybi4gTGV0IG1lIHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGVuYWJsZWQgY29uZmlndXJhdGlvbnMgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIHNjb3BlLiBPa2F5LCBoZXJlJ3MgdGhlIGxpc3Q6IGBSVVNUYCwgYFNBTVBMRVNfUlVTVGAsIGBTQU1QTEVfUlVTVF9ETUFgLCBgU0FNUExFX1JVU1RfRFJJVkVSX0kyQ2AsIGBTQU1QTEVfUlVTVF9JMkNfQ0xJRU5UYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QQ0lgLCBgU0FNUExFX1JVU1RfRFJJVkVSX1BMQVRGT1JNYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9VU0JgLCBgU0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWWAsIGBTQU1QTEVfUlVTVF9TT0NgLCBgRFJNX05PVkFgLCBgRFJNX1RZUmAsIGBOT1ZBX0NPUkVgLCBgUFdNX1RIMTUyMGAsIGBDUFVGUkVRX0RUX1JVU1RgLCBhbmQgYEFVWElMSUFSWV9CVVNgLiBIbW0sIGl0J3MgYSBwcmV0dHkgZGl2ZXJzZSBzZXQsIGNvdmVyaW5nIGRyaXZlcnMsIHNhbXBsZXMsIGFuZCBTb0Mtc3BlY2lmaWMgZWxlbWVudHMuXG5cbldhaXQgYSBzZWNvbmQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBTZWVpbmcgYEFVWElMSUFSWV9CVVNgIGluIHRoZXJlIHJhaXNlcyBhIGZsYWcuIEkgcmVjYWxsIHRoYXQgYmVpbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb24gdmFsdWUuIEl0J3MgYSBjb21tb24gYXJlYSBmb3IgZXJyb3JzIGluIHRoZXNlIHNldHVwcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBhbmQgdXNlIGFyZSBjb3JyZWN0IGhlcmUsIGNvbnNpZGVyaW5nIGl0cyBwb3RlbnRpYWwgdG8gaW5mbHVlbmNlIGEgbnVtYmVyIG9mIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIG5hbWUgaXMgYXBwcm9wcmlhdGUsIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU1OSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNToxMC42MjY2NjUzNzZaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzgwNTY2MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFVWElMSUFSWV9CVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnPTI9bWVudSBcXFwiR2VuZXJpYyBEcml2ZXIgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy0zLVxcbmRyaXZlcnMvYmFzZS9LY29uZmlnOjQ6Y29uZmlnIEFVWElMSUFSWV9CVVNcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy01LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTU6MTIuNzY0NzMwMTU5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NTI1ODcyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byB0aGUgYEFVWElMSUFSWV9CVVNgLiBHb3QgaXQuIE5vdywgd2hhdCdzIGJlZW4gc3BlY2lmaWNhbGx5IGFsdGVyZWQ/IExldCdzIHNlZS4uLiB0aGUgY29yZSBjaGFuZ2VzIHNlZW0gdG8gYmUgaW4gdGhlIGBwcm9iZWAgc2lnbmF0dXJlcyB3aXRoaW4gYm90aCBgcGNpOjpEcml2ZXJgIGFuZCBgdXNiOjpEcml2ZXJgLCBhbmQgYWxzbyB0b3VjaGVzIG9uIGBJZEFycmF5OjpuZXdgIGFuZCBgSWRBcnJheTo6bmV3X3dpdGhvdXRfaW5kZXhgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsIGFkanVzdG1lbnRzIHRvIGhvdyBkZXZpY2UgSURzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgcHJvYmluZyBwcm9jZXNzLiBCZXlvbmQgdGhhdCwgdGhlcmUgaGF2ZSBiZWVuIGVkaXRzIHRvIGBwcm9iZV9jYWxsYmFja2AgYWNyb3NzIGBwY2kucnNgLCBgdXNiLnJzYCwgYHBsYXRmb3JtLnJzYCwgYGkyYy5yc2AsIGFuZCBgYXV4aWxpYXJ5LnJzYC4gQW5kLCB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgYGlkX2luZm9gIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYEFkYXB0ZXJgIHRyYWl0LiBUaGlzIGlzIGxpa2VseSBhbiBpbXByb3ZlbWVudCB0byB0aGUgZGV2aWNlIG1hdGNoaW5nIHByb2Nlc3MgYWNyb3NzIGEgdmFyaWV0eSBvZiBidXNzZXMuXG5cbkZpbmFsbHksIHRoZXJlJ3MgYSBtb2RpZmljYXRpb24gdG8gYGFjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBpbiBgZHJpdmVycy9hY3BpL2J1cy5jYC4gUmlnaHQsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IG9uZS4gQWgsIGl0J3MgYmVlbiBjaGFuZ2VkIHRvIGBzdGF0aWNgLiBPa2F5LCBjdXJpb3VzLiBUaGUgb2J2aW91cyBxdWVzdGlvbiBpczogd2hlcmUgaXMgaXQgY2FsbGVkIGZyb20/IExldCdzIGNoZWNrLi4uIEl0IHNlZW1zIGl0J3MgY2FsbGVkIGZyb20gYGFjcGlfY29tcGFuaW9uX21hdGNoYCBhbHNvIGluIGBkcml2ZXJzL2FjcGkvYnVzLmNgLiBPa2F5LCBsZXQncyBnbyBjaGVjayBgYWNwaV9jb21wYW5pb25fbWF0Y2hgIHRvIHNlZSB3aGF0IGlzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzE2NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNToxOS4yMTczMjEwMDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MTc3OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFjcGlfY29tcGFuaW9uX21hdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYWNwaS9idXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2FjcGkvYnVzLmM9ODUwPWJvb2wgYWNwaV9kZXZpY2VfaXNfZmlyc3RfcGh5c2ljYWxfbm9kZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtODU2LS8qXFxuZHJpdmVycy9hY3BpL2J1cy5jOjg1NzogKiBhY3BpX2NvbXBhbmlvbl9tYXRjaCgpIC0gQ2FuIHdlIG1hdGNoIHZpYSBBQ1BJIGNvbXBhbmlvbiBkZXZpY2VcXG5kcml2ZXJzL2FjcGkvYnVzLmMtODU4LSAqIEBkZXY6IERldmljZSBpbiBxdWVzdGlvblxcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jLTg3Ni0gKi9cXG5kcml2ZXJzL2FjcGkvYnVzLmM6ODc3OmNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9jb21wYW5pb25fbWF0Y2goY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYWNwaS9idXMuYy04Nzgte1xcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jPTEwNzY9Y29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkICphY3BpX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgKmlkcyxcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDc4LXtcXG5kcml2ZXJzL2FjcGkvYnVzLmM6MTA3OTpcXHRyZXR1cm4gYWNwaV9tYXRjaF9hY3BpX2RldmljZShpZHMsIGFjcGlfY29tcGFuaW9uX21hdGNoKGRldikpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDgwLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYz0xMDgzPWNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg2LVxcdGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcyA9IGRldi1cXHUwMDNlZHJpdmVyLVxcdTAwM2VvZl9tYXRjaF90YWJsZTtcXG5kcml2ZXJzL2FjcGkvYnVzLmM6MTA4NzpcXHRjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYgPSBhY3BpX2NvbXBhbmlvbl9tYXRjaChkZXYpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg4LVxcdGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqYWNwaV9pZCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTExMT1ib29sIGFjcGlfZHJpdmVyX21hdGNoX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTExOS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEyMDpcXHRyZXR1cm4gX19hY3BpX21hdGNoX2RldmljZShhY3BpX2NvbXBhbmlvbl9tYXRjaChkZXYpLCBhY3BpX2lkcywgb2ZfaWRzLCBOVUxMLCBOVUxMKTtcXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEyMS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjE5LjI4NTUwNjc2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MDgwMTY1OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBBQ1BJL09GIE1hdGNoaW5nIENsZWFudXAgb24gUnVzdCBEcml2ZXJzIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBhIGNsZWFudXAsIGVzc2VudGlhbGx5LiBXZSdyZSBtYWtpbmcgYGFjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBzdGF0aWMgYW5kIHJlbW92aW5nIGEgUnVzdCBoZWxwZXIgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGtleSBpcyB0aGF0IHRoZSBSdXN0IGNvZGUgbm93IGNhbGxzIGBiaW5kaW5nczo6ZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBmb3IgbWF0Y2ggZGF0YSBpbnN0ZWFkIG9mIGRvaW5nIHRoZSBBQ1BJL09GIG1hdGNoaW5nIGl0c2VsZiwgd2hpY2ggKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBhbmQgSSdtIHVzaW5nIG15IGV4cGVyaWVuY2UgYXMgYSBrZXJuZWwgZXhwZXJ0IHRvIGFzc2Vzcy4gSWYgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgYmVoYXZlcyBkaWZmZXJlbnRseSwgd2UgY291bGQgaGF2ZSBpc3N1ZXMuIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBhIG1peCBvZiBBQ1BJLCBPRiwgYW5kIEkyQy9TUEkgdGFibGVzLCBzbyB0aGUgb2xkIGFwcHJvYWNoIG9mIG1hbnVhbCBjaGVja3MgaW4gUnVzdCBpcyBnb25lLlxuXG5UaGUgY29yZSBvZiB0aGlzIGxvZ2ljIGNoYW5nZSBpcyBhY3R1YWxseSBpbiBgcnVzdC9rZXJuZWwvZHJpdmVyLnJzYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWRfaW5mb2AgZnVuY3Rpb24sIHdoaWNoIGlzLCBpbXBvcnRhbnRseSwgaW5saW5lLiBUaGlzIG1lYW5zIGl0IGdldHMgY29tcGlsZWQgZGlyZWN0bHkgaW50byBlYWNoIGRyaXZlcidzIGBwcm9iZV9jYWxsYmFja2AuIFRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIHBvaW50IGZvciB2YWxpZGF0aW9uIGlzIHRoZSBgcHJvYmVgIGZ1bmN0aW9ucyBvZiB0aGUgc2FtcGxlIGRyaXZlcnMuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlc2UgYXJlIGFsbCBleGVjdXRlZC5cblxuTGV0J3MgcXVpY2tseSBsaXN0IHRoZW06IGBydXN0X2RyaXZlcl9wY2k6OlNhbXBsZURyaXZlcjo6cHJvYmVgLCBgcnVzdF9kcml2ZXJfdXNiOjpTYW1wbGVEcml2ZXI6OnByb2JlYCwgYW5kIHNvIG9uLlxuXG5Ob3csIGEgcmVsYXRlZCB0aG91Z2h0IG9jY3VyczogSG93IGRvZXMgdGhpcyBpbXBhY3Qgb3VyIGZ1enppbmcgc3RyYXRlZ3k/IEknbSB1c2luZyBzeXprYWxsZXIsIGFuZCBJJ20gaW1tZWRpYXRlbHkgY29uY2VybmVkIGFib3V0IHN5bWJvbCBuYW1lcy4gUnVzdCBtYW5nbGVzIHN5bWJvbCBuYW1lcy4gRm9yIGV4YW1wbGUsIGBTYW1wbGVEcml2ZXI6OnByb2JlYCBpcyBnb2luZyB0byBiZSBgX1pOMTVydXN0X2RyaXZlcl9wY2kxMlNhbXBsZURyaXZlcjVwcm9iZTE3aC4uLkVgLCBzbyBwcm92aWRpbmcgYFNhbXBsZURyaXZlcjo6cHJvYmVgIHRvIHN5emthbGxlcidzIGBGb2N1c1N5bWJvbHNgIG1pZ2h0IG5vdCB3b3JrLiBJbml0aWFsbHksIEkgY29uc2lkZXJlZCBzdWJzdHJpbmcgbWF0Y2hpbmcgYnV0IHRoZW4gcmVtZW1iZXJlZCB0aGF0IHRoZSBzeXprYWxsZXIgYEZvY3VzU3ltYm9sc2AgcmVxdWlyZXMgZXhhY3QgbWF0Y2hlcy5cblxuU2luY2UgUnVzdCBzeW1ib2wgbWFuZ2xpbmcgaW5jbHVkZXMgYSBoYXNoIHRoYXQgd2lsbCBjaGFuZ2UgYmV0d2VlbiBidWlsZHMsIGl0IHNlZW1zIGJldHRlciB0byBhdm9pZCBgRm9jdXNTeW1ib2xzYCBmb3IgUnVzdCBmdW5jdGlvbnMgdW5sZXNzIHdlIHVzZSBgI1tub19tYW5nbGVdYC4gSG93ZXZlciwgbm93IEkndmUgbm90aWNlZCBgcHJvYmVfY2FsbGJhY2tgIGlzIGBleHRlcm4gXCJDXCJgIGJ1dCBpdCdzIGdlbmVyaWMsIHNvIGl0cyBuYW1lIGlzIGFsc28gbWFuZ2xlZC5cblxuTGV0J3Mgc2VlOiBgYWNwaV9vZl9tYXRjaF9kZXZpY2VgIGlzIGEgQyBmdW5jdGlvbiwgYnV0IGl0J3Mgbm93IHN0YXRpYywgd2hpY2ggZG9lc24ndCBoZWxwIHdpdGggZXh0ZXJuYWwgc3ltYm9sIGxvb2t1cC4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgYSBDIGZ1bmN0aW9uLCBidXQgaXQncyBub3QgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCwgc28gdGhlcmUncyBubyBzeW1ib2wgY2hhbmdlLlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlZCBDIGZ1bmN0aW9ucyBhcmU6IGBhY3BpX29mX21hdGNoX2RldmljZWAgaW4gYGRyaXZlcnMvYWNwaS9idXMuY2AgKG1hZGUgc3RhdGljKSBhbmQgcmVtb3ZpbmcgYHJ1c3RfaGVscGVyX2FjcGlfb2ZfbWF0Y2hfZGV2aWNlYCBhbmQgYHJ1c3RfaGVscGVyX3RvX2FjcGlfZGV2aWNlX25vZGVgLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzIChtYWNyb3MsIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGUgY2hhbGxlbmdlcyBvZiBwcm92aWRpbmcgUnVzdCBzeW1ib2xzIHRvIGBGb2N1c1N5bWJvbHNgKSwgaXQgbWFrZXMgc2Vuc2UgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHkuIFRoZSBmdXp6ZXIgd2lsbCBzdGlsbCBoaXQgdGhlIG1vZGlmaWVkIGNvZGUgYmVjYXVzZSBpdCdzIG9uIHRoZSBgcHJvYmVgIHBhdGhzIG9mIHRoZSBSdXN0IGRyaXZlcnMsIGFuZCB3ZSBhcmUgZW5hYmxpbmcgdGhlIHNhbXBsZSBkcml2ZXJzLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSBteSBjb25maWd1cmF0aW9ucy4gSSd2ZSBnb3QgYFJVU1RgLCBgU0FNUExFU19SVVNUYCBldGMuLCBhbmQgYWxsIHRoZSBSdXN0IHNhbXBsZSBkcml2ZXJzIGVuYWJsZWQuXG5cbldhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIHNvbWV0aGluZy4gSSBzZWUgYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBhbmQgYE5PVkFfQ09SRWAuIFRoZXNlIG1pZ2h0IGhhdmUgZGVwZW5kZW5jaWVzIG9uIGBEUk1gLCBhbmQgb3RoZXIgdGhpbmdzLiBTbyBub3cgbGV0J3MgZG91YmxlIGNoZWNrIGBEUk1fTk9WQWAgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0Mjc2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNTozMy4zNjU2NzY4MDlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzYxNTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fTk9WQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vbm92YS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL25vdmEvS2NvbmZpZzoxOmNvbmZpZyBEUk1fTk9WQVxcbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiTm92YSBEUk0gZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNTozMy40MzYwNDk1NTNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3MTQxNzEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZWFkaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgTm92YSBEUk0gS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBkcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IHRoZSBvdmVyYWxsIHN0cnVjdHVyZSwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBOb3ZhIERSTSBkcml2ZXIuIEkgZXhwZWN0IHRvIHNlZSBhIHNlY3Rpb24gb3V0bGluaW5nIHRoZSBjb3JlIGZlYXR1cmVzLCBtYXliZSB0aGluZ3MgbGlrZSBmcmFtZWJ1ZmZlciBzdXBwb3J0LCBkaXNwbGF5IGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0aWVzLCBvciBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdGllcy5cblxuTXkgYnJhaW4gaXMgYWxyZWFkeSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIHVzZSBjYXNlcyDigJMgZW1iZWRkZWQgc3lzdGVtcywgcGVyaGFwcyBzcGVjaWZpYyBncmFwaGljcyBjaGlwcywgb3IgbWF5YmUgaXQncyBzb21ldGhpbmcgbW9yZSBleHBlcmltZW50YWwuIEknbGwgYmUgc2VhcmNoaW5nIGZvciBjbGVhciBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIGxpa2UgUENJIG9yIEkyQywgd2hpY2ggd291bGQgZ2l2ZSBtZSBjbHVlcyBhYm91dCB0aGUgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgZm9yLiBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBjb25kaXRpb25hbCBibG9ja3MsIGBpZmAgc3RhdGVtZW50cywgb3IgYm9vbGVhbiB2YXJpYWJsZXMuIFRoZXNlIHdpbGwgc2hvdyBtZSBob3cgdmFyaW91cyBwYXJ0cyBvZiB0aGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgdGhlIGhlYXJ0IG9mIEtjb25maWcuXG5cbkknbSBhbHNvIGFudGljaXBhdGluZyB0aGUgaW5jbHVzaW9uIG9mIG1vZHVsZSBvcHRpb25zLiBBcmUgdGhlcmUgd2F5cyB0byB0d2VhayBjZXJ0YWluIGFzcGVjdHMgb2YgdGhlIGRyaXZlciwgbGlrZSBkZWJ1Z2dpbmcgbGV2ZWwgb3IgZGVmYXVsdCBzZXR0aW5ncz8gSSBrbm93IHRoaXMga2luZCBvZiBjb25maWd1cmF0aW9uIGNhbiBtYWtlIGEgaHVnZSBkaWZmZXJlbmNlLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGRldmVsb3BtZW50IG9yIHdoZW4gdHJ5aW5nIHRvIGlzb2xhdGUgaGFyZHdhcmUgaXNzdWVzLiBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHVudXN1YWwgb3Igb2JzY3VyZSBvcHRpb25zLCB0aGluZ3MgdGhhdCBtaWdodCBoaW50IGF0IGEgc3BlY2lmaWMgaGFyZHdhcmUgcXVpcmsgb3IgYSBuaWNoZSB1c2UtY2FzZSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gQWxsIG9mIHRoaXMgaGVscHMgdG8gZ2V0IGEgYnJvYWRlciBzY29wZSBvZiB0aGUgTm92YSBEUk0gYW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIG92ZXJhbGwgZWNvc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjIzNywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjM5LjUwNzQ3MTA3NloiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vbm92YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIERSTV9OT1ZBXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTm92YSBEUk0gZHJpdmVyXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBEUk09eVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUlVTVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiAhQ1BVX0JJR19FTkRJQU5cXG4gICA4OlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuICAgOTpcXHRcXHRzZWxlY3QgTk9WQV9DT1JFXFxuICAxMDpcXHRcXHRkZWZhdWx0IG5cXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdCAgQ2hvb3NlIHRoaXMgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIE5vdmEgRFJNIGRyaXZlciBmb3IgTnZpZGlhXFxuICAxMzpcXHRcXHQgIEdTUC1iYXNlZCBHUFVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIHdvcmsgaW4gcHJvZ3Jlc3MgYW5kIG1heSBub3QgYmUgZnVuY3Rpb25hbC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBJZiBNIGlzIHNlbGVjdGVkLCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG5vdmEtZHJtLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNTozOS41MDc1NDY0NTZaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjQzOTA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRFJNIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBEUk1fTk9WQWAuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgaGluZ2VzIG9uIGBEUk09eWAsIHdoaWNoIG1ha2VzIHNlbnNlLCBvYnZpb3VzbHkuIFdlIGFsc28gbmVlZCBgUENJYCwgYFJVU1RgLCBhbmQgaW1wb3J0YW50bHksIHRoZSBhcmNoaXRlY3R1cmUgY2FuJ3QgYmUgYmlnLWVuZGlhbiwgc28gYCFDUFVfQklHX0VORElBTmAuIEdvdCBpdC4gVGhhdCBkaWN0YXRlcyB0aGUgaGFyZHdhcmUgYW5kIHNvbWUgaW1wb3J0YW50IGxhbmd1YWdlIHJlcXVpcmVtZW50cy5cblxuTm93LCBmcm9tIHRoZSBsb29rIG9mIGl0LCBgRFJNX05PVkFgIGFsc28gYXV0b21hdGljYWxseSBlbmFibGVzIGBBVVhJTElBUllfQlVTYCBhbmQgYE5PVkFfQ09SRWAuIEdvb2QuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQ7IEkgZG9uJ3QgaGF2ZSB0byB0cmFjZSB0aG9zZSBkb3duIHNlcGFyYXRlbHkgcmlnaHQgbm93LlxuXG5BbHJpZ2h0LCBub3cgbGV0J3MgcXVpY2tseSBwaXZvdCBhbmQgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYERSTV9UWVJgLiBTZWUgaWYgdGhlcmUgYXJlIGFueSBpbnRlcmVzdGluZyBvdmVybGFwcyBvciBkaWZmZXJlbmNlcyB0aGVyZSB0aGF0IG1pZ2h0IGJlIGluZm9ybWF0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjgzNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTU6NDIuOTQzOTg5MjA0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS90eXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgb3IgTUlUXFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBEUk1fVFlSXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiVHlyIChSdXN0IERSTSBzdXBwb3J0IGZvciBBUk0gTWFsaSBDU0YtYmFzZWQgR1BVcylcXFwiXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIERSTT15XFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFJVU1RcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQVJNIHx8IEFSTTY0IHx8IENPTVBJTEVfVEVTVFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhR0VORVJJQ19BVE9NSUM2NCAgIyBmb3IgSU9NTVVfSU9fUEdUQUJMRV9MUEFFXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gIDEwOlxcdFxcdGRlZmF1bHQgblxcbiAgMTE6XFx0XFx0c2VsZWN0IFJVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgUnVzdCBEUk0gZHJpdmVyIGZvciBBUk0gTWFsaSBDU0YtYmFzZWQgR1BVcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgTWFsaSAob3IgSW1tb3J0YWxpcykgVmFsaGFsbCBHeHh4IEdQVXMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBNYWxpLUc2OCBhbmQgTWFsaS1HNzgsIHdoaWxlIFZhbGhhbGwgYXJjaGl0ZWN0dXJlLCB3aWxsXFxuICAxODpcXHRcXHQgIGJlIHN1cHBvcnRlZCB3aXRoIHRoZSBwYW5mcm9zdCBkcml2ZXIgYXMgdGhleSBhcmUgbm90IENTRiBHUFVzLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIGlmIE0gaXMgc2VsZWN0ZWQsIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdHlyLiBUaGlzIGRyaXZlciBpcyB3b3JrXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjQyLjk0NDA2MzA3NFoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzc0ODg2MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYFBXTV9USDE1MjBgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYFBXTV9USDE1MjBgLiBCZWZvcmUgSSBkbyBhbnl0aGluZyBlbHNlLCBsZXQncyB0YWtlIGEgZ29vZCwgaGFyZCBsb29rIGF0IGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBzeXN0ZW0gcmVzb3VyY2VzIGlzIHRoaXMgdGhpbmcgcmVseWluZyBvbj8gSXMgaXQgdGllZCB0byBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgb3IgZGF0YSBpbnRlcmZhY2VzPyBJIG5lZWQgdG8ga25vdyB0aGUgcmlwcGxlIGVmZmVjdCBpZiBJIHdlcmUgdG8gY2hhbmdlIG9yIHVwZGF0ZSB0aGlzLiBBcmUgdGhlcmUgYW55IGtub3duIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGNvbXBvbmVudHM/IElkZW50aWZ5aW5nIHRoZXNlIGRlcGVuZGVuY2llcyB1cGZyb250IGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCBpbXBhY3Qgd2l0aGluIHRoZSBzeXN0ZW0uIExldCdzIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2Ugd2lsbCBicmVhayBpZiBJIGdvIHBva2luZyBhcm91bmQgYXQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0MjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjQ2LjcxODk1NDY0OVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxMTQ1NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBXTV9USDE1MjBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wd20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHdtL0tjb25maWc9NzYyPWNvbmZpZyBQV01fVEVHUkFcXG4tLVxcbmRyaXZlcnMvcHdtL0tjb25maWctNzcyLVxcbmRyaXZlcnMvcHdtL0tjb25maWc6NzczOmNvbmZpZyBQV01fVEgxNTIwXFxuZHJpdmVycy9wd20vS2NvbmZpZy03NzQtXFx0dHJpc3RhdGUgXFxcIlRIMTUyMCBQV00gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTU6NDYuNzg0MDc3OTkzWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjIxNTk1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIFBXTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvcHdtL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA3NzMuIEkndmUgZ290IGEgZmVlbGluZyB0aGVyZSdzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBvciBjb25kaXRpb25hbCBzdGF0ZW1lbnQgcmVsYXRlZCB0byB0aGUgUFdNIHN1YnN5c3RlbSB0aGF0J3MgcmVsZXZhbnQgdG8gd2hhdGV2ZXIgaXNzdWUgb3IgaW52ZXN0aWdhdGlvbiBpcyBhdCBoYW5kLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYW50aWNpcGF0aW5nIHRoYXQgbGluZSBwcm9iYWJseSBjb250YWlucyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgb3IgZmVhdHVyZS1lbmFibGVtZW50IGNvbmRpdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gSSBjb3VsZCBiZSBsb29raW5nIGF0IGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24sIGEgZ2VuZXJpYyBQV00gY29udHJvbGxlciBvcHRpb24sIG9yIHBvc3NpYmx5IGEgZmVhdHVyZSBmbGFnIGFmZmVjdGluZyBob3cgdGhlIFBXTSBjb3JlIGJlaGF2ZXMuIE15IGd1ZXNzIGlzIHRoYXQgaXTigJlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBwYXJ0aWN1bGFyIFBXTSBmZWF0dXJlIG9yIGEgc3BlY2lmaWMgZHJpdmVyIHRoYXQgSSdtIHRyeWluZyB0byBlbmFibGUgb3IgZGVidWcuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIFRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBpcywgc28gSSdtIG1vdmluZyB0aGVyZSBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNTo1Mi44MDYyNDE0OTFaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcHdtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzcwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA3NzE6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBwd20tdGVncmEuXFxuIDc3MjpcXHRcXG4gNzczOlxcdGNvbmZpZyBQV01fVEgxNTIwXFxuIDc3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiVEgxNTIwIFBXTSBzdXBwb3J0XFxcIlxcbiA3NzU6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVFxcbiA3NzY6XFx0XFx0ZGVwZW5kcyBvbiBSVVNUXFxuIDc3NzpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuIDc3ODpcXHRcXHRzZWxlY3QgUlVTVF9QV01fQUJTVFJBQ1RJT05TXFxuIDc3OTpcXHRcXHRoZWxwXFxuIDc4MDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGRyaXZlciBmb3IgdGhlIFBXTSBjb250cm9sbGVyIGZvdW5kIG9uIHRoZVxcbiA3ODE6XFx0XFx0ICBULUhFQUQgVEgxNTIwIFNvQy5cXG4gNzgyOlxcdFxcbiA3ODM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOyB0aGUgbW9kdWxlXFxuIDc4NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB3bS10aDE1MjAuIElmIHlvdSBhcmUgdW5zdXJlLCBzYXkgTi5cXG4gNzg1OlxcdFxcbiA3ODY6XFx0Y29uZmlnIFBXTV9USUVDQVBcXG4gNzg3OlxcdFxcdHRyaXN0YXRlIFxcXCJFQ0FQIFBXTSBzdXBwb3J0XFxcIlxcbiA3ODg6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX09NQVAyUExVUyB8fCBBUkNIX0RBVklOQ0lfREE4WFggfHwgQVJDSF9LRVlTVE9ORSB8fCBBUkNIX0szIHx8IENPTVBJTEVfVEVTVFxcbiA3ODk6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTU6NTIuODA2MzQ1ODAxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTk1NzE1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgQ1BVRlJFUV9EVF9SVVNUYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncyByZWxhdGVkIHRvIGBDUFVGUkVRX0RUX1JVU1RgLiBCZWZvcmUgSSBjYW4gbWFrZSBhbnkgaW5mb3JtZWQgZGVjaXNpb25zIG9yIHByb3Bvc2UgYW55IGNoYW5nZXMsIEkgYWJzb2x1dGVseSBoYXZlIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBtb2R1bGVzLCBjcmF0ZXMsIG9yIGV2ZW4gaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBkb2VzIHRoaXMgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHVwc3RyZWFtIHByb2plY3RzIG9yIGxpYnJhcmllcyB0aGF0IGl0IGNhbGxzIGludG8/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSB3ZWIgb2YgY29ubmVjdGlvbnMuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBsaWtlIHBvdGVudGlhbGx5IG91dGRhdGVkIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyB2ZXJzaW9ucyBuZWVkZWQ/IEknbSB0aGlua2luZyBvZiBsb29raW5nIGZvciBidWlsZCBjb25maWd1cmF0aW9ucyBvciBkb2N1bWVudGF0aW9uIHRoYXQgZGVzY3JpYmVzIGFueSBwcmVyZXF1aXNpdGVzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGluY29tcGF0aWJpbGl0aWVzLCBvciBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBhdHRlbnRpb24gZHVyaW5nIHRlc3Rpbmcgb3IgZGV2ZWxvcG1lbnQuIEl04oCZcyBhYm91dCBidWlsZGluZyBhIHNvbGlkIGZvdW5kYXRpb24gb2Yga25vd2xlZGdlIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgzMzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjU2LjMwNTkyMTIzM1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2NwdWZyZXEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTU6XFx0XFx0ICBzeXN0ZW1zLlxcbiAyMTY6XFx0XFxuIDIxNzpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgTi5cXG4gMjE4OlxcdFxcbiAyMTk6XFx0Y29uZmlnIENQVUZSRVFfRFRfUlVTVFxcbiAyMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlJ1c3QgYmFzZWQgR2VuZXJpYyBEVCBiYXNlZCBjcHVmcmVxIGRyaXZlclxcXCJcXG4gMjIxOlxcdFxcdGRlcGVuZHMgb24gSEFWRV9DTEsgXFx1MDAyNlxcdTAwMjYgT0YgXFx1MDAyNlxcdTAwMjYgUlVTVFxcbiAyMjI6XFx0XFx0c2VsZWN0IENQVUZSRVFfRFRfUExBVERFVlxcbiAyMjM6XFx0XFx0c2VsZWN0IFBNX09QUFxcbiAyMjQ6XFx0XFx0aGVscFxcbiAyMjU6XFx0XFx0ICBUaGlzIGFkZHMgYSBSdXN0IGJhc2VkIGdlbmVyaWMgRFQgYmFzZWQgY3B1ZnJlcSBkcml2ZXIgZm9yIGZyZXF1ZW5jeVxcbiAyMjY6XFx0XFx0ICBtYW5hZ2VtZW50LiAgSXQgc3VwcG9ydHMgYm90aCB1bmlwcm9jZXNzb3IgKFVQKSBhbmQgc3ltbWV0cmljXFxuIDIyNzpcXHRcXHQgIG11bHRpcHJvY2Vzc29yIChTTVApIHN5c3RlbXMuXFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxcbiAyMzA6XFx0XFxuIDIzMTpcXHRjb25maWcgQ1BVRlJFUV9WSVJUXFxuIDIzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBjcHVmcmVxIGRyaXZlclxcXCJcXG4gMjMzOlxcdFxcdGRlcGVuZHMgb24gR0VORVJJQ19BUkNIX1RPUE9MT0dZXFxuIDIzNDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE1OjU2LjMwNjAxNzA5M1oiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTQwNzQ5MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmcgQWJvdXQgUnVzdCBLZXJuZWwgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBzZWUsIEknbSBsb29raW5nIGF0IHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZS4gSSd2ZSBnb3QgYSB3aG9sZSBsaXN0OiBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYW5kIGEgYnVuY2ggb2YgZHJpdmVyczogYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBgU0FNUExFX1JVU1RfU09DYC4gVGhlbiB3ZSBoYXZlIGEgZmV3IERSTS1yZWxhdGVkIG9uZXM6IGBEUk1fTk9WQWAsIGBEUk1fVFlSYCwgYE5PVkFfQ09SRWAuIFBsdXMsIGBQV01fVEgxNTIwYCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuXG5cbldhaXQsIGhvbGQgb24uLi4gYERSTV9OT1ZBYCBkZXBlbmRzIG9uIGBEUk09eWAsIHJpZ2h0PyBObyBuZWVkIHRvIGxpc3QgdGhhdCBkZXBlbmRlbmN5LCB0aGUgZnV6emVyIHNob3VsZCBoYW5kbGUgdGhhdC4gSW4gZmFjdCwgSSBjYW4ganVzdCBsaXN0IHRoZSBrZXkgZmVhdHVyZXMgaGVyZTogYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBhbmQgYENQVUZSRVFfRFRfUlVTVGAuIEkgdHJ1c3QgdGhlIGZ1enplciB0byBlbmFibGUgdGhvc2UgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBUaGF0J3MgdGhlIGNsZWFuZXIgYXBwcm9hY2guXG5cbk5vdywgbGV0IG1lIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgKm90aGVyKiBSdXN0IGRyaXZlcnMgdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIHRoaXMgc3dlZXA/IEkgc2VlIHRoYXQgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIHdhcyByZWNlbnRseSBtb2RpZmllZC4gSW50cmlndWluZy4gV2FzIHRoZXJlIGEgc2FtcGxlIFBIWSBkcml2ZXI/IFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYG1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8gaW4gdGhhdCBmaWxlLiBUaGF0J3MgYSBnb29kIGxlYWQuIExldCBtZSBjaGVjayB0aGUgY29kZWJhc2UgdG8gc2VlIHdoaWNoIGRyaXZlcnMgYXJlIGFjdHVhbGx5ICp1c2luZyogdGhhdCBgbW9kdWxlX3BoeV9kcml2ZXIhYCBtYWNyby4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBpcyBhY3R1YWxseSBiZWluZyBhcHBsaWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODg1NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE2OjAyLjg0Njc3MTg1MVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MDg5NDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGh5X2RyaXZlciFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjEzOmtlcm5lbDo6bW9kdWxlX3BoeV9kcml2ZXIhIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xNC0gICAgZHJpdmVyczogW1BoeUFYODg3NzJBLCBQaHlBWDg4NzcyQywgUGh5QVg4ODc5NkJdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3F0MjAyNS5ycy0yMy1cXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzOjI0Omtlcm5lbDo6bW9kdWxlX3BoeV9kcml2ZXIhIHtcXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzLTI1LSAgICBkcml2ZXJzOiBbUGh5UVQyMDI1XSxcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NzYwPSAgICBjb25zdCBmbiBhc19pbnQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIHUzMiB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTc4Mi0vLy9cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjc4MzovLy8ga2VybmVsOjptb2R1bGVfcGh5X2RyaXZlciEge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNzg0LS8vLyAgICAgZHJpdmVyczogW1BoeVNhbXBsZV0sXFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTgwND1tYWNyb19ydWxlcyEgbW9kdWxlX3BoeV9kcml2ZXIge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDctICAgIChAY291bnRfZGV2aWNlcyAkKCR4OmV4cHIpLCopID1cXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjgwODogICAgICAgIDB1c2l6ZSAkKCsgJGNyYXRlOjptb2R1bGVfcGh5X2RyaXZlciEoQHJlcGxhY2VfZXhwciAkeCAxdXNpemUpKSpcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwOS0gICAgfTtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9ODE5PSAgICAgICAgc3RydWN0IE1vZHVsZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgyOS0gICAgICAgICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFskY3JhdGU6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo4MzA6ICAgICAgICAgICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBjb3VudF9kZXZpY2VzICQoJGRyaXZlciksKyldID1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgzMS0gICAgICAgICAgICAgICAgWyQoJGNyYXRlOjpuZXQ6OnBoeTo6Y3JlYXRlX3BoeV9kcml2ZXI6OlxcdTAwM2MkZHJpdmVyXFx1MDAzZSgpKSwrXTtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9ODM0PSAgICAgICAgICAgICAgICBmbiBpbml0KG1vZHVsZTogXFx1MDAyNidzdGF0aWMgJGNyYXRlOjpUaGlzTW9kdWxlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04NDYtXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo4NDc6ICAgICAgICAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAZGV2aWNlX3RhYmxlIFskKCRkZXYpLCtdKTtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTg0OC0gICAgfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNjowNS4wMzc2NzQ0MVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUxMTQzMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUEhZIERyaXZlciBDb25maWd1cmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBkcml2ZXJzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhcmUgYEFYODg3OTZCX1JVU1RfUEhZYCBhbmQgYFFUMjAyNV9QSFlgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlaXIgY29uZmlndXJhdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGVpciBrZXkgcGFyYW1ldGVycywgdW5kZXJzdGFuZCB0aGVpciByZXNvdXJjZSBtYXBwaW5ncywgYW5kIGNoZWNrIGZvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBzdWJ0bGUgZGlmZmVyZW5jZXMgaW4gdGhlaXIgcmVnaXN0ZXIgc2V0dGluZ3MuIFRoaXMgZWFybHkgYXNzZXNzbWVudCBpcyBjcnVjaWFsLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBpbW1lZGlhdGVseSBqdW1wcyBvdXQg4oCTIHNwZWNpZmljIGNsb2NrIGZyZXF1ZW5jaWVzLCBpbnRlcnJ1cHQgbGluZXMsIFBIWSBhZGRyZXNzZXMsIHBvd2VyLWRvd24gbW9kZXMuLi4gYW55dGhpbmcgdGhhdCBtaWdodCBpbXBhY3QgdGhlaXIgaW50ZWdyYXRpb24gaW50byB0aGUgc3lzdGVtIG9yIHN1Z2dlc3QgcG90ZW50aWFsIGRyaXZlci1zcGVjaWZpYyBxdWlya3MuIEEgcXVpY2sgc2NhbiBvZiB0aGUgZGVmaW5lcyBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIHdpbGwgYWxzbyBwcm92aWRlIGNydWNpYWwgY29udGV4dC4gSSdtIG1lbnRhbGx5IGNvbXBhcmluZyB0aGVtIGFscmVhZHksIGxvb2tpbmcgZm9yIG92ZXJsYXAgb3IgZGl2ZXJnZW5jZXMgdGhhdCB3aWxsIGd1aWRlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyMzYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNjowOC42ODg4MjE0MTdaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTE4MzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAoQVg4ODc5NkJfUlVTVF9QSFl8UVQyMDI1X1BIWSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNDg9Y29uZmlnIEFYODg3OTZCX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1NDpjb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiUnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE2OjA4Ljc2MTM0NzA4WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzU1OTM2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGF0IENvbmZpZyBOYW1lKipcblxuT2theSwgc28gSSBzZWUgYFFUMjAyNV9QSFlgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0IGEgbWludXRlLCB0aGF0IGNvbmZpZyBuYW1lIGZvcm1hdD8gVGhhdCdzIGltbWVkaWF0ZWx5IHRlbGxpbmcgbWUgYSBmZXcgdGhpbmdzLiBUaGUgYFFUYCBwcmVmaXggaXMgcHJvYmFibHkgdmVuZG9yLXNwZWNpZmljLCB3aGljaCBpcyBmaW5lLCBidXQgaXQgaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBwbGF5aW5nIGZpZWxkLiBUaGVuIEkgc2VlIHRoZSBudW1lcmljYWwgcG9ydGlvbiwgYDIwMjVgLiBUaGF0J3MgbGlrZWx5IGEgZGF0ZSBjb2RlLCBwb3RlbnRpYWxseSBpbmRpY2F0aW5nIGEgcHJvZHVjdCBnZW5lcmF0aW9uIG9yIHJldmlzaW9uLCBwcm9iYWJseSByZWZlcmVuY2luZyBhIHNwZWNpZmljIHllYXIuIFRoZSBgUEhZYCBhdCB0aGUgZW5kLi4uIHRoYXQgc2NyZWFtcyBcIlBoeXNpY2FsIExheWVyXCIgdG8gbWUsIHJpZ2h0PyBTbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgY29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byBhIFBIWSBjaGlwLCBvciBhIFBIWSBjb21wb25lbnQuIEknbSBhbHJlYWR5IG1lbnRhbGx5IGZvcm1pbmcgYW4gaWRlYSBvZiB3aGF0IGNvbnRleHQgdGhpcyBjb25maWcgbWlnaHQgYmUgcmVsZXZhbnQgdG8sIGFuZCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBhIGRhdGUtc3RhbXBlZCByZXZpc2lvbi4gSSB3b25kZXIgd2hhdCB0aGUgY29ycmVzcG9uZGluZyBzb2Z0d2FyZSB2ZXJzaW9uIG1pZ2h0IGJlPyBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjEyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTY6MTMuMjk2OTQzNTUyWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTMwOTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgLipRVDIwMjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xMzI9Y29uZmlnIEFESU4xMTAwX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEzOTpjb25maWcgQU1DQ19RVDIwMjVfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTQwLVxcdHRyaXN0YXRlIFxcXCJBTUNDIFFUMjAyNSBQSFlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjE2OjEzLjM2MjI2NDg5NloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTg0ODE3MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJ1c3QgRGV2aWNlIERyaXZlciBBYnN0cmFjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zIGludm9sdmluZyBgQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgQU1DQ19RVDIwMjVfUEhZYC4gTGV0J3MgYnJlYWsgZG93biB0aGVzZSBSdXN0IGNvbmZpZ3VyYXRpb25zIGFuZCB0aGUgY29udGV4dC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlOiBgUlVTVGAsIGBTQU1QTEVTX1JVU1RgLCBgU0FNUExFX1JVU1RfRE1BYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9JMkNgLCBgU0FNUExFX1JVU1RfSTJDX0NMSUVOVGAsIGBTQU1QTEVfUlVTVF9EUklWRVJfUENJYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STWAsIGBTQU1QTEVfUlVTVF9EUklWRVJfVVNCYCwgYFNBTVBMRV9SVVNUX0RSSVZFUl9BVVhJTElBUllgLCBgU0FNUExFX1JVU1RfU09DYCwgYERSTV9OT1ZBYCwgYERSTV9UWVJgLCBgTk9WQV9DT1JFYCwgYFBXTV9USDE1MjBgLCBgQ1BVRlJFUV9EVF9SVVNUYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBBTUNDX1FUMjAyNV9QSFlgLiBUaGF0IGxvb2tzIGxpa2UgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBzZXQuXG5cbkkgc2VlIHRoYXQgdGhlIHBhdGNoIHNpZ25pZmljYW50bHkgbW9kaWZpZXMgdGhlIGNvcmUgUnVzdCBkZXZpY2UgZHJpdmVyIGFic3RyYWN0aW9ucy4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbi4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBzaG91bGQgYmU6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUnVzdCBhYnN0cmFjdGlvbnMgZm9yIGRldmljZSBkcml2ZXJzIChQQ0ksIFVTQiwgUGxhdGZvcm0sIEkyQywgQXV4aWxpYXJ5LCBBQ1BJLCBPRiksIGNoYW5naW5nIGhvdyBkZXZpY2UgSUQgdGFibGVzIGFyZSBnZW5lcmF0ZWQgYW5kIGhvdyBtYXRjaCBkYXRhIGlzIHJldHJpZXZlZCBkdXJpbmcgZHJpdmVyIHByb2JlLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgUnVzdCBkcml2ZXJzIGNhbiBzdGlsbCBwcm9iZSBzdWNjZXNzZnVsbHkgYW5kIHJlY2VpdmUgY29ycmVjdCBtYXRjaCBkYXRhLlwiXG5cbkdpdmVuIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucywgaXQncyBjbGVhciB0aGF0IHRoaXMgcGF0Y2ggaXMgKipXb3J0aEZ1enppbmcqKi5cblxuVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHkuIFRoZSBjaGFuZ2VzIGFwcGVhciB0byBiZSB3aXRoaW4gZ2VuZXJpYyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBtYWNyb3MuIEJlY2F1c2Ugb2YgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhlIGZ1enplciB3aWxsIG5hdHVyYWxseSBoaXQgdGhlbSBhcyBpdCBwcm9iZXMgYW5kIGV4ZXJjaXNlcyB0aGUgZW5hYmxlZCBSdXN0IGRyaXZlcnMuXG5cbkknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGNvdmVycyB0aGUgZXh0ZW50IG9mIFJ1c3QgZHJpdmVycyB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDk3MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzoxNjoyMi4zNDcwODU0NDhaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTU2OTQ4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlXy4qX2RyaXZlciFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycz0yMDY9ICAgIGZuIHByb2JlXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcmNwdWZyZXFfZHQucnMtMjE0LVxcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5yczoyMTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xcbmRyaXZlcnMvY3B1ZnJlcS9yY3B1ZnJlcV9kdC5ycy0yMTYtICAgIHR5cGU6IENQVUZyZXFEVERyaXZlcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3ZhL25vdmEucnMtMTAtXFxuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5yczoxMTprZXJuZWw6Om1vZHVsZV9hdXhpbGlhcnlfZHJpdmVyISB7XFxuZHJpdmVycy9ncHUvZHJtL25vdmEvbm92YS5ycy0xMi0gICAgdHlwZTogTm92YURyaXZlcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzLTE1LVxcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzOjE2Omtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xcbmRyaXZlcnMvZ3B1L2RybS90eXIvdHlyLnJzLTE3LSAgICB0eXBlOiBUeXJQbGF0Zm9ybURyaXZlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjEzOmtlcm5lbDo6bW9kdWxlX3BoeV9kcml2ZXIhIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xNC0gICAgZHJpdmVyczogW1BoeUFYODg3NzJBLCBQaHlBWDg4NzcyQywgUGh5QVg4ODc5NkJdLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3F0MjAyNS5ycy0yMy1cXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzOjI0Omtlcm5lbDo6bW9kdWxlX3BoeV9kcml2ZXIhIHtcXG5kcml2ZXJzL25ldC9waHkvcXQyMDI1LnJzLTI1LSAgICBkcml2ZXJzOiBbUGh5UVQyMDI1XSxcXG4tLVxcbmRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnM9MzE1PSAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbi0tXFxuZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycy0zNTgtXFxuZHJpdmVycy9wd20vcHdtX3RoMTUyMC5yczozNTk6a2VybmVsOjptb2R1bGVfcHdtX3BsYXRmb3JtX2RyaXZlciEge1xcbmRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnMtMzYwLSAgICB0eXBlOiBUaDE1MjBQd21QbGF0Zm9ybURyaXZlcixcXG4tLVxcbnJ1c3Qva2VybmVsL2RyaXZlci5ycy04Ni0vLyFcXG5ydXN0L2tlcm5lbC9kcml2ZXIucnM6ODc6Ly8hIFR5cGljYWxseSwgYnVzIGFic3RyYWN0aW9ucyB3YW50IHRvIHByb3ZpZGUgYSBidXMgc3BlY2lmaWMgYG1vZHVsZV9idXNfZHJpdmVyIWAgbWFjcm8sIHdoaWNoXFxucnVzdC9rZXJuZWwvZHJpdmVyLnJzLTg4LS8vISBjcmVhdGVzIGEga2VybmVsIG1vZHVsZSB3aXRoIGV4YWN0bHkgb25lIFtgUmVnaXN0cmF0aW9uYF0gZm9yIHRoZSBidXMgc3BlY2lmaWMgYWRhcHRlci5cXG4tLVxcbnJ1c3Qva2VybmVsL2kyYy5ycz0yMjU9ICAgIGZuIGFjcGlfaWRfdGFibGUoKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjYWNwaTo6SWRUYWJsZVxcdTAwM2NTZWxmOjpJZEluZm9cXHUwMDNlXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9pMmMucnMtMjM0LS8vLyBgYGBpZ25vcmVcXG5ydXN0L2tlcm5lbC9pMmMucnM6MjM1Oi8vLyBrZXJuZWw6Om1vZHVsZV9pMmNfZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvaTJjLnJzLTIzNi0vLy8gICAgIHR5cGU6IE15RHJpdmVyLFxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz03NjA9ICAgIGNvbnN0IGZuIGFzX2ludChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdTMyIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNzgyLS8vL1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NzgzOi8vLyBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy03ODQtLy8vICAgICBkcml2ZXJzOiBbUGh5U2FtcGxlXSxcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM9ODA0PW1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwNy0gICAgKEBjb3VudF9kZXZpY2VzICQoJHg6ZXhwciksKikgPVxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6ODA4OiAgICAgICAgMHVzaXplICQoKyAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAcmVwbGFjZV9leHByICR4IDF1c2l6ZSkpKlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODA5LSAgICB9O1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MTk9ICAgICAgICBzdHJ1Y3QgTW9kdWxlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODI5LSAgICAgICAgICAgIHN0YXRpYyBtdXQgRFJJVkVSUzogWyRjcmF0ZTo6bmV0OjpwaHk6OkRyaXZlclZUYWJsZTtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjgzMDogICAgICAgICAgICAgICAgJGNyYXRlOjptb2R1bGVfcGh5X2RyaXZlciEoQGNvdW50X2RldmljZXMgJCgkZHJpdmVyKSwrKV0gPVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODMxLSAgICAgICAgICAgICAgICBbJCgkY3JhdGU6Om5ldDo6cGh5OjpjcmVhdGVfcGh5X2RyaXZlcjo6XFx1MDAzYyRkcml2ZXJcXHUwMDNlKCkpLCtdO1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz04MzQ9ICAgICAgICAgICAgICAgIGZuIGluaXQobW9kdWxlOiBcXHUwMDI2J3N0YXRpYyAkY3JhdGU6OlRoaXNNb2R1bGUpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTg0Ni1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjg0NzogICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBkZXZpY2VfdGFibGUgWyQoJGRldiksK10pO1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODQ4LSAgICB9XFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kucnM9MTI3PSAgICBleHRlcm4gXFxcIkNcXFwiIGZuIHJlbW92ZV9jYWxsYmFjayhwZGV2OiAqbXV0IGJpbmRpbmdzOjpwY2lfZGV2KSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9wY2kucnMtMTQ3LS8vL2BgYGlnbm9yZVxcbnJ1c3Qva2VybmVsL3BjaS5yczoxNDg6Ly8vIGtlcm5lbDo6bW9kdWxlX3BjaV9kcml2ZXIhIHtcXG5ydXN0L2tlcm5lbC9wY2kucnMtMTQ5LS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXFxuLS1cXG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycz0xMzc9ICAgIGZuIGFjcGlfaWRfdGFibGUoKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjYWNwaTo6SWRUYWJsZVxcdTAwM2NTZWxmOjpJZEluZm9cXHUwMDNlXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycy0xNDYtLy8vIGBgYGlnbm9yZVxcbnJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzOjE0NzovLy8ga2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMtMTQ4LS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXFxuLS1cXG5ydXN0L2tlcm5lbC9wd20ucnM9NzEwPSAgICBmbiBkcm9wKFxcdTAwMjZtdXQgc2VsZikge1xcbi0tXFxucnVzdC9rZXJuZWwvcHdtLnJzLTcyNC0vLy9gYGBpZ25vcmVcXG5ydXN0L2tlcm5lbC9wd20ucnM6NzI1Oi8vLyBrZXJuZWw6Om1vZHVsZV9wd21fcGxhdGZvcm1fZHJpdmVyISB7XFxucnVzdC9rZXJuZWwvcHdtLnJzLTcyNi0vLy8gICAgIHR5cGU6IE15RHJpdmVyLFxcbi0tXFxucnVzdC9rZXJuZWwvcHdtLnJzPTczND1tYWNyb19ydWxlcyEgbW9kdWxlX3B3bV9wbGF0Zm9ybV9kcml2ZXIge1xcbnJ1c3Qva2VybmVsL3B3bS5ycy03MzUtICAgICgkKCR1c2VyX2FyZ3M6dHQpKikgPVxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL3B3bS5yczo3MzY6ICAgICAgICAkY3JhdGU6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcXG5ydXN0L2tlcm5lbC9wd20ucnMtNzM3LSAgICAgICAgICAgICQoJHVzZXJfYXJncykqXFxuLS1cXG5ydXN0L2tlcm5lbC91c2IucnM9NDcyPXVuc2FmZSBpbXBsIFN5bmMgZm9yIERldmljZVxcdTAwM2NkZXZpY2U6OkJvdW5kXFx1MDAzZSB7fVxcbi0tXFxucnVzdC9rZXJuZWwvdXNiLnJzLTQ3OC0vLy8gYGBgaWdub3JlXFxucnVzdC9rZXJuZWwvdXNiLnJzOjQ3OTovLy8gbW9kdWxlX3VzYl9kcml2ZXIhIHtcXG5ydXN0L2tlcm5lbC91c2IucnMtNDgwLS8vLyAgICAgdHlwZTogTXlEcml2ZXIsXFxuLS1cXG5ydXN0L21hY3Jvcy9tb2R1bGUucnM9NDI4PXB1YihjcmF0ZSkgZm4gbW9kdWxlKGluZm86IE1vZHVsZUluZm8pIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NUb2tlblN0cmVhbVxcdTAwM2Uge1xcbi0tXFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzLTUxNi0gICAgICAgIC8vLyBUaGUgYExvY2FsTW9kdWxlYCB0eXBlIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgY3JlYXRlZCBieSBgbW9kdWxlIWAsXFxucnVzdC9tYWNyb3MvbW9kdWxlLnJzOjUxNzogICAgICAgIC8vLyBgbW9kdWxlX3BjaV9kcml2ZXIhYCwgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhYCwgZXRjLlxcbnJ1c3QvbWFjcm9zL21vZHVsZS5ycy01MTgtICAgICAgICB0eXBlIExvY2FsTW9kdWxlID0gI3R5cGVfO1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZGVidWdmcy5ycy01Ny1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kZWJ1Z2ZzLnJzOjU4Omtlcm5lbDo6bW9kdWxlX3BsYXRmb3JtX2RyaXZlciEge1xcbnNhbXBsZXMvcnVzdC9ydXN0X2RlYnVnZnMucnMtNTktICAgIHR5cGU6IFJ1c3REZWJ1Z0ZzLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzPTExMD0gICAgZm4gZHJvcChzZWxmOiBQaW5cXHUwMDNjXFx1MDAyNm11dCBTZWxmXFx1MDAzZSkge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzLTEyNS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnM6MTI2Omtlcm5lbDo6bW9kdWxlX3BjaV9kcml2ZXIhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9kbWEucnMtMTI3LSAgICB0eXBlOiBEbWFTYW1wbGVEcml2ZXIsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfaTJjLnJzPTYwPSAgICBmbiB1bmJpbmRcXHUwMDNjJ2JvdW5kXFx1MDAzZShpZGV2OiBcXHUwMDI2J2JvdW5kIGkyYzo6STJjQ2xpZW50XFx1MDAzY0NvcmVcXHUwMDNjJ19cXHUwMDNlXFx1MDAzZSwgX3RoaXM6IFBpblxcdTAwM2NcXHUwMDI2U2VsZlxcdTAwM2UpIHtcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9pMmMucnMtNjQtXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5yczo2NTprZXJuZWw6Om1vZHVsZV9pMmNfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX2kyYy5ycy02Ni0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycz0xODI9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzLTE4Ni1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGNpLnJzOjE4NzprZXJuZWw6Om1vZHVsZV9wY2lfZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycy0xODgtICAgIHR5cGU6IFNhbXBsZURyaXZlcixcXG4tLVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5ycz0xODE9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfcGxhdGZvcm0ucnMtMTg1LVxcbnNhbXBsZXMvcnVzdC9ydXN0X2RyaXZlcl9wbGF0Zm9ybS5yczoxODY6a2VybmVsOjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyISB7XFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BsYXRmb3JtLnJzLTE4Ny0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycz00Mj0gICAgZm4gZGlzY29ubmVjdFxcdTAwM2MnYm91bmRcXHUwMDNlKGludGY6IFxcdTAwMjYnYm91bmQgdXNiOjpJbnRlcmZhY2VcXHUwMDNjQ29yZVxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlLCBfZGF0YTogUGluXFx1MDAzY1xcdTAwMjZTZWxmXFx1MDAzZSkge1xcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3VzYi5ycy00Ny1cXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzOjQ4Omtlcm5lbDo6bW9kdWxlX3VzYl9kcml2ZXIhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfdXNiLnJzLTQ5LSAgICB0eXBlOiBTYW1wbGVEcml2ZXIsXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzPTEzMT0gICAgZm4gdW5iaW5kXFx1MDAzYydib3VuZFxcdTAwM2UoXFxuLS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzLTE0MS1cXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzOjE0MjprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9pMmNfY2xpZW50LnJzLTE0My0gICAgdHlwZTogU2FtcGxlRHJpdmVyLFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzPTQyPSAgICBmbiBwcm9iZVxcdTAwM2MnYm91bmRcXHUwMDNlKFxcbi0tXFxuc2FtcGxlcy9ydXN0L3J1c3Rfc29jLnJzLTcxLVxcbnNhbXBsZXMvcnVzdC9ydXN0X3NvYy5yczo3MjprZXJuZWw6Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIhIHtcXG5zYW1wbGVzL3J1c3QvcnVzdF9zb2MucnMtNzMtICAgIHR5cGU6IFNhbXBsZVNvY0RyaXZlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTY6MjQuNzQyNzg4MjU2WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MjAwMDc5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEZ1enppbmcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IHRoZSBjb21wbGV0ZSBjb25maWd1cmF0aW9uIGluIGZyb250IG9mIG1lLiBOb3csIGxldCdzIGJyZWFrIGRvd24gd2hhdCB3ZSdyZSBsb29raW5nIGF0IGFuZCBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGFwcHJvYWNoLiBGaXJzdCwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaXMgd2hhdCBJJ2QgZXhwZWN0LiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJyYXkgaXMgZW1wdHksIGltcGx5aW5nIGEgYnJvYWQgc2NvcGUsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS5cblxuVGhlIG1lYXQgb2YgdGhpcyBsaWVzIHdpdGhpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIEl04oCZcyBleHRlbnNpdmUgYW5kIHRhcmdldHMgc2V2ZXJhbCBrZXkgUnVzdCBkcml2ZXJzIGFuZCByZWxhdGVkIG1vZHVsZXMuIFdlIGhhdmUgXCJSVVNUXCIsIGFuZCBcIlNBTVBMRVNfUlVTVFwiIHdoaWNoIGFyZSBmb3VuZGF0aW9uYWwuIFRoZW4sIHdlIGhhdmUgc3BlY2lmaWMgZHJpdmVyczogXCJTQU1QTEVfUlVTVF9ETUFcIiwgXCJTQU1QTEVfUlVTVF9EUklWRVJfSTJDXCIsIFwiU0FNUExFX1JVU1RfSTJDX0NMSUVOVFwiLCBcIlNBTVBMRV9SVVNUX0RSSVZFUl9QQ0lcIiwgXCJTQU1QTEVfUlVTVF9EUklWRVJfUExBVEZPUk1cIiwgXCJTQU1QTEVfUlVTVF9EUklWRVJfVVNCXCIsIFwiU0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWVwiLCBhbmQgXCJTQU1QTEVfUlVTVF9TT0NcIi4gRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBzb21lIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBjb25maWd1cmF0aW9ucyBsaWtlIFwiRFJNX05PVkFcIiBhbmQgXCJEUk1fVFlSXCIsIGFuZCBwbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxpa2UgXCJOT1ZBX0NPUkVcIiwgXCJQV01fVEgxNTIwXCIsIFwiQ1BVRlJFUV9EVF9SVVNUXCIsIFwiQVg4ODc5NkJfUlVTVF9QSFlcIiwgYW5kIFwiQU1DQ19RVDIwMjVfUEhZXCIuIFRoaXMgZW5jb21wYXNzZXMgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBkcml2ZXIgZWNvc3lzdGVtLlxuXG5UaGUgY29yZSByZWFzb25pbmcgaGlnaGxpZ2h0cyB0aGUgY3JpdGljYWwgbW9kaWZpY2F0aW9uOiB0aGUgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyBSdXN0J3MgY29yZSBhYnN0cmFjdGlvbnMgZm9yIGRldmljZSBkcml2ZXJzLiBJdCdzIGFmZmVjdGluZyBob3cgZGV2aWNlIElEIHRhYmxlcyBhcmUgY3JlYXRlZCBhbmQgaG93IG1hdGNoIGRhdGEgaXMgYWNjZXNzZWQgZHVyaW5nIGRyaXZlciBwcm9iaW5nLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhLiBJZiB0aG9zZSBjaGFuZ2VzIGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyBkcml2ZXIgcHJvYmluZywgdGhlIGRldmljZSB3aWxsIGJlIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlLiBUaGlzIG5lY2Vzc2l0YXRlcyBmdXp6aW5nLCBhbmQgaXQncyBiZWluZyBjb3JyZWN0bHkgYXBwbGllZCBoZXJlLCB0byBlbnN1cmUgYWxsIHRoZSBSdXN0IGRyaXZlcnMgY2FuIHByb2JlIGFjY3VyYXRlbHkgYW5kIGNvcnJlY3RseSByZWNlaXZlIGFsbCB0aGUgbWF0Y2ggZGF0YSB0aGV5IG5lZWQgdG8gZnVuY3Rpb24uIEl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZm9jdXMgb24gdGhpcyBhcmVhLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBkcml2ZXIgZWNvc3lzdGVtIHJlbWFpbnMgcm9idXN0IGFmdGVyIHRoaXMgdXBkYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMzMywiT3V0cHV0VG9rZW5zIjoyNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6MTY6MzIuNDYyNzk5MjNaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzQ5MTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlVTVFwiLFxuICAgIFwiU0FNUExFU19SVVNUXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9ETUFcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9JMkNcIixcbiAgICBcIlNBTVBMRV9SVVNUX0kyQ19DTElFTlRcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9QQ0lcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1VTQlwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWVwiLFxuICAgIFwiU0FNUExFX1JVU1RfU09DXCIsXG4gICAgXCJEUk1fTk9WQVwiLFxuICAgIFwiRFJNX1RZUlwiLFxuICAgIFwiTk9WQV9DT1JFXCIsXG4gICAgXCJQV01fVEgxNTIwXCIsXG4gICAgXCJDUFVGUkVRX0RUX1JVU1RcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJBTUNDX1FUMjAyNV9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSdXN0IGFic3RyYWN0aW9ucyBmb3IgZGV2aWNlIGRyaXZlcnMgKFBDSSwgVVNCLCBQbGF0Zm9ybSwgSTJDLCBBdXhpbGlhcnksIEFDUEksIE9GKSwgY2hhbmdpbmcgaG93IGRldmljZSBJRCB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhbmQgaG93IG1hdGNoIGRhdGEgaXMgcmV0cmlldmVkIGR1cmluZyBkcml2ZXIgcHJvYmUuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSBSdXN0IGRyaXZlcnMgY2FuIHN0aWxsIHByb2JlIHN1Y2Nlc3NmdWxseSBhbmQgcmVjZWl2ZSBjb3JyZWN0IG1hdGNoIGRhdGEuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlVTVFwiLFxuICAgIFwiU0FNUExFU19SVVNUXCIsXG4gICAgXCJTQU1QTEVfUlVTVF9ETUFcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9JMkNcIixcbiAgICBcIlNBTVBMRV9SVVNUX0kyQ19DTElFTlRcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9QQ0lcIixcbiAgICBcIlNBTVBMRV9SVVNUX0RSSVZFUl9QTEFURk9STVwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX1VTQlwiLFxuICAgIFwiU0FNUExFX1JVU1RfRFJJVkVSX0FVWElMSUFSWVwiLFxuICAgIFwiU0FNUExFX1JVU1RfU09DXCIsXG4gICAgXCJEUk1fTk9WQVwiLFxuICAgIFwiRFJNX1RZUlwiLFxuICAgIFwiTk9WQV9DT1JFXCIsXG4gICAgXCJQV01fVEgxNTIwXCIsXG4gICAgXCJDUFVGUkVRX0RUX1JVU1RcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJBTUNDX1FUMjAyNV9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSdXN0IGFic3RyYWN0aW9ucyBmb3IgZGV2aWNlIGRyaXZlcnMgKFBDSSwgVVNCLCBQbGF0Zm9ybSwgSTJDLCBBdXhpbGlhcnksIEFDUEksIE9GKSwgY2hhbmdpbmcgaG93IGRldmljZSBJRCB0YWJsZXMgYXJlIGdlbmVyYXRlZCBhbmQgaG93IG1hdGNoIGRhdGEgaXMgcmV0cmlldmVkIGR1cmluZyBkcml2ZXIgcHJvYmUuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSBSdXN0IGRyaXZlcnMgY2FuIHN0aWxsIHByb2JlIHN1Y2Nlc3NmdWxseSBhbmQgcmVjZWl2ZSBjb3JyZWN0IG1hdGNoIGRhdGEuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:nil,}