ZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9jZGxnLmggYi9kbGxzL2NvbW1kbGcvY2RsZy5oCmluZGV4IDVjN2Y2N2YuLmZjZjUyZjUgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnLmgKKysrIGIvZGxscy9jb21tZGxnL2NkbGcuaApAQCAtMTA5LDE5ICsxMDksMjkgQEAKIAogI2RlZmluZSBJRFNfQ0hBUlNFVF9BTlNJICAgICAgICAyMDAKICNkZWZpbmUgSURTX0NIQVJTRVRfU1lNQk9MICAgICAgMjAxCi0jZGVmaW5lIElEU19DSEFSU0VUX1NISUZUSklTICAgIDIwMgorI2RlZmluZSBJRFNfQ0hBUlNFVF9KSVMgICAgICAgICAyMDIKICNkZWZpbmUgSURTX0NIQVJTRVRfSEFOR1VMICAgICAgMjAzCi0jZGVmaW5lIElEU19DSEFSU0VUX0dSRUVLICAgICAgIDIwNAotI2RlZmluZSBJRFNfQ0hBUlNFVF9UVVJLSVNIICAgICAyMDUKLSNkZWZpbmUgSURTX0NIQVJTRVRfSEVCUkVXICAgICAgMjA2Ci0jZGVmaW5lIElEU19DSEFSU0VUX0FSQUJJQyAgICAgIDIwNwotI2RlZmluZSBJRFNfQ0hBUlNFVF9CQUxUSUMgICAgICAyMDgKLSNkZWZpbmUgSURTX0NIQVJTRVRfVklFVE5BTUVTRSAgMjA5Ci0jZGVmaW5lIElEU19DSEFSU0VUX1JVU1NJQU4gICAgIDIxMAotI2RlZmluZSBJRFNfQ0hBUlNFVF9FRSAgICAgICAgICAyMTEKLSNkZWZpbmUgSURTX0NIQVJTRVRfVEhBSSAgICAgICAgMjEyCi0jZGVmaW5lIElEU19DSEFSU0VUX0pPSEFCICAgICAgIDIxMwotI2RlZmluZSBJRFNfQ0hBUlNFVF9PRU0gICAgICAgICAyMTQKKyNkZWZpbmUgSURTX0NIQVJTRVRfR0IyMzEyICAgICAgMjA0CisjZGVmaW5lIElEU19DSEFSU0VUX0JJRzUgICAgICAgIDIwNQorI2RlZmluZSBJRFNfQ0hBUlNFVF9HUkVFSyAgICAgICAyMDYKKyNkZWZpbmUgSURTX0NIQVJTRVRfVFVSS0lTSCAgICAgMjA3CisjZGVmaW5lIElEU19DSEFSU0VUX0hFQlJFVyAgICAgIDIwOAorI2RlZmluZSBJRFNfQ0hBUlNFVF9BUkFCSUMgICAgICAyMDkKKyNkZWZpbmUgSURTX0NIQVJTRVRfQkFMVElDICAgICAgMjEwCisjZGVmaW5lIElEU19DSEFSU0VUX1ZJRVROQU1FU0UgIDIxMQorI2RlZmluZSBJRFNfQ0hBUlNFVF9SVVNTSUFOICAgICAyMTIKKyNkZWZpbmUgSURTX0NIQVJTRVRfRUUgICAgICAgICAgMjEzCisjZGVmaW5lIElEU19DSEFSU0VUX1RIQUkgICAgICAgIDIxNAorI2RlZmluZSBJRFNfQ0hBUlNFVF9KT0hBQiAgICAgICAyMTUKKyNkZWZpbmUgSURTX0NIQVJTRVRfTUFDICAgICAgICAgMjE2CisjZGVmaW5lIElEU19DSEFSU0VUX09FTSAgICAgICAgIDIxNworI2RlZmluZSBJRFNfQ0hBUlNFVF9WSVNDSUkgICAgICAyMTgKKyNkZWZpbmUgSURTX0NIQVJTRVRfVENWTiAgICAgICAgMjE5CisjZGVmaW5lIElEU19DSEFSU0VUX0tPSTggICAgICAgIDIyMAorI2RlZmluZSBJRFNfQ0hBUlNFVF9JU08zICAgICAgICAyMjEKKyNkZWZpbmUgSURTX0NIQVJTRVRfSVNPNCAgICAgICAgMjIyCisjZGVmaW5lIElEU19DSEFSU0VUX0lTTzEwICAgICAgIDIyMworI2RlZmluZSBJRFNfQ0hBUlNFVF9DRUxUSUMgICAgICAyMjQKIAogLyogQ29sb3IgbmFtZXMgc3RyaW5nIElEcyAqLwogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19DYS5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX0NhLnJjCmluZGV4IGRiOWNlMzAuLjhiZmU4NWQgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX0NhLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX0NhLnJjCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKICAgICAgICAgICAgICAgICAgICAgQ0JTX0FVVE9IU0NST0xMIHwgIFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAgR1JPVVBCT1ggICAgICAgICJFeGVtcGxlIiwxMDczLDk4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUKKyAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRQogfQogCiAKZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9jZGxnX0RhLnJjIGIvZGxscy9jb21tZGxnL2NkbGdfRGEucmMKaW5kZXggYmFjZWVhMy4uNGYwMGU3MyAxMDA2NDQKLS0tIGEvZGxscy9jb21tZGxnL2NkbGdfRGEucmMKKysrIGIvZGxscy9jb21tZGxnL2NkbGdfRGEucmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgIENPTUJPQk9YICAgICAgICAxMTM5LDYsMTIwLDg0LDEwMCxDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0hBU1NUUklOR1MgfAogICAgICAgICAgICAgICAgICAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIkVrc2VtcGVsIiwxMDczLDk4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUKKyAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRQogfQogCiAKZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9jZGxnX0RlLnJjIGIvZGxscy9jb21tZGxnL2NkbGdfRGUucmMKaW5kZXggMGE4MDVlZS4uNTU1NzAzNCAxMDA2NDQKLS0tIGEvZGxscy9jb21tZGxnL2NkbGdfRGUucmMKKysrIGIvZGxscy9jb21tZGxnL2NkbGdfRGUucmMKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgIENPTUJPQk9YICAgICAgICAxMTM5LDYsMTIwLDg0LDEwMCxDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0hBU1NUUklOR1MgfAogCQkgICAgQ0JTX0FVVE9IU0NST0xMIHwgIFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAgR1JPVVBCT1ggICAgICAgICJNdXN0ZXIiLDEwNzMsOTgsNzIsMTYwLDQ5LFdTX0dST1VQCi0gICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiB9CiAKIApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfRW4ucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYwppbmRleCA3OWUzNjM5Li45NzRiYjY1IDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIGNtYjQsNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIlNhbXBsZSIsZ3JwMiw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX0VzLnJjCmluZGV4IGYxOTcxZjUuLjkxODhjYjkgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX0VzLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX0VzLnJjCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKICAgICAgICAgICAgICAgICAgICAgQ0JTX0FVVE9IU0NST0xMIHwgIFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAgR1JPVVBCT1ggICAgICAgICJFamVtcGxvIiwxMDczLDk4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnrR8SIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnrR8SIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19GaS5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX0ZpLnJjCmluZGV4IDllM2RmNTEuLjZhZDdkOGMgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX0ZpLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX0ZpLnJjCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKIAkJICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiTuR5dGUiLDEwNzMsOTgsNzIsMTYwLDQ5LFdTX0dST1VQCi0gICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiB9CiAKIApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfRnIucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19Gci5yYwppbmRleCBlMWY0Y2QxLi4xMGUxMmM0IDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19Gci5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19Gci5yYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAgICAgICAgICAgICAgICAgICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiRXhlbXBsZSIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19IdS5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX0h1LnJjCmluZGV4IDE3ZjAxMGUuLjJlNzRmYjggMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX0h1LnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX0h1LnJjCkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKICAgICAgICAgICAgICAgICAgICAgQ0JTX0FVVE9IU0NST0xMIHwgIFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAgR1JPVVBCT1ggICAgICAgICJNaW50YSIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6weHV9cnpIixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaesHh1fXJ6SIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19JdC5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX0l0LnJjCmluZGV4IDc1ZTExMmMuLmNiYzg0YzggMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX0l0LnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX0l0LnJjCkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKIAkJICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiRXNlbXBpbyIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogQ0hPT1NFX0NPTE9SIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDM2LCAyNCwgMzAwLCAxODUKZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9jZGxnX0phLnJjIGIvZGxscy9jb21tZGxnL2NkbGdfSmEucmMKaW5kZXggNDYzYzBjZS4uMTU0ZDRiMSAxMDA2NDQKLS0tIGEvZGxscy9jb21tZGxnL2NkbGdfSmEucmMKKysrIGIvZGxscy9jb21tZGxnL2NkbGdfSmEucmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgIENPTUJPQk9YICAgICAgICAxMTM5LDYsMTIwLDg0LDEwMCxDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0hBU1NUUklOR1MgfAogCQkgICAgQ0JTX0FVVE9IU0NST0xMIHwgIFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAgR1JPVVBCT1ggICAgICAgICKDVIOTg3aDiyIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19ObC5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX05sLnJjCmluZGV4IDM3ZTg2OTUuLjQyMTg1ZTAgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX05sLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX05sLnJjCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKIAkJICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiVm9vcmJlZWxkIiwxMDczLDk4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUKKyAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRQogfQogCiAKZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9jZGxnX1BsLnJjIGIvZGxscy9jb21tZGxnL2NkbGdfUGwucmMKaW5kZXggYWNiOGVkMS4uYzE3OWRmZiAxMDA2NDQKLS0tIGEvZGxscy9jb21tZGxnL2NkbGdfUGwucmMKKysrIGIvZGxscy9jb21tZGxnL2NkbGdfUGwucmMKQEAgLTEzMyw3ICsxMzMsNyBAQAogCUNPTlRST0wgIiIsIDExMzksICJDT01CT0JPWCIsIENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiBDQlNfQVVUT0hTQ1JPTEwgfCBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCwgNiwxMjAsODQsMTAwCiAJQ09OVFJPTCAiUHJ6eWuzYWQiLCAxMDczLCAiQlVUVE9OIiwgQlNfR1JPVVBCT1ggfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsIDk4LDcyLDE2MCw0OQotCUNPTlRST0wgIkFhQmJZeVp6XHhCMyIsIHN0YzUsICJTVEFUSUMiLCBTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUsIDEwNCw4MSwxNDksMzcKKwlDT05UUk9MICJBYUJiWXlaelx4QjMiLCBzdGM1LCAiU1RBVElDIiwgU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRSwgMTA0LDgxLDE0OSwzNwogRU5ECiAvKiBQVVNIQlVUVE9OICImUmVwbGFjZSIsIDEwMjQsIDE3NCwgMjEsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgKiBQVVNIQlVUVE9OICJSZXBsYWNlICZBbGwiLCAxMDI1LCAxNzQsIDM4LCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfUHQucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19QdC5yYwppbmRleCAwNmIyYTFkLi4yMzJhODQzIDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19QdC5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19QdC5yYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIkFtb3N0cmEiLDEwNzMsOTgsNzIsMTYwLDQ5LFdTX0dST1VQCi0gICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiB9CiAKIApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfUnUucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19SdS5yYwppbmRleCBiZjEyZTc4Li43MjAwN2IzIDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19SdS5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19SdS5yYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIs7h8ODn5fYiLDEwNzMsOTgsNzIsMTYwLDQ5LFdTX0dST1VQCi0gICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiB9CiAKIApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfU2kucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19TaS5yYwppbmRleCBiZjZmOWFiLi5jNGU4NmUzIDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19TaS5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19TaS5yYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIGNtYjQsNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIlZ6b3JlYyIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19Tay5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX1NrLnJjCmluZGV4IGM5ZDcwMzYuLjVhNGZkYzUgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX1NrLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX1NrLnJjCkBAIC0xMzgsNyArMTM4LDcgQEAKICAgICBDT01CT0JPWCAgICAgICAgMTEzOSw2LDEyMCw4NCwxMDAsQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwKIAkJICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiVnpvcmthIiwxMDczLDk4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUKKyAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRQogfQogCiBDSE9PU0VfQ09MT1IgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMzYsIDI0LCAzMDAsIDE4NQpkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfU3YucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYwppbmRleCA0ZTdlYjczLi4zY2JlNTA2IDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYwpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIlRlc3QiLDEwNzMsOTgsNzIsMTYwLDQ5LFdTX0dST1VQCi0gICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaeiIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgV1NfVklTSUJMRQorICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTA0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiB9CiAKIApkaWZmIC0tZ2l0IGEvZGxscy9jb21tZGxnL2NkbGdfV2EucmMgYi9kbGxzL2NvbW1kbGcvY2RsZ19XYS5yYwppbmRleCA0NTFiZDg0Li5hYWU0MjI5IDEwMDY0NAotLS0gYS9kbGxzL2NvbW1kbGcvY2RsZ19XYS5yYworKysgYi9kbGxzL2NvbW1kbGcvY2RsZ19XYS5yYwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAgICAgICAgICAgICAgICAgICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgIEdST1VQQk9YICAgICAgICAiRWd6aW1wZSIsMTA3Myw5OCw3MiwxNjAsNDksV1NfR1JPVVAKLSAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6xeXH59v7IixzdGM1LDEwNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBXU19WSVNJQkxFCisgICAgQ1RFWFQgICAgICAgICAgICJBYUJiWXlaesXlx+fb+yIsc3RjNSwxMDQsODEsMTQ5LDM3LFNTX05PUFJFRklYIHwgTk9UIFdTX1ZJU0lCTEUKIH0KIAogCmRpZmYgLS1naXQgYS9kbGxzL2NvbW1kbGcvY2RsZ19aaC5yYyBiL2RsbHMvY29tbWRsZy9jZGxnX1poLnJjCmluZGV4IDg4YThiODIuLjU1YzM1MWIgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9jZGxnX1poLnJjCisrKyBiL2RsbHMvY29tbWRsZy9jZGxnX1poLnJjCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgQ09NQk9CT1ggICAgICAgIDExMzksNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CiAJCSAgICBDQlNfQVVUT0hTQ1JPTEwgfCAgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgICBHUk9VUEJPWCAgICAgICAgIrmgwP0iLDEwNzMsMTI4LDcyLDE2MCw0OSxXU19HUk9VUAotICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTM0LDgxLDE0OSwzNyxTU19OT1BSRUZJWCB8IFdTX1ZJU0lCTEUKKyAgICBDVEVYVCAgICAgICAgICAgIkFhQmJZeVp6IixzdGM1LDEzNCw4MSwxNDksMzcsU1NfTk9QUkVGSVggfCBOT1QgV1NfVklTSUJMRQogfQogCiAKZGlmZiAtLWdpdCBhL2RsbHMvY29tbWRsZy9mb250ZGxnLmMgYi9kbGxzL2NvbW1kbGcvZm9udGRsZy5jCmluZGV4IGEzZDA3YjIuLjVlMTM4MWYgMTAwNjQ0Ci0tLSBhL2RsbHMvY29tbWRsZy9mb250ZGxnLmMKKysrIGIvZGxscy9jb21tZGxnL2ZvbnRkbGcuYwpAQCAtNDksNiArNDksNjEgQEAKIEJPT0wxNiBDQUxMQkFDSyBGb3JtYXRDaGFyRGxnUHJvYzE2KEhXTkQxNiBoRGxnLCBVSU5UMTYgbWVzc2FnZSwgV1BBUkFNMTYgd1BhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEFSQU0gbFBhcmFtKTsKIAorLyogVGhlcmUgaXMgYSB0YWJsZSBoZXJlIG9mIGFsbCBjaGFyc2V0cywgYW5kIHRoZSBzYW1wbGUgdGV4dCBmb3IgZWFjaC4KKyAqIFRoZXJlIGlzIGEgc2Vjb25kIHRhYmxlIHRoYXQgdHJhbnNsYXRlcyBhIGNoYXJzZXQgaW50byBhbiBpbmRleCBpbnRvCisgKiB0aGUgZmlyc3QgdGFibGUuCisgKi8KKworI2RlZmluZSBDSShjcykgKChJRFNfQ0hBUlNFVF8jI2NzKS1JRFNfQ0hBUlNFVF9BTlNJKQorI2RlZmluZSBTQU1QTEVfRVhUTEVOIDEwCisKK3N0YXRpYyBjb25zdCBXQ0hBUiBTQU1QTEVfTEFOR19URVhUW11bU0FNUExFX0VYVExFTl09eworICAgIHsnWScsJ3knLCdaJywneicsMH0sIC8qIFdlc3Rlcm4gYW5kIGRlZmF1bHQgKi8KKyAgICB7MH0sIC8qIFN5bWJvbCAqLworICAgIHswfSwgLyogU2hpZnQgSklTICovCisgICAgezB9LCAvKiBIYW5ndWwgKi8KKyAgICB7MH0sIC8qIEdCMjMxMiAqLworICAgIHswfSwgLyogQklHNSAqLworICAgIHswfSwgLyogR3JlZWsgKi8KKyAgICB7MH0sIC8qIFR1cmtpc2ggKi8KKyAgICB7MHgwNWUwLCAweDA1ZTEsIDB4MDVlOSwgMHgwNWVhLCAwfSwgLyogSGVicmV3ICovCisgICAgezB9LCAvKiBBcmFiaWMgKi8KKyAgICB7MH0sIC8qIEJhbHRpYyAqLworICAgIHswfSwgLyogVmlldG5hbWVzZSAqLworICAgIHswfSwgLyogUnVzc2lhbiAqLworICAgIHswfSwgLyogRWFzdCBFdXJvcGVhbiAqLworICAgIHswfSwgLyogVGhhaSAqLworICAgIHswfSwgLyogSm9oYWIgKi8KKyAgICB7MH0sIC8qIE1hYyAqLworICAgIHswfSwgLyogT0VNICovCisgICAgezB9LCAvKiBWSVNDSUkgKi8KKyAgICB7MH0sIC8qIFRDVk4gKi8KKyAgICB7MH0sIC8qIEtPSS04ICovCisgICAgezB9LCAvKiBJU08tODg1OS0zICovCisgICAgezB9LCAvKiBJU08tODg1OS00ICovCisgICAgezB9LCAvKiBJU08tODg1OS0xMCAqLworICAgIHswfSAvKiBDZWx0aWMgKi8KK307CisKK3N0YXRpYyBjb25zdCBpbnQgQ0hBUlNFVF9PUkRFUlsyNTZdPXsKKyAgICBDSShBTlNJKSwgMCwgQ0koU1lNQk9MKSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBDSShNQUMpLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIENJKEpJUyksIENJKEhBTkdVTCksIENJKEpPSEFCKSwgMCwgMCwgMCwgQ0koR0IyMzEyKSwgMCwgQ0koQklHNSksIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCBDSShHUkVFSyksIENJKFRVUktJU0gpLCBDSShWSUVUTkFNRVNFKSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCBDSShIRUJSRVcpLCBDSShBUkFCSUMpLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBDSShCQUxUSUMpLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIENJKFJVU1NJQU4pLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIENJKFRIQUkpLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIENJKEVFKSwgMCwKKyAgICBDSShWSVNDSUkpLCBDSShUQ1ZOKSwgQ0koS09JOCksIENJKElTTzMpLCBDSShJU080KSwgQ0koSVNPMTApLCBDSShDRUxUSUMpLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBDSShPRU0pLAorfTsKKwogc3RhdGljIHZvaWQgRk9OVF9Mb2dGb250MTZUbzMyQSggY29uc3QgTFBMT0dGT05UMTYgZm9udDE2LCBMUExPR0ZPTlRBIGZvbnQzMiApCiB7CiAgICAgZm9udDMyLT5sZkhlaWdodCA9IGZvbnQxNi0+bGZIZWlnaHQ7CkBAIC03NDAsMTAgKzc5NSw2IEBACiAgIGlmICghaEJpdG1hcFRUKQogICAgIGhCaXRtYXBUVCA9IExvYWRCaXRtYXBBKDAsIE1BS0VJTlRSRVNPVVJDRUEoT0JNX1RSVFlQRSkpOwogCi0gIC8qIFRoaXMgZm9udCB3aWxsIGJlIGRlbGV0ZWQgYnkgV01fQ09NTUFORCAqLwotICBTZW5kRGxnSXRlbU1lc3NhZ2VBKGhEbGcsc3RjNSxXTV9TRVRGT05ULAotICAgICAoV1BBUkFNKUNyZWF0ZUZvbnRBKDAsIDAsIDEsIDEsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgTlVMTCksRkFMU0UpOwotCiAgIGlmICghKGxwY2YtPkZsYWdzICYgQ0ZfU0hPV0hFTFApIHx8ICFJc1dpbmRvdyhscGNmLT5od25kT3duZXIpKQogICAgIFNob3dXaW5kb3coR2V0RGxnSXRlbShoRGxnLHBzaEhlbHApLFNXX0hJREUpOwogICBpZiAoIShscGNmLT5GbGFncyAmIENGX0FQUExZKSkKQEAgLTk3OCwyNyArMTAyOSwxMSBAQAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgICAgICAgICBDRm5fV01DdGxDb2xvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnRlcm5hbF0KLSAqLwotc3RhdGljIExSRVNVTFQgQ0ZuX1dNQ3RsQ29sb3JTdGF0aWMoSFdORCBoRGxnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENIT09TRUZPTlRBIGxwY2YpCi17Ci0gIGlmIChscGNmLT5GbGFncyAmIENGX0VGRkVDVFMpCi0gICBpZiAoR2V0RGxnQ3RybElEKEhXTkRfMzIoTE9XT1JEKGxQYXJhbSkpKT09c3RjNSkKLSAgIHsKLSAgICAgU2V0VGV4dENvbG9yKChIREMpd1BhcmFtLCBscGNmLT5yZ2JDb2xvcnMpOwotICAgICByZXR1cm4gKExSRVNVTFQpR2V0U3RvY2tPYmplY3QoV0hJVEVfQlJVU0gpOwotICAgfQotICByZXR1cm4gMDsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgQ0ZuX1dNQ29tbWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50ZXJuYWxdCiAgKi8KIHN0YXRpYyBMUkVTVUxUIENGbl9XTUNvbW1hbmQoSFdORCBoRGxnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgIExQQ0hPT1NFRk9OVEEgbHBjZikKIHsKLSAgSEZPTlQgaEZvbnQ7CiAgIGludCBpLGo7CiAgIGxvbmcgbDsKICAgSERDIGhkYzsKQEAgLTEwNDcsNiArMTA4Miw4IEBACiAJY2FzZSBjbWIzOmlmIChISVdPUkQod1BhcmFtKT09Q0JOX1NFTENIQU5HRSB8fCBISVdPUkQod1BhcmFtKT09IEJOX0NMSUNLRUQgKQogCSAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgc3RyWzI1Nl07CisgICAgICAgICAgICAgICAgICAgIFdJTkRPV0lORk8gd2luaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBUUkFDRSgiV01fQ09NTUFORC9jbWIyLDMgPSUwOGxYXG4iLCBsUGFyYW0pOwogCQkgICAgaT1TZW5kRGxnSXRlbU1lc3NhZ2VBKGhEbGcsY21iMSxDQl9HRVRDVVJTRUwsMCwwKTsKIAkJICAgIGlmIChpPT1DQl9FUlIpCkBAIC0xMDg3LDIyICsxMTI0LDI4IEBACiAJCSAgICBscHh4LT5sZlF1YWxpdHk9REVGQVVMVF9RVUFMSVRZOwogICAgICAgICAgICAgICAgICAgICBscGNmLT5pUG9pbnRTaXplPSAtMTAqbHB4eC0+bGZIZWlnaHQ7CiAKLQkJICAgIGhGb250PUNyZWF0ZUZvbnRJbmRpcmVjdEEobHB4eCk7Ci0JCSAgICBpZiAoaEZvbnQpCisgICAgICAgICAgICAgICAgICAgIHdpbmluZm8uY2JTaXplPXNpemVvZih3aW5pbmZvKTsKKworICAgICAgICAgICAgICAgICAgICBpZiggR2V0V2luZG93SW5mbyggR2V0RGxnSXRlbSggaERsZywgc3RjNSksICZ3aW5pbmZvICkgKQogCQkgICAgewotCQkgICAgICBIRk9OVCBvbGRGb250PShIRk9OVClTZW5kRGxnSXRlbU1lc3NhZ2VBKGhEbGcsIHN0YzUsCi0JCSAgICAgICAgICBXTV9HRVRGT05ULCAwLCAwKTsKLQkJICAgICAgU2VuZERsZ0l0ZW1NZXNzYWdlQShoRGxnLHN0YzUsV01fU0VURk9OVCwoV1BBUkFNKWhGb250LFRSVUUpOwotCQkgICAgICBEZWxldGVPYmplY3Qob2xkRm9udCk7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlUmVjdCggaERsZywgJndpbmluZm8ucmNXaW5kb3csIFRSVUUgKTsKIAkJICAgIH0KICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0JY2FzZSBjbWI0Omk9U2VuZERsZ0l0ZW1NZXNzYWdlQShoRGxnLCBjbWI0LCBDQl9HRVRDVVJTRUwsIDAsIDApOworCWNhc2UgY21iNDoKKyAgICAgICAgICAgICAgICAgIGk9U2VuZERsZ0l0ZW1NZXNzYWdlQShoRGxnLCBjbWI0LCBDQl9HRVRDVVJTRUwsIDAsIDApOwogCQkgIGlmIChpIT1DQl9FUlIpCiAJCSAgeworICAgICAgICAgICAgICAgICAgICBXSU5ET1dJTkZPIHdpbmluZm87CisKIAkJICAgbHBjZi0+cmdiQ29sb3JzPXRleHRjb2xvcnNbaV07Ci0JCSAgIEludmFsaWRhdGVSZWN0KCBHZXREbGdJdGVtKGhEbGcsc3RjNSksIE5VTEwsIDAgKTsKKyAgICAgICAgICAgICAgICAgICAgd2luaW5mby5jYlNpemU9c2l6ZW9mKHdpbmluZm8pOworCisgICAgICAgICAgICAgICAgICAgIGlmKCBHZXRXaW5kb3dJbmZvKCBHZXREbGdJdGVtKCBoRGxnLCBzdGM1KSwgJndpbmluZm8gKSApCisJCSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlUmVjdCggaERsZywgJndpbmluZm8ucmNXaW5kb3csIFRSVUUgKTsKKwkJICAgIH0KIAkJICB9CiAJCSAgYnJlYWs7CiAKQEAgLTExMzQsMTAgKzExNzcsNTcgQEAKIAogc3RhdGljIExSRVNVTFQgQ0ZuX1dNRGVzdHJveShIV05EIGh3bmQsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7Ci0gIERlbGV0ZU9iamVjdCgoSEZPTlQpU2VuZERsZ0l0ZW1NZXNzYWdlQShod25kLCBzdGM1LCBXTV9HRVRGT05ULCAwLCAwKSk7CiAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgTFJFU1VMVCBDRm5fV01QYWludChIV05EIGhEbGcsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0sCisgICAgICAgICAgICAgICAgICAgICAgTFBDSE9PU0VGT05UQSBscGNmICkKK3sKKyAgICBXSU5ET1dJTkZPIGluZm87CisKKyAgICBpbmZvLmNiU2l6ZT1zaXplb2YoaW5mbyk7CisKKyAgICBpZiggR2V0V2luZG93SW5mbyggR2V0RGxnSXRlbSggaERsZywgc3RjNSksICZpbmZvICkgKQorICAgIHsKKyAgICAgICAgUEFJTlRTVFJVQ1QgcHM7CisgICAgICAgIEhEQyBoZGM7CisgICAgICAgIEhQRU4gaE9yaWdQZW47CisgICAgICAgIEhGT05UIGhPcmlnRm9udDsKKyAgICAgICAgQ09MT1JSRUYgcmdiUHJldjsKKyAgICAgICAgV0NIQVIgc2FtcGxlW1NBTVBMRV9FWFRMRU4rNV09eydBJywnYScsJ0InLCdiJ307CisgICAgICAgIC8qIEFsd2F5cyBzdGFydCB3aXRoIHRoaXMgYmFzaWMgc2FtcGxlICovCisKKyAgICAgICAgaGRjPUJlZ2luUGFpbnQoIGhEbGcsICZwcyApOworCisgICAgICAgIC8qIFBhaW50IGZyYW1lICovCisgICAgICAgIE1vdmVUb0V4KCBoZGMsIGluZm8ucmNXaW5kb3cubGVmdCwgaW5mby5yY1dpbmRvdy5ib3R0b20sIE5VTEwgKTsKKyAgICAgICAgaE9yaWdQZW49U2VsZWN0T2JqZWN0KCBoZGMsIENyZWF0ZVBlbiggUFNfU09MSUQsIDIsCisgICAgICAgICAgICAgICAgICAgIEdldFN5c0NvbG9yKCBDT0xPUl8zRFNIQURPVyApICkpOyAKKyAgICAgICAgTGluZVRvKCBoZGMsIGluZm8ucmNXaW5kb3cubGVmdCwgaW5mby5yY1dpbmRvdy50b3AgKTsKKyAgICAgICAgTGluZVRvKCBoZGMsIGluZm8ucmNXaW5kb3cucmlnaHQsIGluZm8ucmNXaW5kb3cudG9wICk7CisgICAgICAgIERlbGV0ZU9iamVjdChTZWxlY3RPYmplY3QoIGhkYywgQ3JlYXRlUGVuKCBQU19TT0xJRCwgMiwKKyAgICAgICAgICAgICAgICAgICAgR2V0U3lzQ29sb3IoIENPTE9SXzNETElHSFQgKSApKSk7CisgICAgICAgIExpbmVUbyggaGRjLCBpbmZvLnJjV2luZG93LnJpZ2h0LCBpbmZvLnJjV2luZG93LmJvdHRvbSApOworICAgICAgICBMaW5lVG8oIGhkYywgaW5mby5yY1dpbmRvdy5sZWZ0LCBpbmZvLnJjV2luZG93LmJvdHRvbSApOworICAgICAgICBEZWxldGVPYmplY3QoU2VsZWN0T2JqZWN0KCBoZGMsIGhPcmlnUGVuICkpOworCisgICAgICAgIC8qIERyYXcgdGhlIHNhbXBsZSB0ZXh0IGl0c2VsZiAqLworICAgICAgICBsc3RyY2F0VyhzYW1wbGUsIFNBTVBMRV9MQU5HX1RFWFRbQ0hBUlNFVF9PUkRFUltscGNmLT5scExvZ0ZvbnQtPmxmQ2hhclNldF1dICk7CisgICAgICAgIAorICAgICAgICBpbmZvLnJjV2luZG93LnJpZ2h0LS07CisgICAgICAgIGluZm8ucmNXaW5kb3cuYm90dG9tLS07CisgICAgICAgIGluZm8ucmNXaW5kb3cudG9wKys7CisgICAgICAgIGluZm8ucmNXaW5kb3cubGVmdCsrOworICAgICAgICBoT3JpZ0ZvbnQ9U2VsZWN0T2JqZWN0KCBoZGMsIENyZWF0ZUZvbnRJbmRpcmVjdEEoIGxwY2YtPmxwTG9nRm9udCApICk7CisgICAgICAgIHJnYlByZXY9U2V0VGV4dENvbG9yKCBoZGMsIGxwY2YtPnJnYkNvbG9ycyApOworCisgICAgICAgIERyYXdUZXh0VyggaGRjLCBzYW1wbGUsIC0xLCAmaW5mby5yY1dpbmRvdywgRFRfQ0VOVEVSfERUX1ZDRU5URVJ8RFRfU0lOR0xFTElORSApOworICAgICAgICAKKyAgICAgICAgRW5kUGFpbnQoIGhEbGcsICZwcyApOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgRm9ybWF0Q2hhckRsZ1Byb2MgICAoQ09NTURMRy4xNikKQEAgLTEyMDgsMTAgKzEyOTgsNiBAQAogICAgICAgICAgICAgcmVzID0gQ0ZuX1dNRHJhd0l0ZW0oaERsZywgd1BhcmFtLCAoTFBBUkFNKSZkaXMpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV01fQ1RMQ09MT1I6Ci0gICAgICAgIGlmIChISVdPUkQobFBhcmFtKSA9PSBDVExDT0xPUl9TVEFUSUMpCi0gICAgICAgICAgICByZXM9Q0ZuX1dNQ3RsQ29sb3JTdGF0aWMoaERsZywgd1BhcmFtLCBMT1dPUkQobFBhcmFtKSwgbHBjZjMyYSk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01fQ09NTUFORDoKICAgICAgICAgcmVzPUNGbl9XTUNvbW1hbmQoaERsZywgTUFLRVdQQVJBTSggd1BhcmFtLCBISVdPUkQobFBhcmFtKSApLCBMT1dPUkQobFBhcmFtKSwgbHBjZjMyYSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI2MSw4ICsxMzQ3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDRm5fV01NZWFzdXJlSXRlbShoRGxnLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICBjYXNlIFdNX0RSQVdJVEVNOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENGbl9XTURyYXdJdGVtKGhEbGcsIHdQYXJhbSwgbFBhcmFtKTsKLSAgICAgIGNhc2UgV01fQ1RMQ09MT1JTVEFUSUM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ZuX1dNQ3RsQ29sb3JTdGF0aWMoaERsZywgd1BhcmFtLCBsUGFyYW0sIGxwY2YpOwogICAgICAgY2FzZSBXTV9DT01NQU5EOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENGbl9XTUNvbW1hbmQoaERsZywgd1BhcmFtLCBsUGFyYW0sIGxwY2YpOwogICAgICAgY2FzZSBXTV9ERVNUUk9ZOgpAQCAtMTI3Miw2ICsxMzU2LDggQEAKIAkJCQkgICAgICBsUGFyYW0pOwogCQkJIEZJWE1FKCJjdXJyZW50IGxvZ2ZvbnQgYmFjayB0byBjYWxsZXJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFdNX1BBSU5UOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENGbl9XTVBhaW50KGhEbGcsIHdQYXJhbSwgbFBhcmFtLCBscGNmKTsKICAgICB9CiAgIHJldHVybiByZXM7CiB9CkBAIC0xMzE0LDggKzE0MDAsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENGbl9XTU1lYXN1cmVJdGVtKGhEbGcsIHdQYXJhbSwgbFBhcmFtKTsKICAgICAgIGNhc2UgV01fRFJBV0lURU06CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ZuX1dNRHJhd0l0ZW0oaERsZywgd1BhcmFtLCBsUGFyYW0pOwotICAgICAgY2FzZSBXTV9DVExDT0xPUlNUQVRJQzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDRm5fV01DdGxDb2xvclN0YXRpYyhoRGxnLCB3UGFyYW0sIGxQYXJhbSwgbHBjZjMyYSk7CiAgICAgICBjYXNlIFdNX0NPTU1BTkQ6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ZuX1dNQ29tbWFuZChoRGxnLCB3UGFyYW0sIGxQYXJhbSwgbHBjZjMyYSk7CiAgICAgICBjYXNlIFdNX0RFU1RST1k6Cg==