ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggYmMwM2YwMy4uZjU1MDgzYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDMxCisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNjA3LDYgKzE2MDcsNyBAQAogcmVzb2x2ZSgge2ZpbGVuYW1lfSkJCVN0cmluZwlnZXQgZmlsZW5hbWUgYSBzaG9ydGN1dCBwb2ludHMgdG8KIHJldmVyc2UoIHtsaXN0fSkJCUxpc3QJcmV2ZXJzZSB7bGlzdH0gaW4tcGxhY2UKIHNlYXJjaCgge3BhdHRlcm59IFssIHtmbGFnc31dKQlOdW1iZXIJc2VhcmNoIGZvciB7cGF0dGVybn0KK3NlYXJjaGRlY2woe25hbWV9IFssIHtnbG9iYWx9XSkgTnVtYmVyICBzZWFyY2ggZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9uCiBzZWFyY2hwYWlyKCB7c3RhcnR9LCB7bWlkZGxlfSwge2VuZH0gWywge2ZsYWdzfSBbLCB7c2tpcH1dXSkKIAkJCQlOdW1iZXIJc2VhcmNoIGZvciBvdGhlciBlbmQgb2Ygc3RhcnQvZW5kIHBhaXIKIHNlcnZlcjJjbGllbnQoIHtjbGllbnRpZH0sIHtzdHJpbmd9KQpAQCAtMTYyMiw3ICsxNjIzLDcgQEAKIHNvcnQoIHtsaXN0fSBbLCB7ZnVuY31dKQlMaXN0CXNvcnQge2xpc3R9LCB1c2luZyB7ZnVuY30gdG8gY29tcGFyZQogc291bmRmb2xkKCB7d29yZH0pCQlTdHJpbmcJc291bmQtZm9sZCB7d29yZH0KIHNwZWxsYmFkd29yZCgpCQkJU3RyaW5nCWJhZGx5IHNwZWxsZWQgd29yZCBhdCBjdXJzb3IKLXNwZWxsc3VnZ2VzdCh7d29yZH0gWywge21heH1dKQlMaXN0CXNwZWxsaW5nIHN1Z2dlc3Rpb25zCitzcGVsbHN1Z2dlc3QoIHt3b3JkfSBbLCB7bWF4fV0pCUxpc3QJc3BlbGxpbmcgc3VnZ2VzdGlvbnMKIHNwbGl0KCB7ZXhwcn0gWywge3BhdH0gWywge2tlZXBlbXB0eX1dXSkKIAkJCQlMaXN0CW1ha2UgTGlzdCBmcm9tIHtwYXR9IHNlcGFyYXRlZCB7ZXhwcn0KIHN0cmZ0aW1lKCB7Zm9ybWF0fVssIHt0aW1lfV0pCVN0cmluZwl0aW1lIGluIHNwZWNpZmllZCBmb3JtYXQKQEAgLTM3MDksNiArMzcxMCwxOCBAQAogCQkgICAgOiAgbGV0IG4gPSBuICsgMQogCQkgICAgOmVuZHdoaWxlCiA8CisKK3NlYXJjaGRlY2woe25hbWV9IFssIHtnbG9iYWx9XSkJCQkJKnNlYXJjaGRlY2woKSoKKwkJU2VhcmNoIGZvciB0aGUgZGVjbGFyYXRpb24gb2Yge25hbWV9LiAgV2l0aG91dCB7Z2xvYmFsfSBvcgorCQl3aXRoIGEgemVybyB7Z2xvYmFsfSBhcmd1bWVudCB0aGlzIHdvcmtzIGxpa2UgfGdkfC4gIFdpdGggYQorCQlub24temVybyB7Z2xvYmFsfSBhcmd1bWVudCBpdCB3b3JrcyBsaWtlIHxnRHwuCisJCU1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIGZvdW5kIG1hdGNoLgorCQlSZXR1cm5zIHplcm8gZm9yIHN1Y2Nlc3MsIG5vbi16ZXJvIGZvciBmYWlsdXJlLgorCQlFeGFtcGxlOiA+CisJCQlpZiBzZWFyY2hkZWNsKCdteXZhcicpID09IDAKKwkJCSAgIGVjaG8gZ2V0bGluZSgnLicpCisJCQllbmRpZgorPAogCQkJCQkJCSpzZWFyY2hwYWlyKCkqCiBzZWFyY2hwYWlyKHtzdGFydH0sIHttaWRkbGV9LCB7ZW5kfSBbLCB7ZmxhZ3N9IFssIHtza2lwfV1dKQogCQlTZWFyY2ggZm9yIHRoZSBtYXRjaCBvZiBhIG5lc3RlZCBzdGFydC1lbmQgcGFpci4gIFRoaXMgY2FuIGJlCkBAIC00NjY4LDcgKzQ2ODEsOCBAQAogYXZvaWQgb2J2aW91cywgc2hvcnQgbmFtZXMuICBBIGdvb2QgaGFiaXQgaXMgdG8gc3RhcnQgdGhlIGZ1bmN0aW9uIG5hbWUgd2l0aAogdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCwgZS5nLiwgIkhUTUxjb2xvcigpIi4KIAotSXQncyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBjdXJseSBicmFjZXMsIHNlZSB8Y3VybHktYnJhY2VzLW5hbWVzfC4KK0l0J3MgYWxzbyBwb3NzaWJsZSB0byB1c2UgY3VybHkgYnJhY2VzLCBzZWUgfGN1cmx5LWJyYWNlcy1uYW1lc3wuICBBbmQgdGhlCit8YXV0b2xvYWR8IGZhY2lsaXR5IGlzIHVzZWZ1bCB0byBkZWZpbmUgYSBmdW5jdGlvbiBvbmx5IHdoZW4gaXQncyBjYWxsZWQuCiAKIAkJCQkJCQkqbG9jYWwtZnVuY3Rpb24qCiBBIGZ1bmN0aW9uIGxvY2FsIHRvIGEgc2NyaXB0IG11c3Qgc3RhcnQgd2l0aCAiczoiLiAgQSBsb2NhbCBzY3JpcHQgZnVuY3Rpb24KQEAgLTQ2ODQsNiArNDY5OCwxMCBAQAogCQkJe25hbWV9IGNhbiBhbHNvIGJlIGEgRGljdGlvbmFyeSBlbnRyeSB0aGF0IGlzIGEKIAkJCUZ1bmNyZWY6ID4KIAkJCQk6ZnVuY3Rpb24gZGljdC5pbml0CisKKzpmdVtuY3Rpb25dIC97cGF0dGVybn0JTGlzdCBmdW5jdGlvbnMgd2l0aCBhIG5hbWUgbWF0Y2hpbmcge3BhdHRlcm59LgorCQkJRXhhbXBsZSB0aGF0IGxpc3RzIGFsbCBmdW5jdGlvbnMgZW5kaW5nIHdpdGggIkZpbGUiOiA+CisJCQkJOmZ1bmN0aW9uIC9GaWxlJAogPAogCQkJCQkJCSo6ZnVuY3Rpb24tdmVyYm9zZSoKIFdoZW4gJ3ZlcmJvc2UnIGlzIG5vbi16ZXJvLCBsaXN0aW5nIGEgZnVuY3Rpb24gd2lsbCBhbHNvIGRpc3BsYXkgd2hlcmUgaXQgd2FzCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zcGVsbC50eHQgYi9ydW50aW1lL2RvYy9zcGVsbC50eHQKaW5kZXggYTJkNTEzNS4uNDlmNzI3ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3BlbGwudHh0CisrKyBiL3J1bnRpbWUvZG9jL3NwZWxsLnR4dApAQCAtMjE4LDYgKzIxOCwxMiBAQAogCWRlX2F0CQlBdXN0cmlhCiAJZGVfY2gJCVN3aXR6ZXJsYW5kCiAKKwkJCQkJCQkqc3BlbGwtcnVzc2lhbioKK1NwZWNpZmljIGV4Y2VwdGlvbjogRm9yIFJ1c3NpYW4gdGhlc2Ugc3BlY2lhbCByZWdpb25zIGFyZSB1c2VkOgorCXJ1CQlhbGwgUnVzc2lhbiB3b3JkcyBhY2NlcHRlZAorCXJ1X3J1CQkiSUUiIGxldHRlciBzcGVsbGluZworCXJ1X3lvCQkiWU8iIGxldHRlciBzcGVsbGluZworCiAJCQkJCQkJKnNwZWxsLXlpZGRpc2gqCiBZaWRkaXNoIHJlcXVpcmVzIHVzaW5nICJ1dGYtOCIgZW5jb2RpbmcsIGJlY2F1c2Ugb2YgdGhlIHNwZWNpYWwgY2hhcmFjdGVycwogdXNlZC4gIElmIHlvdSBhcmUgdXNpbmcgbGF0aW4xIFZpbSB3aWxsIHVzZSB0cmFuc2xpdGVyYXRlZCAocm9tYW5pemVkKSBZaWRkaXNoCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCA4NzBiN2JiLi45MzBmN2I1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTUyOTEsNyArNTI5MSw2IEBACiBoZWJyZXcudHh0CWhlYnJldy50eHQJLypoZWJyZXcudHh0KgogaGVscAl2YXJpb3VzLnR4dAkvKmhlbHAqCiBoZWxwLWNvbnRleHQJaGVscC50eHQJLypoZWxwLWNvbnRleHQqCi1oZWxwLXRhZ3MJdGFncwkxCiBoZWxwLXRyYW5zbGF0ZWQJdmFyaW91cy50eHQJLypoZWxwLXRyYW5zbGF0ZWQqCiBoZWxwLXh0ZXJtLXdpbmRvdwl2YXJpb3VzLnR4dAkvKmhlbHAteHRlcm0td2luZG93KgogaGVscC50eHQJaGVscC50eHQJLypoZWxwLnR4dCoKQEAgLTY0NTcsNiArNjQ1Niw3IEBACiBzcGVsbC1ta3NwZWxsCXNwZWxsLnR4dAkvKnNwZWxsLW1rc3BlbGwqCiBzcGVsbC1xdWlja3N0YXJ0CXNwZWxsLnR4dAkvKnNwZWxsLXF1aWNrc3RhcnQqCiBzcGVsbC1yZW1hcmtzCXNwZWxsLnR4dAkvKnNwZWxsLXJlbWFya3MqCitzcGVsbC1ydXNzaWFuCXNwZWxsLnR4dAkvKnNwZWxsLXJ1c3NpYW4qCiBzcGVsbC1zeW50YXgJc3BlbGwudHh0CS8qc3BlbGwtc3ludGF4Kgogc3BlbGwtd29yZGxpc3QtZm9ybWF0CXNwZWxsLnR4dAkvKnNwZWxsLXdvcmRsaXN0LWZvcm1hdCoKIHNwZWxsLXlpZGRpc2gJc3BlbGwudHh0CS8qc3BlbGwteWlkZGlzaCoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vdmVyaWxvZy52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL3Zlcmlsb2cudmltCmluZGV4IDhhOGNmYmUuLjJmNDI2YWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vdmVyaWxvZy52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi92ZXJpbG9nLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGZpbGV0eXBlIHBsdWdpbiBmaWxlCiAiIExhbmd1YWdlOglWZXJpbG9nIEhETAogIiBNYWludGFpbmVyOglDaGloLVRzdW4gSHVhbmcgPGN0aHVhbmdAbGFyYy5lZS5udGh1LmVkdS50dz4KLSIgTGFzdCBDaGFuZ2U6CVdlZCBPY3QgMzEgMTY6MTY6MTkgQ1NUIDIwMDEKKyIgTGFzdCBDaGFuZ2U6CU1vbiBTZXAgIDUgMTE6MDU6NTQgQ1NUIDIwMDUKICIgVVJMOgkJaHR0cDovL2xhcmMuZWUubnRodS5lZHUudHcvfmN0aHVhbmcvdmltL2Z0cGx1Z2luL3Zlcmlsb2cudmltCiAKICIgT25seSBkbyB0aGlzIHdoZW4gbm90IGRvbmUgeWV0IGZvciB0aGlzIGJ1ZmZlcgpAQCAtMTIsNiArMTIsMTAgQEAKICIgRG9uJ3QgbG9hZCBhbm90aGVyIHBsdWdpbiBmb3IgdGhpcyBidWZmZXIKIGxldCBiOmRpZF9mdHBsdWdpbiA9IDEKIAorIiBVbmRvIHRoZSBwbHVnaW4gZWZmZWN0CitsZXQgYjp1bmRvX2Z0cGx1Z2luID0gInNldGxvY2FsIGZvPCBjb208IHR3PCIKKyAgICBcIC4gInwgdW5sZXQgYjpicm93c2VmaWx0ZXIgYjptYXRjaF9pZ25vcmVjYXNlIGI6bWF0Y2hfd29yZHMiCisKICIgU2V0ICdmb3JtYXRvcHRpb25zJyB0byBicmVhayBjb21tZW50IGxpbmVzIGJ1dCBub3Qgb3RoZXIgbGluZXMsCiAiIGFuZCBpbnNlcnQgdGhlIGNvbW1lbnQgbGVhZGVyIHdoZW4gaGl0dGluZyA8Q1I+IG9yIHVzaW5nICJvIi4KIHNldGxvY2FsIGZvLT10IGZvKz1jcm9xbG0xCkBAIC0yMCw3ICsyNCw5IEBACiBzZXRsb2NhbCBjb21tZW50cz1zTzoqXCAtLG1POipcIFwgLGV4TzoqLyxzMTovKixtYjoqLGV4OiovLDovLwogCiAiIEZvcm1hdCBjb21tZW50cyB0byBiZSB1cCB0byA3OCBjaGFyYWN0ZXJzIGxvbmcKLXNldGxvY2FsIHR3PTc1CitpZiAmdGV4dHdpZHRoID09IDAgCisgIHNldGxvY2FsIHR3PTc4CitlbmRpZgogCiBzZXQgY3BvLT1DCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvcnUvbWFpbi5hYXAgYi9ydW50aW1lL3NwZWxsL3J1L21haW4uYWFwCmluZGV4IDg1YWVjYTkuLmUzZDM3YTEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvcnUvbWFpbi5hYXAKKysrIGIvcnVudGltZS9zcGVsbC9ydS9tYWluLmFhcApAQCAtNiw3ICs2LDcgQEAKIEBlbHNlOgogICAgIDpwcm9nc2VhcmNoIFZJTSB2aW0KIAotUkVHSU9OUyA9IFJVIElFIFlPCitSRUdJT05TID0gUlUgWU8KIFNQRUxMRElSID0gLi4KIEZJTEVTICAgID0gcnVfJCooUkVHSU9OUykuYWZmIHJ1XyQqKFJFR0lPTlMpLmRpYwogCkBAIC0xNCwyMSArMTQsMTggQEAKICAgICAgICAgJFNQRUxMRElSL3J1LmNwMTI1MS5zcGwgLi4vUkVBRE1FX3J1LnR4dAogCiAkU1BFTExESVIvcnUua29pOC1yLnNwbCA6ICRGSUxFUwotICAgICAgICA6c3lzIGVudiBMQU5HPXJ1X1JVLktPSTgtUiAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ydSBydV9SVSBydV9JRSBydV9ZTyIgLWMgcQorICAgICAgICA6c3lzIGVudiBMQU5HPXJ1X1JVLktPSTgtUiAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ydSBydV9SVSBydV9ZTyIgLWMgcQogCiAkU1BFTExESVIvcnUudXRmLTguc3BsIDogJEZJTEVTCi0gICAgICAgIDpzeXMgZW52IExBTkc9cnVfUlUuVVRGLTggJFZJTSAtdSBOT05FIC1lIC1jICJta3NwZWxsISAkU1BFTExESVIvcnUgcnVfUlUgcnVfSUUgcnVfWU8iIC1jIHEKKyAgICAgICAgOnN5cyBlbnYgTEFORz1ydV9SVS5VVEYtOCAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ydSBydV9SVSBydV9ZTyIgLWMgcQogCiAkU1BFTExESVIvcnUuY3AxMjUxLnNwbCA6ICRGSUxFUwotICAgICAgICA6c3lzIGVudiBMQU5HPXJ1X1JVLkNQMTI1MSAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ydSBydV9SVSBydV9JRSBydV9ZTyIgLWMgcQorICAgICAgICA6c3lzIGVudiBMQU5HPXJ1X1JVLkNQMTI1MSAkVklNIC11IE5PTkUgLWUgLWMgIm1rc3BlbGwhICRTUEVMTERJUi9ydSBydV9SVSBydV9ZTyIgLWMgcQogCiAuLi9SRUFETUVfcnUudHh0OiBSRUFETUVfcnVfJCooUkVHSU9OUykudHh0CiAgICAgICAgIDpwcmludCBydV9SVSA+ISAkdGFyZ2V0CiAgICAgICAgIDpjYXQgUkVBRE1FX3J1X1JVLnR4dCA+PiAkdGFyZ2V0CiAgICAgICAgIDpwcmludCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPj4kdGFyZ2V0Ci0gICAgICAgIDpwcmludCBydV9JRSA+PiAkdGFyZ2V0Ci0gICAgICAgIDpjYXQgUkVBRE1FX3J1X0lFLnR4dCA+PiAkdGFyZ2V0Ci0gICAgICAgIDpwcmludCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPj4kdGFyZ2V0CiAgICAgICAgIDpwcmludCBydV9ZTyA+PiAkdGFyZ2V0CiAgICAgICAgIDpjYXQgUkVBRE1FX3J1X1lPLnR4dCA+PiAkdGFyZ2V0CiAKQEAgLTM2LDcgKzMzLDcgQEAKICMgRmV0Y2hpbmcgdGhlIGZpbGVzIGZyb20gT3Blbk9mZmljZS5vcmcuCiAjCiBPT0RJUiA9IGh0dHA6Ly9mdHAuc2VydmljZXMub3Blbm9mZmljZS5vcmcvcHViL09wZW5PZmZpY2Uub3JnL2NvbnRyaWIvZGljdGlvbmFyaWVzCi06YXR0ciB7ZmV0Y2ggPSAkT09ESVIvJWZpbGUlfSBydV9SVS56aXAgcnVfUlVfeWUuemlwIHJ1X1JVX3lvLnppcAorOmF0dHIge2ZldGNoID0gJE9PRElSLyVmaWxlJX0gcnVfUlUuemlwIHJ1X1JVX3lvLnppcAogCiAjIFRoZSBmaWxlcyBkb24ndCBkZXBlbmQgb24gdGhlIC56aXAgZmlsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgaXQuCiAjIE9ubHkgZG93bmxvYWQgdGhlIHppcCBmaWxlIGlmIHRoZSB0YXJnZXRzIGRvbid0IGV4aXN0LgpAQCAtNTMsMjEgKzUwLDYgQEAKICAgICAgICAgQGlmIG9zLnBhdGguZXhpc3RzKCdydV9SVS5kaWZmJyk6CiAgICAgICAgICAgICA6c3lzIHBhdGNoIDxydV9SVS5kaWZmCiAKLXJ1X0lFLmFmZiBydV9JRS5kaWM6IHtidWlsZGNoZWNrPX0KLSAgICAgICAgOmFzc2VydHBrZyB1bnppcAotICAgICAgICA6ZmV0Y2ggcnVfUlVfeWUuemlwCi0gICAgICAgIDpzeXMgdW56aXAgcnVfUlVfeWUuemlwCi0gICAgICAgIDpkZWxldGUgcnVfUlVfeWUuemlwCi0gICAgICAgIDptb3ZlIHJ1X1JVX2llLmFmZiBydV9JRS5hZmYKLSAgICAgICAgOm1vdmUgcnVfUlVfaWUuZGljIHJ1X0lFLmRpYwotICAgICAgICA6bW92ZSBSRUFETUVfcnVfUlVfaWUudHh0IFJFQURNRV9ydV9JRS50eHQKLSAgICAgICAgQGlmIG5vdCBvcy5wYXRoLmV4aXN0cygncnVfSUUub3JpZy5hZmYnKToKLSAgICAgICAgICAgIDpjb3B5IHJ1X0lFLmFmZiBydV9JRS5vcmlnLmFmZgotICAgICAgICBAaWYgbm90IG9zLnBhdGguZXhpc3RzKCdydV9JRS5vcmlnLmRpYycpOgotICAgICAgICAgICAgOmNvcHkgcnVfSUUuZGljIHJ1X0lFLm9yaWcuZGljCi0gICAgICAgIEBpZiBvcy5wYXRoLmV4aXN0cygncnVfSUUuZGlmZicpOgotICAgICAgICAgICAgOnN5cyBwYXRjaCA8cnVfSUUuZGlmZgotCiBydV9ZTy5hZmYgcnVfWU8uZGljOiB7YnVpbGRjaGVjaz19CiAgICAgICAgIDphc3NlcnRwa2cgdW56aXAKICAgICAgICAgOmZldGNoIHJ1X1JVX3lvLnppcApAQCAtOTEsOCArNzMsNiBAQAogICAgICAgICA6YXNzZXJ0cGtnIGRpZmYKICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBydV9SVS5vcmlnLmFmZiBydV9SVS5hZmYgPnJ1X1JVLmRpZmYKICAgICAgICAgOnN5cyB7Zm9yY2V9IGRpZmYgLWEgLUMgMSBydV9SVS5vcmlnLmRpYyBydV9SVS5kaWMgPj5ydV9SVS5kaWZmCi0gICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgcnVfSUUub3JpZy5hZmYgcnVfSUUuYWZmID5ydV9JRS5kaWZmCi0gICAgICAgIDpzeXMge2ZvcmNlfSBkaWZmIC1hIC1DIDEgcnVfSUUub3JpZy5kaWMgcnVfSUUuZGljID4+cnVfSUUuZGlmZgogICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIHJ1X1lPLm9yaWcuYWZmIHJ1X1lPLmFmZiA+cnVfWU8uZGlmZgogICAgICAgICA6c3lzIHtmb3JjZX0gZGlmZiAtYSAtQyAxIHJ1X1lPLm9yaWcuZGljIHJ1X1lPLmRpYyA+PnJ1X1lPLmRpZmYKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9ydS9ydV9SVS5kaWZmIGIvcnVudGltZS9zcGVsbC9ydS9ydV9SVS5kaWZmCmluZGV4IDE4NTYwYzMuLmM3OWZiMGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvcnUvcnVfUlUuZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL3J1L3J1X1JVLmRpZmYKQEAgLTEsNSArMSwyMSBAQAotKioqIHJ1X1JVLm9yaWcuZGljCVNhdCBBdWcgMjcgMjI6NTQ6NTUgMjAwNQotLS0tIHJ1X1JVLmRpYwlTdW4gQXVnIDI4IDExOjQ2OjM0IDIwMDUKKyoqKiBydV9SVS5vcmlnLmFmZglTdW4gQXVnIDI4IDIxOjEyOjI3IDIwMDUKKy0tLSBydV9SVS5hZmYJU3VuIFNlcCAgNCAxNzoyMTo0MCAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiAzLDQgKioqKgorLS0tIDMsMTMgLS0tLQorICAKKysgRk9MIMHC18fExaPW2snKy8zNzs/Q0tPU1cbIw97b3djZ39zA0QorKyBMT1cgwcLXx8TFo9baycrLzM3Oz9DS09TVxsjD3tvd2Nnf3MDRCisrIFVQUCDh4vfn5OWz9vrp6uvs7e7v8PLz9PXm6OP++/34+f/84PEKKysgCisrIFNPRk9GUk9NIMHC18fExaPW2snKy8zNzs/Q0tPU1cbIw97b3djZ39zA0eHi9+fk5bP2+unq6+zt7u/w8vP09ebo4/77/fj5//zg8QorKyBTT0ZPVE8gICDFwtfHxMXF1trFysvMzs7F0NLT1MXGyMPe29vYxSfFxcXl4vfn5OXl9vrl6uvs7u7l8PLz9OXm6OP++/v45Sfl5eUKKysgCisrIE1JRFdPUkQgJy0KKysgCisgIFNGWCBMIFkgNTIKKyoqKiBydV9SVS5vcmlnLmRpYwlTdW4gQXVnIDI4IDIxOjEyOjI3IDIwMDUKKy0tLSBydV9SVS5kaWMJU3VuIFNlcCAgNCAxNzoyMzoyNyAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA4NzY3LDg3NjkgKioqKgogICDCzMXLzM/T1NgvRgpAQCAtMTMsMTEgKzI5LDE1IEBACiAgINLB2tXCxcTJ19vJyi9BCiAtLS0gOTgwODUsOTgwODYgLS0tLQogKioqKioqKioqKioqKioqCi0qKiogMTE1MDA3LDExNTAwOSAqKioqCi0gINTPzMvJL0IKLS0g1M/My8kvTworKioqIDExNTAwNiwxMTUwMDkgKioqKgorICDUz8zLwcDdycrT0S9BCishINTPzMvJL0IKKyEg1M/My8kvTwogICDUz8zLzMEvTAotLS0tIDExNTAwNSwxMTUwMDYgLS0tLQorLS0tIDExNTAwNCwxMTUwMDYgLS0tLQorICDUz8zLwcDdycrT0S9BCishINTPzMvJL0JPCisgINTPzMvMwS9MCiAqKioqKioqKioqKioqKioKICoqKiAxMTkyMDksMTE5MjExICoqKioKICAg1c7J1sXOztnKL0FTWApkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9ydS9ydV9ZTy5kaWZmIGIvcnVudGltZS9zcGVsbC9ydS9ydV9ZTy5kaWZmCmluZGV4IDJjZjgxNzcuLmNkMmViNWEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvcnUvcnVfWU8uZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL3J1L3J1X1lPLmRpZmYKQEAgLTEsNSArMSwyMSBAQAotKioqIHJ1X1lPLm9yaWcuZGljCVNhdCBBdWcgMjcgMjI6NTQ6NTUgMjAwNQotLS0tIHJ1X1lPLmRpYwlTdW4gQXVnIDI4IDExOjQ2OjU4IDIwMDUKKyoqKiBydV9ZTy5vcmlnLmFmZglTdW4gQXVnIDI4IDIxOjEyOjM1IDIwMDUKKy0tLSBydV9ZTy5hZmYJU3VuIFNlcCAgNCAxNzoyMzo1MSAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiAzLDQgKioqKgorLS0tIDMsMTMgLS0tLQorICAKKysgRk9MIMHC18fExaPW2snKy8zNzs/Q0tPU1cbIw97b3djZ39zA0QorKyBMT1cgwcLXx8TFo9baycrLzM3Oz9DS09TVxsjD3tvd2Nnf3MDRCisrIFVQUCDh4vfn5OWz9vrp6uvs7e7v8PLz9PXm6OP++/34+f/84PEKKysgCisrIFNPRk9GUk9NIMHC18fExaPW2snKy8zNzs/Q0tPU1cbIw97b3djZ39zA0eHi9+fk5bP2+unq6+zt7u/w8vP09ebo4/77/fj5//zg8QorKyBTT0ZPVE8gICDFwtfHxMXF1trFysvMzs7F0NLT1MXGyMPe29vYxSfFxcXl4vfn5OXl9vrl6uvs7u7l8PLz9OXm6OP++/v45Sfl5eUKKysgCisrIE1JRFdPUkQgJy0KKysgCisgIFNGWCBMIFkgNTYKKyoqKiBydV9ZTy5vcmlnLmRpYwlTdW4gQXVnIDI4IDIxOjEyOjM1IDIwMDUKKy0tLSBydV9ZTy5kaWMJU3VuIFNlcCAgNCAxNzoyNDoyNiAyMDA1CiAqKioqKioqKioqKioqKioKICoqKiA4NjQ3MSw4NjQ3MyAqKioqCiAgINDP3tSjzs7Zyi9BUwpAQCAtNyw4ICsyMywxMiBAQAogICDQz97UyS9CCiAtLS0gODY0NzEsODY0NzIgLS0tLQogKioqKioqKioqKioqKioqCi0qKiogMTE1MjQ2LDExNTI0OCAqKioqCi0gINTPzMvJL0IKLS0g1M/My8kvTworKioqIDExNTI0NSwxMTUyNDggKioqKgorICDUz8zLwcDdycrT0S9BCishINTPzMvJL0IKKyEg1M/My8kvTwogICDUz8zLzMEvTAotLS0tIDExNTI0NSwxMTUyNDYgLS0tLQorLS0tIDExNTI0NCwxMTUyNDYgLS0tLQorICDUz8zLwcDdycrT0S9BCishINTPzMvJL0JPCisgINTPzMvMwS9MCmRpZmYgLS1naXQgYS9zcmMvZ2xvYmFscy5oIGIvc3JjL2dsb2JhbHMuaAppbmRleCAyOWE2NDNiLi44MGQwOTliIDEwMDY0NAotLS0gYS9zcmMvZ2xvYmFscy5oCisrKyBiL3NyYy9nbG9iYWxzLmgKQEAgLTE1Miw3ICsxNTIsNyBAQAogI2lmZGVmIEZFQVRfRVZBTAogRVhURVJOIGludAllbXNnX3NraXAgSU5JVCg9IDApOwkgICAgLyogZG9uJ3QgZGlzcGxheSBlcnJvcnMgZm9yCiAJCQkJCSAgICAgICBleHByZXNzaW9uIHRoYXQgaXMgc2tpcHBlZCAqLwotRVhURVJOIGludAllbXNnX3NldmVyZSBJTklUKD1GQUxTRSk7ICAgLyogdXNlIG1lc3NhZ2Ugb2YgbmV4dCBvZiBzZXZlcmFsCitFWFRFUk4gaW50CWVtc2dfc2V2ZXJlIElOSVQoPSBGQUxTRSk7ICAgLyogdXNlIG1lc3NhZ2Ugb2YgbmV4dCBvZiBzZXZlcmFsCiAJCQkJCSAgICAgICBlbXNnKCkgY2FsbHMgZm9yIHRocm93ICovCiBFWFRFUk4gaW50CWRpZF9lbmRpZiBJTklUKD0gRkFMU0UpOyAgICAvKiBqdXN0IGhhZCAiOmVuZGlmIiAqLwogI2VuZGlmCkBAIC0xMjQyLDE4NyArMTI0MiwxOTAgQEAKICAqIFRoZSBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiZSBzaGFyZWQgYXJlIGluY2x1ZGVkIGhlcmUuCiAgKiBFeGNsdWRlZCBhcmUgZXJyb3JzIHRoYXQgYXJlIG9ubHkgdXNlZCBvbmNlIGFuZCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KLUVYVEVSTiBjaGFyX3UgZV9hYm9ydFtdCQlJTklUKD1OXygiRTQ3MDogQ29tbWFuZCBhYm9ydGVkIikpOwotRVhURVJOIGNoYXJfdSBlX2FyZ3JlcVtdCUlOSVQoPU5fKCJFNDcxOiBBcmd1bWVudCByZXF1aXJlZCIpKTsKLUVYVEVSTiBjaGFyX3UgZV9iYWNrc2xhc2hbXQlJTklUKD1OXygiRTEwOiBcXCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgLywgPyBvciAmIikpOworRVhURVJOIGNoYXJfdSBlX2Fib3J0W10JCUlOSVQoPSBOXygiRTQ3MDogQ29tbWFuZCBhYm9ydGVkIikpOworRVhURVJOIGNoYXJfdSBlX2FyZ3JlcVtdCUlOSVQoPSBOXygiRTQ3MTogQXJndW1lbnQgcmVxdWlyZWQiKSk7CitFWFRFUk4gY2hhcl91IGVfYmFja3NsYXNoW10JSU5JVCg9IE5fKCJFMTA6IFxcIHNob3VsZCBiZSBmb2xsb3dlZCBieSAvLCA/IG9yICYiKSk7CiAjaWZkZWYgRkVBVF9DTURXSU4KLUVYVEVSTiBjaGFyX3UgZV9jbWR3aW5bXQlJTklUKD1OXygiRTExOiBJbnZhbGlkIGluIGNvbW1hbmQtbGluZSB3aW5kb3c7IDxDUj4gZXhlY3V0ZXMsIENUUkwtQyBxdWl0cyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9jbWR3aW5bXQlJTklUKD0gTl8oIkUxMTogSW52YWxpZCBpbiBjb21tYW5kLWxpbmUgd2luZG93OyA8Q1I+IGV4ZWN1dGVzLCBDVFJMLUMgcXVpdHMiKSk7CiAjZW5kaWYKLUVYVEVSTiBjaGFyX3UgZV9jdXJkaXJbXQlJTklUKD1OXygiRTEyOiBDb21tYW5kIG5vdCBhbGxvd2VkIGZyb20gZXhyYy92aW1yYyBpbiBjdXJyZW50IGRpciBvciB0YWcgc2VhcmNoIikpOworRVhURVJOIGNoYXJfdSBlX2N1cmRpcltdCUlOSVQoPSBOXygiRTEyOiBDb21tYW5kIG5vdCBhbGxvd2VkIGZyb20gZXhyYy92aW1yYyBpbiBjdXJyZW50IGRpciBvciB0YWcgc2VhcmNoIikpOwogI2lmZGVmIEZFQVRfRVZBTAotRVhURVJOIGNoYXJfdSBlX2VuZGlmW10JCUlOSVQoPU5fKCJFMTcxOiBNaXNzaW5nIDplbmRpZiIpKTsKLUVYVEVSTiBjaGFyX3UgZV9lbmR0cnlbXQlJTklUKD1OXygiRTYwMDogTWlzc2luZyA6ZW5kdHJ5IikpOwotRVhURVJOIGNoYXJfdSBlX2VuZHdoaWxlW10JSU5JVCg9Tl8oIkUxNzA6IE1pc3NpbmcgOmVuZHdoaWxlIikpOwotRVhURVJOIGNoYXJfdSBlX2VuZGZvcltdCUlOSVQoPU5fKCJFMTcwOiBNaXNzaW5nIDplbmRmb3IiKSk7Ci1FWFRFUk4gY2hhcl91IGVfd2hpbGVbXQkJSU5JVCg9Tl8oIkU1ODg6IDplbmR3aGlsZSB3aXRob3V0IDp3aGlsZSIpKTsKLUVYVEVSTiBjaGFyX3UgZV9mb3JbXQkJSU5JVCg9Tl8oIkU1ODg6IDplbmRmb3Igd2l0aG91dCA6Zm9yIikpOworRVhURVJOIGNoYXJfdSBlX2VuZGlmW10JCUlOSVQoPSBOXygiRTE3MTogTWlzc2luZyA6ZW5kaWYiKSk7CitFWFRFUk4gY2hhcl91IGVfZW5kdHJ5W10JSU5JVCg9IE5fKCJFNjAwOiBNaXNzaW5nIDplbmR0cnkiKSk7CitFWFRFUk4gY2hhcl91IGVfZW5kd2hpbGVbXQlJTklUKD0gTl8oIkUxNzA6IE1pc3NpbmcgOmVuZHdoaWxlIikpOworRVhURVJOIGNoYXJfdSBlX2VuZGZvcltdCUlOSVQoPSBOXygiRTE3MDogTWlzc2luZyA6ZW5kZm9yIikpOworRVhURVJOIGNoYXJfdSBlX3doaWxlW10JCUlOSVQoPSBOXygiRTU4ODogOmVuZHdoaWxlIHdpdGhvdXQgOndoaWxlIikpOworRVhURVJOIGNoYXJfdSBlX2ZvcltdCQlJTklUKD0gTl8oIkU1ODg6IDplbmRmb3Igd2l0aG91dCA6Zm9yIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfZXhpc3RzW10JSU5JVCg9Tl8oIkUxMzogRmlsZSBleGlzdHMgKGFkZCAhIHRvIG92ZXJyaWRlKSIpKTsKLUVYVEVSTiBjaGFyX3UgZV9mYWlsZWRbXQlJTklUKD1OXygiRTQ3MjogQ29tbWFuZCBmYWlsZWQiKSk7CitFWFRFUk4gY2hhcl91IGVfZXhpc3RzW10JSU5JVCg9IE5fKCJFMTM6IEZpbGUgZXhpc3RzIChhZGQgISB0byBvdmVycmlkZSkiKSk7CitFWFRFUk4gY2hhcl91IGVfZmFpbGVkW10JSU5JVCg9IE5fKCJFNDcyOiBDb21tYW5kIGZhaWxlZCIpKTsKICNpZiBkZWZpbmVkKEZFQVRfR1VJKSAmJiBkZWZpbmVkKEZFQVRfWEZPTlRTRVQpCi1FWFRFUk4gY2hhcl91IGVfZm9udHNldFtdCUlOSVQoPU5fKCJFMjM0OiBVbmtub3duIGZvbnRzZXQ6ICVzIikpOworRVhURVJOIGNoYXJfdSBlX2ZvbnRzZXRbXQlJTklUKD0gTl8oIkUyMzQ6IFVua25vd24gZm9udHNldDogJXMiKSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEZFQVRfR1VJX1gxMSkgfHwgZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoTUFDT1MpIFwKIAl8fCBkZWZpbmVkKEZFQVRfR1VJX1BIT1RPTikgfHwgZGVmaW5lZChGRUFUX0dVSV9NU1dJTikKLUVYVEVSTiBjaGFyX3UgZV9mb250W10JCUlOSVQoPU5fKCJFMjM1OiBVbmtub3duIGZvbnQ6ICVzIikpOworRVhURVJOIGNoYXJfdSBlX2ZvbnRbXQkJSU5JVCg9IE5fKCJFMjM1OiBVbmtub3duIGZvbnQ6ICVzIikpOwogI2VuZGlmCiAjaWYgKGRlZmluZWQoRkVBVF9HVUlfWDExKSB8fCBkZWZpbmVkKEZFQVRfR1VJX0dUSykpICYmICFkZWZpbmVkKEhBVkVfR1RLMikKLUVYVEVSTiBjaGFyX3UgZV9mb250d2lkdGhbXQlJTklUKD1OXygiRTIzNjogRm9udCBcIiVzXCIgaXMgbm90IGZpeGVkLXdpZHRoIikpOworRVhURVJOIGNoYXJfdSBlX2ZvbnR3aWR0aFtdCUlOSVQoPSBOXygiRTIzNjogRm9udCBcIiVzXCIgaXMgbm90IGZpeGVkLXdpZHRoIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfaW50ZXJuYWxbXQlJTklUKD1OXygiRTQ3MzogSW50ZXJuYWwgZXJyb3IiKSk7Ci1FWFRFUk4gY2hhcl91IGVfaW50ZXJyW10JSU5JVCg9Tl8oIkludGVycnVwdGVkIikpOwotRVhURVJOIGNoYXJfdSBlX2ludmFkZHJbXQlJTklUKD1OXygiRTE0OiBJbnZhbGlkIGFkZHJlc3MiKSk7Ci1FWFRFUk4gY2hhcl91IGVfaW52YXJnW10JSU5JVCg9Tl8oIkU0NzQ6IEludmFsaWQgYXJndW1lbnQiKSk7Ci1FWFRFUk4gY2hhcl91IGVfaW52YXJnMltdCUlOSVQoPU5fKCJFNDc1OiBJbnZhbGlkIGFyZ3VtZW50OiAlcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pbnRlcm5hbFtdCUlOSVQoPSBOXygiRTQ3MzogSW50ZXJuYWwgZXJyb3IiKSk7CitFWFRFUk4gY2hhcl91IGVfaW50ZXJyW10JSU5JVCg9IE5fKCJJbnRlcnJ1cHRlZCIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pbnZhZGRyW10JSU5JVCg9IE5fKCJFMTQ6IEludmFsaWQgYWRkcmVzcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pbnZhcmdbXQlJTklUKD0gTl8oIkU0NzQ6IEludmFsaWQgYXJndW1lbnQiKSk7CitFWFRFUk4gY2hhcl91IGVfaW52YXJnMltdCUlOSVQoPSBOXygiRTQ3NTogSW52YWxpZCBhcmd1bWVudDogJXMiKSk7CiAjaWZkZWYgRkVBVF9FVkFMCi1FWFRFUk4gY2hhcl91IGVfaW52ZXhwcjJbXQlJTklUKD1OXygiRTE1OiBJbnZhbGlkIGV4cHJlc3Npb246ICVzIikpOworRVhURVJOIGNoYXJfdSBlX2ludmV4cHIyW10JSU5JVCg9IE5fKCJFMTU6IEludmFsaWQgZXhwcmVzc2lvbjogJXMiKSk7CiAjZW5kaWYKLUVYVEVSTiBjaGFyX3UgZV9pbnZyYW5nZVtdCUlOSVQoPU5fKCJFMTY6IEludmFsaWQgcmFuZ2UiKSk7Ci1FWFRFUk4gY2hhcl91IGVfaW52Y21kW10JSU5JVCg9Tl8oIkU0NzY6IEludmFsaWQgY29tbWFuZCIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pbnZyYW5nZVtdCUlOSVQoPSBOXygiRTE2OiBJbnZhbGlkIHJhbmdlIikpOworRVhURVJOIGNoYXJfdSBlX2ludmNtZFtdCUlOSVQoPSBOXygiRTQ3NjogSW52YWxpZCBjb21tYW5kIikpOwogI2lmIGRlZmluZWQoVU5JWCkgfHwgKGRlZmluZWQoRkVBVF9TWU5fSEwpICYmIGRlZmluZWQoRkVBVF9NQllURSkpCi1FWFRFUk4gY2hhcl91IGVfaXNhZGlyMltdCUlOSVQoPU5fKCJFMTc6IFwiJXNcIiBpcyBhIGRpcmVjdG9yeSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pc2FkaXIyW10JSU5JVCg9IE5fKCJFMTc6IFwiJXNcIiBpcyBhIGRpcmVjdG9yeSIpKTsKICNlbmRpZgogI2lmZGVmIEZFQVRfTElCQ0FMTAotRVhURVJOIGNoYXJfdSBlX2xpYmNhbGxbXQlJTklUKD1OXygiRTM2NDogTGlicmFyeSBjYWxsIGZhaWxlZCBmb3IgXCIlcygpXCIiKSk7CitFWFRFUk4gY2hhcl91IGVfbGliY2FsbFtdCUlOSVQoPSBOXygiRTM2NDogTGlicmFyeSBjYWxsIGZhaWxlZCBmb3IgXCIlcygpXCIiKSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKERZTkFNSUNfUEVSTCkgfHwgZGVmaW5lZChEWU5BTUlDX1BZVEhPTikgfHwgZGVmaW5lZChEWU5BTUlDX1JVQlkpIFwKIAl8fCBkZWZpbmVkKERZTkFNSUNfVENMKSB8fCBkZWZpbmVkKERZTkFNSUNfSUNPTlYpIFwKIAl8fCBkZWZpbmVkKERZTkFNSUNfR0VUVEVYVCkgfHwgZGVmaW5lZChEWU5BTUlDX01aU0NIRU1FKQotRVhURVJOIGNoYXJfdSBlX2xvYWRsaWJbXQlJTklUKD1OXygiRTM3MDogQ291bGQgbm90IGxvYWQgbGlicmFyeSAlcyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9sb2FkZnVuY1tdCUlOSVQoPU5fKCJFNDQ4OiBDb3VsZCBub3QgbG9hZCBsaWJyYXJ5IGZ1bmN0aW9uICVzIikpOworRVhURVJOIGNoYXJfdSBlX2xvYWRsaWJbXQlJTklUKD0gTl8oIkUzNzA6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgJXMiKSk7CitFWFRFUk4gY2hhcl91IGVfbG9hZGZ1bmNbXQlJTklUKD0gTl8oIkU0NDg6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgZnVuY3Rpb24gJXMiKSk7CiAjZW5kaWYKLUVYVEVSTiBjaGFyX3UgZV9tYXJraW52YWxbXQlJTklUKD1OXygiRTE5OiBNYXJrIGhhcyBpbnZhbGlkIGxpbmUgbnVtYmVyIikpOwotRVhURVJOIGNoYXJfdSBlX21hcmtub3RzZXRbXQlJTklUKD1OXygiRTIwOiBNYXJrIG5vdCBzZXQiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbW9kaWZpYWJsZVtdCUlOSVQoPU5fKCJFMjE6IENhbm5vdCBtYWtlIGNoYW5nZXMsICdtb2RpZmlhYmxlJyBpcyBvZmYiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbmVzdGluZ1tdCUlOSVQoPU5fKCJFMjI6IFNjcmlwdHMgbmVzdGVkIHRvbyBkZWVwIikpOwotRVhURVJOIGNoYXJfdSBlX25vYWx0W10JCUlOSVQoPU5fKCJFMjM6IE5vIGFsdGVybmF0ZSBmaWxlIikpOwotRVhURVJOIGNoYXJfdSBlX25vYWJicltdCUlOSVQoPU5fKCJFMjQ6IE5vIHN1Y2ggYWJicmV2aWF0aW9uIikpOwotRVhURVJOIGNoYXJfdSBlX25vYmFuZ1tdCUlOSVQoPU5fKCJFNDc3OiBObyAhIGFsbG93ZWQiKSk7CitFWFRFUk4gY2hhcl91IGVfbWFya2ludmFsW10JSU5JVCg9IE5fKCJFMTk6IE1hcmsgaGFzIGludmFsaWQgbGluZSBudW1iZXIiKSk7CitFWFRFUk4gY2hhcl91IGVfbWFya25vdHNldFtdCUlOSVQoPSBOXygiRTIwOiBNYXJrIG5vdCBzZXQiKSk7CitFWFRFUk4gY2hhcl91IGVfbW9kaWZpYWJsZVtdCUlOSVQoPSBOXygiRTIxOiBDYW5ub3QgbWFrZSBjaGFuZ2VzLCAnbW9kaWZpYWJsZScgaXMgb2ZmIikpOworRVhURVJOIGNoYXJfdSBlX25lc3RpbmdbXQlJTklUKD0gTl8oIkUyMjogU2NyaXB0cyBuZXN0ZWQgdG9vIGRlZXAiKSk7CitFWFRFUk4gY2hhcl91IGVfbm9hbHRbXQkJSU5JVCg9IE5fKCJFMjM6IE5vIGFsdGVybmF0ZSBmaWxlIikpOworRVhURVJOIGNoYXJfdSBlX25vYWJicltdCUlOSVQoPSBOXygiRTI0OiBObyBzdWNoIGFiYnJldmlhdGlvbiIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub2JhbmdbXQlJTklUKD0gTl8oIkU0Nzc6IE5vICEgYWxsb3dlZCIpKTsKICNpZm5kZWYgRkVBVF9HVUkKLUVYVEVSTiBjaGFyX3UgZV9ub2d2aW1bXQlJTklUKD1OXygiRTI1OiBHVUkgY2Fubm90IGJlIHVzZWQ6IE5vdCBlbmFibGVkIGF0IGNvbXBpbGUgdGltZSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub2d2aW1bXQlJTklUKD0gTl8oIkUyNTogR1VJIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWUiKSk7CiAjZW5kaWYKICNpZm5kZWYgRkVBVF9SSUdIVExFRlQKLUVYVEVSTiBjaGFyX3UgZV9ub2hlYnJld1tdCUlOSVQoPU5fKCJFMjY6IEhlYnJldyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iKSk7CitFWFRFUk4gY2hhcl91IGVfbm9oZWJyZXdbXQlJTklUKD0gTl8oIkUyNjogSGVicmV3IGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKICNlbmRpZgogI2lmbmRlZiBGRUFUX0ZLTUFQCi1FWFRFUk4gY2hhcl91IGVfbm9mYXJzaVtdCUlOSVQoPU5fKCJFMjc6IEZhcnNpIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub2ZhcnNpW10JSU5JVCg9IE5fKCJFMjc6IEZhcnNpIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKICNlbmRpZgogI2lmbmRlZiBGRUFUX0FSQUJJQwotRVhURVJOIGNoYXJfdSBlX25vYXJhYmljW10JSU5JVCg9Tl8oIkU4MDA6IEFyYWJpYyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iKSk7CitFWFRFUk4gY2hhcl91IGVfbm9hcmFiaWNbXQlJTklUKD0gTl8oIkU4MDA6IEFyYWJpYyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iKSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEZFQVRfU0VBUkNIX0VYVFJBKSB8fCBkZWZpbmVkKEZFQVRfU1lOX0hMKQotRVhURVJOIGNoYXJfdSBlX25vZ3JvdXBbXQlJTklUKD1OXygiRTI4OiBObyBzdWNoIGhpZ2hsaWdodCBncm91cCBuYW1lOiAlcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub2dyb3VwW10JSU5JVCg9IE5fKCJFMjg6IE5vIHN1Y2ggaGlnaGxpZ2h0IGdyb3VwIG5hbWU6ICVzIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfbm9pbnN0ZXh0W10JSU5JVCg9Tl8oIkUyOTogTm8gaW5zZXJ0ZWQgdGV4dCB5ZXQiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbm9sYXN0Y21kW10JSU5JVCg9Tl8oIkUzMDogTm8gcHJldmlvdXMgY29tbWFuZCBsaW5lIikpOwotRVhURVJOIGNoYXJfdSBlX25vbWFwW10JCUlOSVQoPU5fKCJFMzE6IE5vIHN1Y2ggbWFwcGluZyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub21hdGNoW10JSU5JVCg9Tl8oIkU0Nzk6IE5vIG1hdGNoIikpOwotRVhURVJOIGNoYXJfdSBlX25vbWF0Y2gyW10JSU5JVCg9Tl8oIkU0ODA6IE5vIG1hdGNoOiAlcyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub25hbWVbXQlJTklUKD1OXygiRTMyOiBObyBmaWxlIG5hbWUiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbm9wcmVzdWJbXQlJTklUKD1OXygiRTMzOiBObyBwcmV2aW91cyBzdWJzdGl0dXRlIHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub3ByZXZbXQlJTklUKD1OXygiRTM0OiBObyBwcmV2aW91cyBjb21tYW5kIikpOwotRVhURVJOIGNoYXJfdSBlX25vcHJldnJlW10JSU5JVCg9Tl8oIkUzNTogTm8gcHJldmlvdXMgcmVndWxhciBleHByZXNzaW9uIikpOwotRVhURVJOIGNoYXJfdSBlX25vcmFuZ2VbXQlJTklUKD1OXygiRTQ4MTogTm8gcmFuZ2UgYWxsb3dlZCIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub2luc3RleHRbXQlJTklUKD0gTl8oIkUyOTogTm8gaW5zZXJ0ZWQgdGV4dCB5ZXQiKSk7CitFWFRFUk4gY2hhcl91IGVfbm9sYXN0Y21kW10JSU5JVCg9IE5fKCJFMzA6IE5vIHByZXZpb3VzIGNvbW1hbmQgbGluZSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub21hcFtdCQlJTklUKD0gTl8oIkUzMTogTm8gc3VjaCBtYXBwaW5nIikpOworRVhURVJOIGNoYXJfdSBlX25vbWF0Y2hbXQlJTklUKD0gTl8oIkU0Nzk6IE5vIG1hdGNoIikpOworRVhURVJOIGNoYXJfdSBlX25vbWF0Y2gyW10JSU5JVCg9IE5fKCJFNDgwOiBObyBtYXRjaDogJXMiKSk7CitFWFRFUk4gY2hhcl91IGVfbm9uYW1lW10JSU5JVCg9IE5fKCJFMzI6IE5vIGZpbGUgbmFtZSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub3ByZXN1YltdCUlOSVQoPSBOXygiRTMzOiBObyBwcmV2aW91cyBzdWJzdGl0dXRlIHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub3ByZXZbXQlJTklUKD0gTl8oIkUzNDogTm8gcHJldmlvdXMgY29tbWFuZCIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub3ByZXZyZVtdCUlOSVQoPSBOXygiRTM1OiBObyBwcmV2aW91cyByZWd1bGFyIGV4cHJlc3Npb24iKSk7CitFWFRFUk4gY2hhcl91IGVfbm9yYW5nZVtdCUlOSVQoPSBOXygiRTQ4MTogTm8gcmFuZ2UgYWxsb3dlZCIpKTsKICNpZmRlZiBGRUFUX1dJTkRPV1MKLUVYVEVSTiBjaGFyX3UgZV9ub3Jvb21bXQlJTklUKD1OXygiRTM2OiBOb3QgZW5vdWdoIHJvb20iKSk7CitFWFRFUk4gY2hhcl91IGVfbm9yb29tW10JSU5JVCg9IE5fKCJFMzY6IE5vdCBlbm91Z2ggcm9vbSIpKTsKICNlbmRpZgogI2lmZGVmIEZFQVRfQ0xJRU5UU0VSVkVSCi1FWFRFUk4gY2hhcl91IGVfbm9zZXJ2ZXJbXQlJTklUKD1OXygiRTI0Nzogbm8gcmVnaXN0ZXJlZCBzZXJ2ZXIgbmFtZWQgXCIlc1wiIikpOworRVhURVJOIGNoYXJfdSBlX25vc2VydmVyW10JSU5JVCg9IE5fKCJFMjQ3OiBubyByZWdpc3RlcmVkIHNlcnZlciBuYW1lZCBcIiVzXCIiKSk7CiAjZW5kaWYKLUVYVEVSTiBjaGFyX3UgZV9ub3RjcmVhdGVbXQlJTklUKD1OXygiRTQ4MjogQ2FuJ3QgY3JlYXRlIGZpbGUgJXMiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbm90bXBbXQkJSU5JVCg9Tl8oIkU0ODM6IENhbid0IGdldCB0ZW1wIGZpbGUgbmFtZSIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub3RvcGVuW10JSU5JVCg9Tl8oIkU0ODQ6IENhbid0IG9wZW4gZmlsZSAlcyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub3RyZWFkW10JSU5JVCg9Tl8oIkU0ODU6IENhbid0IHJlYWQgZmlsZSAlcyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9ub3dydG1zZ1tdCUlOSVQoPU5fKCJFMzc6IE5vIHdyaXRlIHNpbmNlIGxhc3QgY2hhbmdlIChhZGQgISB0byBvdmVycmlkZSkiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbnVsbFtdCQlJTklUKD1OXygiRTM4OiBOdWxsIGFyZ3VtZW50IikpOworRVhURVJOIGNoYXJfdSBlX25vdGNyZWF0ZVtdCUlOSVQoPSBOXygiRTQ4MjogQ2FuJ3QgY3JlYXRlIGZpbGUgJXMiKSk7CitFWFRFUk4gY2hhcl91IGVfbm90bXBbXQkJSU5JVCg9IE5fKCJFNDgzOiBDYW4ndCBnZXQgdGVtcCBmaWxlIG5hbWUiKSk7CitFWFRFUk4gY2hhcl91IGVfbm90b3BlbltdCUlOSVQoPSBOXygiRTQ4NDogQ2FuJ3Qgb3BlbiBmaWxlICVzIikpOworRVhURVJOIGNoYXJfdSBlX25vdHJlYWRbXQlJTklUKD0gTl8oIkU0ODU6IENhbid0IHJlYWQgZmlsZSAlcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9ub3dydG1zZ1tdCUlOSVQoPSBOXygiRTM3OiBObyB3cml0ZSBzaW5jZSBsYXN0IGNoYW5nZSAoYWRkICEgdG8gb3ZlcnJpZGUpIikpOworRVhURVJOIGNoYXJfdSBlX251bGxbXQkJSU5JVCg9IE5fKCJFMzg6IE51bGwgYXJndW1lbnQiKSk7CiAjaWZkZWYgRkVBVF9ESUdSQVBIUwotRVhURVJOIGNoYXJfdSBlX251bWJlcl9leHBbXQlJTklUKD1OXygiRTM5OiBOdW1iZXIgZXhwZWN0ZWQiKSk7CitFWFRFUk4gY2hhcl91IGVfbnVtYmVyX2V4cFtdCUlOSVQoPSBOXygiRTM5OiBOdW1iZXIgZXhwZWN0ZWQiKSk7CiAjZW5kaWYKICNpZmRlZiBGRUFUX1FVSUNLRklYCi1FWFRFUk4gY2hhcl91IGVfb3BlbmVycmZbXQlJTklUKD1OXygiRTQwOiBDYW4ndCBvcGVuIGVycm9yZmlsZSAlcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9vcGVuZXJyZltdCUlOSVQoPSBOXygiRTQwOiBDYW4ndCBvcGVuIGVycm9yZmlsZSAlcyIpKTsKICNlbmRpZgogI2lmIGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkKEZFQVRfR1VJX1gxMSkKLUVYVEVSTiBjaGFyX3UgZV9vcGVuZGlzcFtdCUlOSVQoPU5fKCJFMjMzOiBjYW5ub3Qgb3BlbiBkaXNwbGF5IikpOworRVhURVJOIGNoYXJfdSBlX29wZW5kaXNwW10JSU5JVCg9IE5fKCJFMjMzOiBjYW5ub3Qgb3BlbiBkaXNwbGF5IikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfb3V0b2ZtZW1bXQlJTklUKD1OXygiRTQxOiBPdXQgb2YgbWVtb3J5ISIpKTsKK0VYVEVSTiBjaGFyX3UgZV9vdXRvZm1lbVtdCUlOSVQoPSBOXygiRTQxOiBPdXQgb2YgbWVtb3J5ISIpKTsKICNpZmRlZiBGRUFUX0lOU19FWFBBTkQKLUVYVEVSTiBjaGFyX3UgZV9wYXRub3RmW10JSU5JVCg9Tl8oIlBhdHRlcm4gbm90IGZvdW5kIikpOworRVhURVJOIGNoYXJfdSBlX3BhdG5vdGZbXQlJTklUKD0gTl8oIlBhdHRlcm4gbm90IGZvdW5kIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfcGF0bm90ZjJbXQlJTklUKD1OXygiRTQ4NjogUGF0dGVybiBub3QgZm91bmQ6ICVzIikpOwotRVhURVJOIGNoYXJfdSBlX3Bvc2l0aXZlW10JSU5JVCg9Tl8oIkU0ODc6IEFyZ3VtZW50IG11c3QgYmUgcG9zaXRpdmUiKSk7CitFWFRFUk4gY2hhcl91IGVfcGF0bm90ZjJbXQlJTklUKD0gTl8oIkU0ODY6IFBhdHRlcm4gbm90IGZvdW5kOiAlcyIpKTsKK0VYVEVSTiBjaGFyX3UgZV9wb3NpdGl2ZVtdCUlOSVQoPSBOXygiRTQ4NzogQXJndW1lbnQgbXVzdCBiZSBwb3NpdGl2ZSIpKTsKICNpZiBkZWZpbmVkKFVOSVgpIHx8IGRlZmluZWQoRkVBVF9TRVNTSU9OKQotRVhURVJOIGNoYXJfdSBlX3ByZXZfZGlyW10JSU5JVCg9Tl8oIkU0NTk6IENhbm5vdCBnbyBiYWNrIHRvIHByZXZpb3VzIGRpcmVjdG9yeSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9wcmV2X2RpcltdCUlOSVQoPSBOXygiRTQ1OTogQ2Fubm90IGdvIGJhY2sgdG8gcHJldmlvdXMgZGlyZWN0b3J5IikpOwogI2VuZGlmCiAKICNpZmRlZiBGRUFUX1FVSUNLRklYCi1FWFRFUk4gY2hhcl91IGVfcXVpY2tmaXhbXQlJTklUKD1OXygiRTQyOiBObyBFcnJvcnMiKSk7CitFWFRFUk4gY2hhcl91IGVfcXVpY2tmaXhbXQlJTklUKD0gTl8oIkU0MjogTm8gRXJyb3JzIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfcmVfZGFtZ1tdCUlOSVQoPU5fKCJFNDM6IERhbWFnZWQgbWF0Y2ggc3RyaW5nIikpOwotRVhURVJOIGNoYXJfdSBlX3JlX2NvcnJbXQlJTklUKD1OXygiRTQ0OiBDb3JydXB0ZWQgcmVnZXhwIHByb2dyYW0iKSk7Ci1FWFRFUk4gY2hhcl91IGVfcmVhZG9ubHlbXQlJTklUKD1OXygiRTQ1OiAncmVhZG9ubHknIG9wdGlvbiBpcyBzZXQgKGFkZCAhIHRvIG92ZXJyaWRlKSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9yZV9kYW1nW10JSU5JVCg9IE5fKCJFNDM6IERhbWFnZWQgbWF0Y2ggc3RyaW5nIikpOworRVhURVJOIGNoYXJfdSBlX3JlX2NvcnJbXQlJTklUKD0gTl8oIkU0NDogQ29ycnVwdGVkIHJlZ2V4cCBwcm9ncmFtIikpOworRVhURVJOIGNoYXJfdSBlX3JlYWRvbmx5W10JSU5JVCg9IE5fKCJFNDU6ICdyZWFkb25seScgb3B0aW9uIGlzIHNldCAoYWRkICEgdG8gb3ZlcnJpZGUpIikpOwogI2lmZGVmIEZFQVRfRVZBTAotRVhURVJOIGNoYXJfdSBlX3JlYWRvbmx5dmFyW10JSU5JVCg9Tl8oIkU0NjogQ2Fubm90IGNoYW5nZSByZWFkLW9ubHkgdmFyaWFibGUgXCIlc1wiIikpOwotRVhURVJOIGNoYXJfdSBlX3JlYWRvbmx5c2J4W10JSU5JVCg9Tl8oIkU0NjogQ2Fubm90IHNldCB2YXJpYWJsZSBpbiB0aGUgc2FuZGJveDogXCIlc1wiIikpOworRVhURVJOIGNoYXJfdSBlX3JlYWRvbmx5dmFyW10JSU5JVCg9IE5fKCJFNDY6IENhbm5vdCBjaGFuZ2UgcmVhZC1vbmx5IHZhcmlhYmxlIFwiJXNcIiIpKTsKK0VYVEVSTiBjaGFyX3UgZV9yZWFkb25seXNieFtdCUlOSVQoPSBOXygiRTQ2OiBDYW5ub3Qgc2V0IHZhcmlhYmxlIGluIHRoZSBzYW5kYm94OiBcIiVzXCIiKSk7CiAjZW5kaWYKICNpZmRlZiBGRUFUX1FVSUNLRklYCi1FWFRFUk4gY2hhcl91IGVfcmVhZGVycmZbXQlJTklUKD1OXygiRTQ3OiBFcnJvciB3aGlsZSByZWFkaW5nIGVycm9yZmlsZSIpKTsKK0VYVEVSTiBjaGFyX3UgZV9yZWFkZXJyZltdCUlOSVQoPSBOXygiRTQ3OiBFcnJvciB3aGlsZSByZWFkaW5nIGVycm9yZmlsZSIpKTsKICNlbmRpZgogI2lmZGVmIEhBVkVfU0FOREJPWAotRVhURVJOIGNoYXJfdSBlX3NhbmRib3hbXQlJTklUKD1OXygiRTQ4OiBOb3QgYWxsb3dlZCBpbiBzYW5kYm94IikpOworRVhURVJOIGNoYXJfdSBlX3NhbmRib3hbXQlJTklUKD0gTl8oIkU0ODogTm90IGFsbG93ZWQgaW4gc2FuZGJveCIpKTsKICNlbmRpZgotRVhURVJOIGNoYXJfdSBlX3NlY3VyZVtdCUlOSVQoPU5fKCJFNTIzOiBOb3QgYWxsb3dlZCBoZXJlIikpOworRVhURVJOIGNoYXJfdSBlX3NlY3VyZVtdCUlOSVQoPSBOXygiRTUyMzogTm90IGFsbG93ZWQgaGVyZSIpKTsKICNpZiBkZWZpbmVkKEFNSUdBKSB8fCBkZWZpbmVkKE1BQ09TKSB8fCBkZWZpbmVkKE1TV0lOKSB8fCBkZWZpbmVkKFJJU0NPUykgXAogCXx8IGRlZmluZWQoVU5JWCkgfHwgZGVmaW5lZChWTVMpIHx8IGRlZmluZWQoT1MyKQotRVhURVJOIGNoYXJfdSBlX3NjcmVlbm1vZGVbXQlJTklUKD1OXygiRTM1OTogU2NyZWVuIG1vZGUgc2V0dGluZyBub3Qgc3VwcG9ydGVkIikpOworRVhURVJOIGNoYXJfdSBlX3NjcmVlbm1vZGVbXQlJTklUKD0gTl8oIkUzNTk6IFNjcmVlbiBtb2RlIHNldHRpbmcgbm90IHN1cHBvcnRlZCIpKTsKICNlbmRpZgotRVhURVJOIGNoYXJfdSBlX3Njcm9sbFtdCUlOSVQoPU5fKCJFNDk6IEludmFsaWQgc2Nyb2xsIHNpemUiKSk7Ci1FWFRFUk4gY2hhcl91IGVfc2hlbGxlbXB0eVtdCUlOSVQoPU5fKCJFOTE6ICdzaGVsbCcgb3B0aW9uIGlzIGVtcHR5IikpOworRVhURVJOIGNoYXJfdSBlX3Njcm9sbFtdCUlOSVQoPSBOXygiRTQ5OiBJbnZhbGlkIHNjcm9sbCBzaXplIikpOworRVhURVJOIGNoYXJfdSBlX3NoZWxsZW1wdHlbXQlJTklUKD0gTl8oIkU5MTogJ3NoZWxsJyBvcHRpb24gaXMgZW1wdHkiKSk7CiAjaWYgZGVmaW5lZChGRUFUX1NJR05fSUNPTlMpICYmICFkZWZpbmVkKEhBVkVfR1RLMikKLUVYVEVSTiBjaGFyX3UgZV9zaWduZGF0YVtdCUlOSVQoPU5fKCJFMjU1OiBDb3VsZG4ndCByZWFkIGluIHNpZ24gZGF0YSEiKSk7CitFWFRFUk4gY2hhcl91IGVfc2lnbmRhdGFbXQlJTklUKD0gTl8oIkUyNTU6IENvdWxkbid0IHJlYWQgaW4gc2lnbiBkYXRhISIpKTsKICNlbmRpZgotRVhURVJOIGNoYXJfdSBlX3N3YXBjbG9zZVtdCUlOSVQoPU5fKCJFNzI6IENsb3NlIGVycm9yIG9uIHN3YXAgZmlsZSIpKTsKLUVYVEVSTiBjaGFyX3UgZV90YWdzdGFja1tdCUlOSVQoPU5fKCJFNzM6IHRhZyBzdGFjayBlbXB0eSIpKTsKLUVYVEVSTiBjaGFyX3UgZV90b29jb21wbFtdCUlOSVQoPU5fKCJFNzQ6IENvbW1hbmQgdG9vIGNvbXBsZXgiKSk7Ci1FWFRFUk4gY2hhcl91IGVfbG9uZ25hbWVbXQlJTklUKD1OXygiRTc1OiBOYW1lIHRvbyBsb25nIikpOwotRVhURVJOIGNoYXJfdSBlX3Rvb21zYnJhW10JSU5JVCg9Tl8oIkU3NjogVG9vIG1hbnkgWyIpKTsKLUVYVEVSTiBjaGFyX3UgZV90b29tYW55W10JSU5JVCg9Tl8oIkU3NzogVG9vIG1hbnkgZmlsZSBuYW1lcyIpKTsKLUVYVEVSTiBjaGFyX3UgZV90cmFpbGluZ1tdCUlOSVQoPU5fKCJFNDg4OiBUcmFpbGluZyBjaGFyYWN0ZXJzIikpOwotRVhURVJOIGNoYXJfdSBlX3VtYXJrW10JCUlOSVQoPU5fKCJFNzg6IFVua25vd24gbWFyayIpKTsKLUVYVEVSTiBjaGFyX3UgZV93aWxkZXhwYW5kW10JSU5JVCg9Tl8oIkU3OTogQ2Fubm90IGV4cGFuZCB3aWxkY2FyZHMiKSk7CitFWFRFUk4gY2hhcl91IGVfc3dhcGNsb3NlW10JSU5JVCg9IE5fKCJFNzI6IENsb3NlIGVycm9yIG9uIHN3YXAgZmlsZSIpKTsKK0VYVEVSTiBjaGFyX3UgZV90YWdzdGFja1tdCUlOSVQoPSBOXygiRTczOiB0YWcgc3RhY2sgZW1wdHkiKSk7CitFWFRFUk4gY2hhcl91IGVfdG9vY29tcGxbXQlJTklUKD0gTl8oIkU3NDogQ29tbWFuZCB0b28gY29tcGxleCIpKTsKK0VYVEVSTiBjaGFyX3UgZV9sb25nbmFtZVtdCUlOSVQoPSBOXygiRTc1OiBOYW1lIHRvbyBsb25nIikpOworRVhURVJOIGNoYXJfdSBlX3Rvb21zYnJhW10JSU5JVCg9IE5fKCJFNzY6IFRvbyBtYW55IFsiKSk7CitFWFRFUk4gY2hhcl91IGVfdG9vbWFueVtdCUlOSVQoPSBOXygiRTc3OiBUb28gbWFueSBmaWxlIG5hbWVzIikpOworRVhURVJOIGNoYXJfdSBlX3RyYWlsaW5nW10JSU5JVCg9IE5fKCJFNDg4OiBUcmFpbGluZyBjaGFyYWN0ZXJzIikpOworRVhURVJOIGNoYXJfdSBlX3VtYXJrW10JCUlOSVQoPSBOXygiRTc4OiBVbmtub3duIG1hcmsiKSk7CitFWFRFUk4gY2hhcl91IGVfd2lsZGV4cGFuZFtdCUlOSVQoPSBOXygiRTc5OiBDYW5ub3QgZXhwYW5kIHdpbGRjYXJkcyIpKTsKICNpZmRlZiBGRUFUX1dJTkRPV1MKLUVYVEVSTiBjaGFyX3UgZV93aW5oZWlnaHRbXQlJTklUKD1OXygiRTU5MTogJ3dpbmhlaWdodCcgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAnd2lubWluaGVpZ2h0JyIpKTsKK0VYVEVSTiBjaGFyX3UgZV93aW5oZWlnaHRbXQlJTklUKD0gTl8oIkU1OTE6ICd3aW5oZWlnaHQnIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gJ3dpbm1pbmhlaWdodCciKSk7CiAjIGlmZGVmIEZFQVRfVkVSVFNQTElUCi1FWFRFUk4gY2hhcl91IGVfd2lud2lkdGhbXQlJTklUKD1OXygiRTU5MjogJ3dpbndpZHRoJyBjYW5ub3QgYmUgc21hbGxlciB0aGFuICd3aW5taW53aWR0aCciKSk7CitFWFRFUk4gY2hhcl91IGVfd2lud2lkdGhbXQlJTklUKD0gTl8oIkU1OTI6ICd3aW53aWR0aCcgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAnd2lubWlud2lkdGgnIikpOwogIyBlbmRpZgogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfd3JpdGVbXQkJSU5JVCg9Tl8oIkU4MDogRXJyb3Igd2hpbGUgd3JpdGluZyIpKTsKLUVYVEVSTiBjaGFyX3UgZV96ZXJvY291bnRbXQlJTklUKD1OXygiWmVybyBjb3VudCIpKTsKK0VYVEVSTiBjaGFyX3UgZV93cml0ZVtdCQlJTklUKD0gTl8oIkU4MDogRXJyb3Igd2hpbGUgd3JpdGluZyIpKTsKK0VYVEVSTiBjaGFyX3UgZV96ZXJvY291bnRbXQlJTklUKD0gTl8oIlplcm8gY291bnQiKSk7CiAjaWZkZWYgRkVBVF9FVkFMCi1FWFRFUk4gY2hhcl91IGVfdXNpbmdzaWRbXQlJTklUKD1OXygiRTgxOiBVc2luZyA8U0lEPiBub3QgaW4gYSBzY3JpcHQgY29udGV4dCIpKTsKK0VYVEVSTiBjaGFyX3UgZV91c2luZ3NpZFtdCUlOSVQoPSBOXygiRTgxOiBVc2luZyA8U0lEPiBub3QgaW4gYSBzY3JpcHQgY29udGV4dCIpKTsKICNlbmRpZgogI2lmZGVmIEZFQVRfQ0xJRU5UU0VSVkVSCi1FWFRFUk4gY2hhcl91IGVfaW52ZXhwcm1zZ1tdCUlOSVQoPU5fKCJFNDQ5OiBJbnZhbGlkIGV4cHJlc3Npb24gcmVjZWl2ZWQiKSk7CitFWFRFUk4gY2hhcl91IGVfaW52ZXhwcm1zZ1tdCUlOSVQoPSBOXygiRTQ0OTogSW52YWxpZCBleHByZXNzaW9uIHJlY2VpdmVkIikpOwogI2VuZGlmCiAjaWZkZWYgRkVBVF9ORVRCRUFOU19JTlRHCi1FWFRFUk4gY2hhcl91IGVfZ3VhcmRlZFtdCUlOSVQoPU5fKCJFNDYzOiBSZWdpb24gaXMgZ3VhcmRlZCwgY2Fubm90IG1vZGlmeSIpKTsKLUVYVEVSTiBjaGFyX3UgZV9uYnJlYWRvbmx5W10JSU5JVCg9Tl8oIkU3NDQ6IE5ldEJlYW5zIGRvZXMgbm90IGFsbG93IGNoYW5nZXMgaW4gcmVhZC1vbmx5IGZpbGVzIikpOworRVhURVJOIGNoYXJfdSBlX2d1YXJkZWRbXQlJTklUKD0gTl8oIkU0NjM6IFJlZ2lvbiBpcyBndWFyZGVkLCBjYW5ub3QgbW9kaWZ5IikpOworRVhURVJOIGNoYXJfdSBlX25icmVhZG9ubHlbXQlJTklUKD0gTl8oIkU3NDQ6IE5ldEJlYW5zIGRvZXMgbm90IGFsbG93IGNoYW5nZXMgaW4gcmVhZC1vbmx5IGZpbGVzIikpOwogI2VuZGlmCiAjaWYgZGVmaW5lZChGRUFUX0lOU19FWFBBTkQpIHx8IGRlZmluZWQoRkVBVF9FVkFMKSB8fCBkZWZpbmVkKEZFQVRfU1lOX0hMKSBcCiAJICAgIHx8IGRlZmluZWQoUFJPVE8pCi1FWFRFUk4gY2hhcl91IGVfaW50ZXJuMltdCUlOSVQoPU5fKCJFNjg1OiBJbnRlcm5hbCBlcnJvcjogJXMiKSk7CitFWFRFUk4gY2hhcl91IGVfaW50ZXJuMltdCUlOSVQoPSBOXygiRTY4NTogSW50ZXJuYWwgZXJyb3I6ICVzIikpOwogI2VuZGlmCi1FWFRFUk4gY2hhcl91IGVfbWF4bWVtcGF0W10JSU5JVCg9Tl8oIkUzNjM6IHBhdHRlcm4gdXNlcyBtb3JlIG1lbW9yeSB0aGFuICdtYXhtZW1wYXR0ZXJuJyIpKTsKLUVYVEVSTiBjaGFyX3UgZV9lbXB0eWJ1ZltdCUlOSVQoPU5fKCJFNzQ5OiBlbXB0eSBidWZmZXIiKSk7CitFWFRFUk4gY2hhcl91IGVfbWF4bWVtcGF0W10JSU5JVCg9IE5fKCJFMzYzOiBwYXR0ZXJuIHVzZXMgbW9yZSBtZW1vcnkgdGhhbiAnbWF4bWVtcGF0dGVybiciKSk7CitFWFRFUk4gY2hhcl91IGVfZW1wdHlidWZbXQlJTklUKD0gTl8oIkU3NDk6IGVtcHR5IGJ1ZmZlciIpKTsKIAogI2lmZGVmIEZFQVRfRVhfRVhUUkEKLUVYVEVSTiBjaGFyX3UgZV9pbnZhbHBhdFtdCUlOSVQoPU5fKCJFNjgyOiBJbnZhbGlkIHNlYXJjaCBwYXR0ZXJuIG9yIGRlbGltaXRlciIpKTsKK0VYVEVSTiBjaGFyX3UgZV9pbnZhbHBhdFtdCUlOSVQoPSBOXygiRTY4MjogSW52YWxpZCBzZWFyY2ggcGF0dGVybiBvciBkZWxpbWl0ZXIiKSk7CiAjZW5kaWYKLUVYVEVSTiBjaGFyX3UgZV9idWZsb2FkZWRbXQlJTklUKD1OXygiRTEzOTogRmlsZSBpcyBsb2FkZWQgaW4gYW5vdGhlciBidWZmZXIiKSk7CitFWFRFUk4gY2hhcl91IGVfYnVmbG9hZGVkW10JSU5JVCg9IE5fKCJFMTM5OiBGaWxlIGlzIGxvYWRlZCBpbiBhbm90aGVyIGJ1ZmZlciIpKTsKIAogI2lmZGVmIE1BQ09TX1hfVU5JWAogRVhURVJOIHNob3J0IGRpc2FsbG93X2d1aQlJTklUKD0gRkFMU0UpOwogI2VuZGlmCiAKK0VYVEVSTiBjaGFyIHRvcF9ib3RfbXNnW10gSU5JVCg9IE5fKCJzZWFyY2ggaGl0IFRPUCwgY29udGludWluZyBhdCBCT1RUT00iKSk7CitFWFRFUk4gY2hhciBib3RfdG9wX21zZ1tdIElOSVQoPSBOXygic2VhcmNoIGhpdCBCT1RUT00sIGNvbnRpbnVpbmcgYXQgVE9QIikpOworCiAvKgogICogQ29tbXMuIHdpdGggdGhlIHNlc3Npb24gbWFuYWdlciAoWFNNUCkKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL25vcm1hbC5wcm8gYi9zcmMvcHJvdG8vbm9ybWFsLnBybwppbmRleCA3NDM2NGUzLi45NTBmMWUwIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbm9ybWFsLnBybworKysgYi9zcmMvcHJvdG8vbm9ybWFsLnBybwpAQCAtMTYsNiArMTYsNyBAQAogdm9pZCBwb3Bfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZG9fY2hlY2tfc2Nyb2xsYmluZCBfX0FSR1MoKGludCBjaGVjaykpOwogdm9pZCBjaGVja19zY3JvbGxiaW5kIF9fQVJHUygobGluZW5yX1QgdG9wbGluZV9kaWZmLCBsb25nIGxlZnRjb2xfZGlmZikpOworaW50IGZpbmRfZGVjbCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgbG9jYWxseSwgaW50IHNlYXJjaGZsYWdzKSk7CiB2b2lkIHNjcm9sbF9yZWRyYXcgX19BUkdTKChpbnQgdXAsIGxvbmcgY291bnQpKTsKIHZvaWQgZG9fbnZfaWRlbnQgX19BUkdTKChpbnQgYzEsIGludCBjMikpOwogaW50IGdldF92aXN1YWxfdGV4dCBfX0FSR1MoKGNtZGFyZ19UICpjYXAsIGNoYXJfdSAqKnBwLCBpbnQgKmxlbnApKTsKZGlmZiAtLWdpdCBhL3NyYy9zY3JlZW4uYyBiL3NyYy9zY3JlZW4uYwppbmRleCAyYzM5YWM3Li4xMWQ4OWI2IDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC0zMDI2LDcgKzMwMjYsNyBAQAogICAgIH0KICNlbmRpZgogCi0gICAgb2ZmID0gKHVuc2lnbmVkKSAoY3VycmVudF9TY3JlZW5MaW5lIC0gU2NyZWVuTGluZXMpOworICAgIG9mZiA9ICh1bnNpZ25lZCkoY3VycmVudF9TY3JlZW5MaW5lIC0gU2NyZWVuTGluZXMpOwogICAgIGNvbCA9IDA7CiAjaWZkZWYgRkVBVF9SSUdIVExFRlQKICAgICBpZiAod3AtPndfcF9ybCkKQEAgLTM0MjMsMTMgKzM0MjMsMTYgQEAKIAkJCWVsc2UgaWYgKG1iX2wgPiAxKQogCQkJICAgIG1iX2MgPSAoYyA8PCA4KSArIHBfZXh0cmFbMV07CiAJCSAgICB9CisJCSAgICBpZiAobWJfbCA9PSAwKSAgLyogYXQgdGhlIE5VTCBhdCBlbmQtb2YtbGluZSAqLworCQkJbWJfbCA9IDE7CisKIAkJICAgIC8qIElmIGEgZG91YmxlLXdpZHRoIGNoYXIgZG9lc24ndCBmaXQgZGlzcGxheSBhICc+JyBpbiB0aGUKIAkJICAgICAqIGxhc3QgY29sdW1uLiAqLwotCQkgICAgaWYgKAorCQkgICAgaWYgKCgKICMgaWZkZWYgRkVBVF9SSUdIVExFRlQKIAkJCSAgICB3cC0+d19wX3JsID8gKGNvbCA8PSAwKSA6CiAjIGVuZGlmCi0JCQkJICAgIChjb2wgPj0gV19XSURUSCh3cCkgLSAxKQorCQkJCSAgICAoY29sID49IFdfV0lEVEgod3ApIC0gMSkpCiAJCQkgICAgJiYgKCptYl9jaGFyMmNlbGxzKShtYl9jKSA9PSAyKQogCQkgICAgewogCQkJYyA9ICc+JzsKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCBhZjMyMTViLi4zMDEzZDEzIDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0zNCw5ICszNCw2IEBACiBzdGF0aWMgdm9pZCB3dnNwX29uZSBfX0FSR1MoKEZJTEUgKmZwLCBpbnQgaWR4LCBjaGFyICpzLCBpbnQgc2MpKTsKICNlbmRpZgogCi1zdGF0aWMgY2hhcl91ICp0b3BfYm90X21zZyA9IChjaGFyX3UgKilOXygic2VhcmNoIGhpdCBUT1AsIGNvbnRpbnVpbmcgYXQgQk9UVE9NIik7Ci1zdGF0aWMgY2hhcl91ICpib3RfdG9wX21zZyA9IChjaGFyX3UgKilOXygic2VhcmNoIGhpdCBCT1RUT00sIGNvbnRpbnVpbmcgYXQgVE9QIik7Ci0KIC8qCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdmFyaW91cyBzZWFyY2hpbmctcmVsYXRlZCByb3V0aW5lcy4gVGhlc2UgZmFsbCBpbnRvCiAgKiB0aHJlZSBncm91cHM6CkBAIC04NTQsMTcgKzg1MSwxMiBAQAogCSAgICAgKiB3cml0dGVuLgogCSAgICAgKi8KIAkgICAgaWYgKGRpciA9PSBCQUNLV0FSRCkgICAgLyogc3RhcnQgc2Vjb25kIGxvb3AgYXQgdGhlIG90aGVyIGVuZCAqLwotCSAgICB7CiAJCWxudW0gPSBidWYtPmJfbWwubWxfbGluZV9jb3VudDsKLQkJaWYgKCFzaG9ydG1lc3MoU0hNX1NFQVJDSCkgJiYgKG9wdGlvbnMgJiBTRUFSQ0hfTVNHKSkKLQkJICAgIGdpdmVfd2FybmluZygoY2hhcl91ICopXyh0b3BfYm90X21zZyksIFRSVUUpOwotCSAgICB9CiAJICAgIGVsc2UKLQkgICAgewogCQlsbnVtID0gMTsKLQkJaWYgKCFzaG9ydG1lc3MoU0hNX1NFQVJDSCkgJiYgKG9wdGlvbnMgJiBTRUFSQ0hfTVNHKSkKLQkJICAgIGdpdmVfd2FybmluZygoY2hhcl91ICopXyhib3RfdG9wX21zZyksIFRSVUUpOwotCSAgICB9CisJICAgIGlmICghc2hvcnRtZXNzKFNITV9TRUFSQ0gpICYmIChvcHRpb25zICYgU0VBUkNIX01TRykpCisJCWdpdmVfd2FybmluZygoY2hhcl91ICopXyhkaXIgPT0gQkFDS1dBUkQKKwkJCQkJICA/IHRvcF9ib3RfbXNnIDogYm90X3RvcF9tc2cpLCBUUlVFKTsKIAl9CiAJaWYgKGdvdF9pbnQgfHwgY2FsbGVkX2Vtc2cgfHwgYnJlYWtfbG9vcCkKIAkgICAgYnJlYWs7CkBAIC0yNTE5LDEyICsyNTExLDEyIEBACiAgKiBSZXR1cm4gVFJVRSBpZiB0aGUgbmV4dCBwYXJhZ3JhcGggb3Igc2VjdGlvbiB3YXMgZm91bmQuCiAgKi8KICAgICBpbnQKLWZpbmRwYXIob2FwLCBkaXIsIGNvdW50LCB3aGF0LCBib3RoKQotICAgIG9wYXJnX1QJICAgICpvYXA7Ci0gICAgaW50CQkgICAgZGlyOwotICAgIGxvbmcJICAgIGNvdW50OwotICAgIGludAkJICAgIHdoYXQ7Ci0gICAgaW50CQkgICAgYm90aDsKK2ZpbmRwYXIocGluY2wsIGRpciwgY291bnQsIHdoYXQsIGJvdGgpCisgICAgaW50CQkqcGluY2w7CSAgICAvKiBSZXR1cm46IFRSVUUgaWYgbGFzdCBjaGFyIGlzIHRvIGJlIGluY2x1ZGVkICovCisgICAgaW50CQlkaXI7CisgICAgbG9uZwljb3VudDsKKyAgICBpbnQJCXdoYXQ7CisgICAgaW50CQlib3RoOwogewogICAgIGxpbmVucl9UCWN1cnI7CiAgICAgaW50CQlkaWRfc2tpcDsgICAvKiBUUlVFIGFmdGVyIHNlcGFyYXRpbmcgbGluZXMgaGF2ZSBiZWVuIHNraXBwZWQgKi8KQEAgLTI1ODYsNyArMjU3OCw3IEBACiAJaWYgKChjdXJ3aW4tPndfY3Vyc29yLmNvbCA9IChjb2xucl9UKVNUUkxFTihtbF9nZXQoY3VycikpKSAhPSAwKQogCXsKIAkgICAgLS1jdXJ3aW4tPndfY3Vyc29yLmNvbDsKLQkgICAgb2FwLT5pbmNsdXNpdmUgPSBUUlVFOworCSAgICAqcGluY2wgPSBUUlVFOwogCX0KICAgICB9CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uaCBiL3NyYy92ZXJzaW9uLmgKaW5kZXggMGRiOWFiMi4uMjA4ZjdhNSAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uaAorKysgYi9zcmMvdmVyc2lvbi5oCkBAIC0zNiw1ICszNiw1IEBACiAjZGVmaW5lIFZJTV9WRVJTSU9OX05PRE9UCSJ2aW03MGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9TSE9SVAkiNy4wYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wYWEgQUxQSEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxKSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBTZXAgMSwgY29tcGlsZWQgIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBTZXAgNSkiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgU2VwIDUsIGNvbXBpbGVkICIK