ZGlmZiAtLWdpdCBhL0ZpbGVsaXN0IGIvRmlsZWxpc3QKaW5kZXggYWI0YjFlYi4uMTY1MmNmMyAxMDA2NDQKLS0tIGEvRmlsZWxpc3QKKysrIGIvRmlsZWxpc3QKQEAgLTIyMSw2ICsyMjEsNyBAQAogCQlzcmMvdGVzdGRpci9zaWxlbnQud2F2IFwKIAkJc3JjL3Rlc3RkaXIvcG9wdXBib3VuY2UudmltIFwKIAkJc3JjL3Rlc3RkaXIvY3Jhc2gvKiBcCisJCXNyYy90ZXN0ZGlyL3J1X1JVL0xDX01FU1NBR0VTL19fUEFDS0FHRV9fLm1vIFwKIAkJc3JjL3Byb3RvLmggXAogCQlzcmMvcHJvdG9kZWYuaCBcCiAJCXNyYy9wcm90by9hbGxvYy5wcm8gXApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvYnVpbHRpbi50eHQgYi9ydW50aW1lL2RvYy9idWlsdGluLnR4dAppbmRleCBjMWRkMjYwLi4zNGMwYjBhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9idWlsdGluLnR4dAorKysgYi9ydW50aW1lL2RvYy9idWlsdGluLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpidWlsdGluLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDkuMS4gIExhc3QgY2hhbmdlOiAyMDI0IEp1biAxOQorKmJ1aWx0aW4udHh0KglGb3IgVmltIHZlcnNpb24gOS4xLiAgTGFzdCBjaGFuZ2U6IDIwMjQgSnVuIDIwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTY3LDYgKzY3LDggQEAKIGJhbGxvb25fZ2V0dGV4dCgpCQlTdHJpbmcJY3VycmVudCB0ZXh0IGluIHRoZSBiYWxsb29uCiBiYWxsb29uX3Nob3coe2V4cHJ9KQkJbm9uZQlzaG93IHtleHByfSBpbnNpZGUgdGhlIGJhbGxvb24KIGJhbGxvb25fc3BsaXQoe21zZ30pCQlMaXN0CXNwbGl0IHttc2d9IGFzIHVzZWQgZm9yIGEgYmFsbG9vbgorYmluZHRleHRkb21haW4oe3BhY2thZ2V9LCB7cGF0aH0pCisJCQkJbm9uZQliaW5kIHRleHQgZG9tYWluIHRvIHNwZWNpZWQgcGF0aAogYmxvYjJsaXN0KHtibG9ifSkJCUxpc3QJY29udmVydCB7YmxvYn0gaW50byBhIGxpc3Qgb2YgbnVtYmVycwogYnJvd3NlKHtzYXZlfSwge3RpdGxlfSwge2luaXRkaXJ9LCB7ZGVmYXVsdH0pCiAJCQkJU3RyaW5nCXB1dCB1cCBhIGZpbGUgcmVxdWVzdGVyCkBAIC0yNzcsNyArMjc5LDggQEAKIGdldHRhYndpbnZhcih7dGFibnJ9LCB7d2lubnJ9LCB7bmFtZX0gWywge2RlZn1dKQogCQkJCWFueQl7bmFtZX0gaW4ge3dpbm5yfSBpbiB0YWIgcGFnZSB7dGFibnJ9CiBnZXR0YWdzdGFjayhbe25yfV0pCQlEaWN0CWdldCB0aGUgdGFnIHN0YWNrIG9mIHdpbmRvdyB7bnJ9Ci1nZXR0ZXh0KHt0ZXh0fSkJCQlTdHJpbmcJbG9va3VwIHRyYW5zbGF0aW9uIG9mIHt0ZXh0fQorZ2V0dGV4dCh7dGV4dH0gWywge3BhY2thZ2V9XSkKKwkJCQlTdHJpbmcJbG9va3VwIHRyYW5zbGF0aW9uIG9mIHt0ZXh0fQogZ2V0d2luaW5mbyhbe3dpbmlkfV0pCQlMaXN0CWxpc3Qgb2YgaW5mbyBhYm91dCBlYWNoIHdpbmRvdwogZ2V0d2lucG9zKFt7dGltZW91dH1dKQkJTGlzdAlYIGFuZCBZIGNvb3JkIGluIHBpeGVscyBvZiBWaW0gd2luZG93CiBnZXR3aW5wb3N4KCkJCQlOdW1iZXIJWCBjb29yZCBpbiBwaXhlbHMgb2YgdGhlIFZpbSB3aW5kb3cKQEAgLTEyMTgsNiArMTIyMSwxMyBAQAogCiAJCVJldHVybiB0eXBlOiBsaXN0PGFueT4gb3IgbGlzdDxzdHJpbmc+CiAKK2JpbmR0ZXh0ZG9tYWluKHtwYWNrYWdlfSwge3BhdGh9KQkJCSpiaW5kdGV4dGRvbWFpbigpKgorCQlCaW5kIGEgc3BlY2lmaWMge3BhY2thZ2V9IHRvIGEge3BhdGh9IHNvIHRoYXQgdGhlCisJCXxnZXR0ZXh0KCl8IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdldCBsYW5ndWFnZS1zcGVjaWZpYworCQl0cmFuc2xhdGlvbnMgZm9yIGEgcGFja2FnZS4gIHtwYXRofSBpcyB0aGUgZGlyZWN0b3J5IG5hbWUKKwkJZm9yIHRoZSB0cmFuc2xhdGlvbnMuIFNlZSB8cGFja2FnZS1jcmVhdGV8LgorCisJCVJldHVybiB0eXBlOiBub25lCiAKIGJsb2IybGlzdCh7YmxvYn0pCQkJCQkqYmxvYjJsaXN0KCkqCiAJCVJldHVybiBhIExpc3QgY29udGFpbmluZyB0aGUgbnVtYmVyIHZhbHVlIG9mIGVhY2ggYnl0ZSBpbiBCbG9iCkBAIC00OTc4LDcgKzQ5ODgsNyBAQAogCQlSZXR1cm4gdHlwZTogZGljdDxhbnk+CiAKIAotZ2V0dGV4dCh7dGV4dH0pCQkJCQkJKmdldHRleHQoKSoKK2dldHRleHQoe3RleHR9IFssIHtwYWNrYWdlfV0pCQkJCSpnZXR0ZXh0KCkqCiAJCVRyYW5zbGF0ZSBTdHJpbmcge3RleHR9IGlmIHBvc3NpYmxlLgogCQlUaGlzIGlzIG1haW5seSBmb3IgdXNlIGluIHRoZSBkaXN0cmlidXRlZCBWaW0gc2NyaXB0cy4gIFdoZW4KIAkJZ2VuZXJhdGluZyBtZXNzYWdlIHRyYW5zbGF0aW9ucyB0aGUge3RleHR9IGlzIGV4dHJhY3RlZCBieQpAQCAtNDk4OCw2ICs0OTk4LDkgQEAKIAkJRm9yIHt0ZXh0fSBkb3VibGUgcXVvdGVkIHN0cmluZ3MgYXJlIHByZWZlcnJlZCwgYmVjYXVzZQogCQl4Z2V0dGV4dCBkb2VzIG5vdCB1bmRlcnN0YW5kIGVzY2FwaW5nIGluIHNpbmdsZSBxdW90ZWQKIAkJc3RyaW5ncy4KKwkJV2hlbiB0aGUge3BhY2thZ2V9IGlzIHNwZWNpZmllZCwgdGhlIHRyYW5zbGF0aW9uIGlzIGxvb2tlZCB1cAorCQlmb3IgdGhhdCBzcGVjaWZpYyBwYWNrYWdlLiBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvCisJCWxvb2sgZm9yIHRyYW5zbGF0aW9ucyB3aXRoIHRoZSB8YmluZHRleHRkb21haW4oKXwgZnVuY3Rpb24uCiAKIAkJUmV0dXJuIHR5cGU6IHxTdHJpbmd8CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3JlcGVhdC50eHQgYi9ydW50aW1lL2RvYy9yZXBlYXQudHh0CmluZGV4IGU5NWI2YTEuLjBiZmIxMTcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3JlcGVhdC50eHQKKysrIGIvcnVudGltZS9kb2MvcmVwZWF0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpyZXBlYXQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gOS4xLiAgTGFzdCBjaGFuZ2U6IDIwMjMgTWF5IDI2CisqcmVwZWF0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDkuMS4gIExhc3QgY2hhbmdlOiAyMDI0IEp1biAyMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNzM1LDYgKzczNSwxMCBAQAogICAgc3RhcnQvZm9vYmFyL2F1dG9sb2FkL2Zvby52aW0JIiBsb2FkZWQgd2hlbiBmb28gY29tbWFuZCB1c2VkCiAgICBzdGFydC9mb29iYXIvZG9jL2Zvby50eHQJCSIgaGVscCBmb3IgZm9vLnZpbQogICAgc3RhcnQvZm9vYmFyL2RvYy90YWdzCQkiIGhlbHAgdGFncworICAgc3RhcnQvZm9vYmFyL2xhbmcvPGxhbmdfaWQ+L0xDX01FU1NBR0VTL2Zvby5wbworCQkJCQkiIG1lc3NhZ2VzIGZvciB0aGUgcGx1Z2luIGluIHRoZQorCQkJCQkiIDxsYW5nX2lkPiBsYW5ndWFnZS4gIFRoZXNlIGZpbGVzIGFyZQorCQkJCQkiIG9wdGlvbmFsLgogICAgb3B0L2Zvb2V4dHJhL3BsdWdpbi9leHRyYS52aW0JIiBvcHRpb25hbCBwbHVnaW4sIGRlZmluZXMgY29tbWFuZHMKICAgIG9wdC9mb29leHRyYS9hdXRvbG9hZC9leHRyYS52aW0JIiBsb2FkZWQgd2hlbiBleHRyYSBjb21tYW5kIHVzZWQKICAgIG9wdC9mb29leHRyYS9kb2MvZXh0cmEudHh0CQkiIGhlbHAgZm9yIGV4dHJhLnZpbQpAQCAtNzYyLDYgKzc2NiwzNSBAQAogCTpoZWxwdGFncyBwYXRoL3N0YXJ0L2Zvb2Jhci9kb2MKIAk6aGVscHRhZ3MgcGF0aC9vcHQvZm9vZXh0cmEvZG9jCiAKK1RoZSBtZXNzYWdlcyB0aGF0IGFyZSBpbiB0aGUgbGFuZy88bGFuZ19pZD4vTENfTUVTU0FHRVMvZm9vLnBvIGZpbGUgbmVlZCB0byBiZQordHJhbnNsYXRlZCB0byBhIGZvcm1hdCB0aGF0IHRoZSB8Z2V0dGV4dCgpfCBmdW5jdGlvbiB1bmRlcnN0YW5kcyBieSBydW5uaW5nIHRoZQorbXNnZm10IHByb2dyYW0uIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBsYW5nLzxsYW5nX2lkPi9MQ19NRVNTQUdFUy9mb28ubW8KK2ZpbGUuIFNlZSB8bXVsdGlsYW5nfCBvbiBob3cgdG8gc3BlY2lmeSBsYW5ndWFnZXMuCisKK0luIHlvdXIgcGx1Z2luLCB5b3UgbmVlZCB0byBjYWxsIHRoZSB8YmluZHRleHRkb21haW4oKXwgZnVuY3Rpb24gYXMgZm9sbG93cy4KK1RoaXMgYXNzdW1lcyB0aGF0IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGlzIGFzIGFib3ZlOiA+CisJOmNhbGwgYmluZHRleHRkb21haW4oImZvbyIsIGZuYW1lbW9kaWZ5KGV4cGFuZCgiPHNjcmlwdD4iKSwgJzpwOmgnKQorCSAuLiAnLy4uL2xhbmcvJykKKzwKK1lvdSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBvbmNlLiBBZnRlciB0aGlzIGNhbGwsIHlvdSBjYW4gdXNlOiA+CisJOmVjaG8gZ2V0dGV4dCgiSGVsbG8iLCAiZm9vIikKKzwKK3RvIGdldCB0aGUgdGV4dCAiSGVsbG8iIHRyYW5zbGF0ZWQgdG8gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UgKGlmIHRoZQorcGx1Z2luIG1lc3NhZ2VzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIHRvIHRoaXMgbGFuZ3VhZ2UpLgorCitUbyBjcmVhdGUgdGhlIGZvby5wbyBmaWxlLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBmb28ucG90IGZpbGUgZmlyc3QuIFRoZQorZW50cmllcyBpbiB0aGlzIGZpbGUgbmVlZCB0byBiZSB0cmFuc2xhdGVkIHRvIHRoZSBsYW5ndWFnZShzKSB5b3Ugd2FudCB0byBiZQorc3VwcG9ydGVkIGJ5IHlvdXIgcGx1Z2luLgorCitUbyBjcmVhdGUgdGhlIGZvby5wb3QgZmlsZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogPgorCWNkIH4vLnZpbS9wYWNrL3N0YXJ0L2Zvb2JhcgorCW1ha2UgLWYgfi9zcmMvdmltL3NyYy9wby9NYWtlZmlsZSBQQUNLQUdFPWZvbyBcCisJUE9fQkFTRURJUj1+L3NyYy92aW0vc3JjL3BvIFBPX0lOUFVUTElTVD0gXAorCVBPX1ZJTV9KU0xJU1Q9InBsdWdpbl9fZm9vLmpzIHBsdWdpbl9fYmFyLmpzIFwKKwlhdXRvbG9hZF9fZm9vLmpzIiBcCisJUE9fVklNX0lOUFVUTElTVD0icGx1Z2luL2Zvby52aW0gcGx1Z2luL2Jhci52aW0gYXV0b2xvYWQvZm9vLnZpbSIgXAorCWZvby5wb3QKKzwKIAogRGVwZW5kZW5jaWVzIGJldHdlZW4gcGx1Z2lucyB+CiAJCQkJCQkJKnBhY2tsb2FkLXR3by1zdGVwcyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IDRkZDI1YmEuLjQ2ZjE1YWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtNjE0OCw2ICs2MTQ4LDcgQEAKIGJldmFsX3dpbmlkLXZhcmlhYmxlCWV2YWwudHh0CS8qYmV2YWxfd2luaWQtdmFyaWFibGUqCiBiZXZhbF93aW5uci12YXJpYWJsZQlldmFsLnR4dAkvKmJldmFsX3dpbm5yLXZhcmlhYmxlKgogYmluYXJ5LW51bWJlcglldmFsLnR4dAkvKmJpbmFyeS1udW1iZXIqCitiaW5kdGV4dGRvbWFpbigpCWJ1aWx0aW4udHh0CS8qYmluZHRleHRkb21haW4oKSoKIGJpdHdpc2UtZnVuY3Rpb24JdXNyXzQxLnR4dAkvKmJpdHdpc2UtZnVuY3Rpb24qCiBiaXR3aXNlLXNoaWZ0CWV2YWwudHh0CS8qYml0d2lzZS1zaGlmdCoKIGJsb2IJZXZhbC50eHQJLypibG9iKgpAQCAtMTA1OTgsNiArMTA1OTksNyBAQAogdGVybWRlYnVnLXByb21wdAl0ZXJtaW5hbC50eHQJLyp0ZXJtZGVidWctcHJvbXB0KgogdGVybWRlYnVnLXN0YXJ0aW5nCXRlcm1pbmFsLnR4dAkvKnRlcm1kZWJ1Zy1zdGFydGluZyoKIHRlcm1kZWJ1Zy1zdGVwcGluZwl0ZXJtaW5hbC50eHQJLyp0ZXJtZGVidWctc3RlcHBpbmcqCit0ZXJtZGVidWctdGltZW91dAl0ZXJtaW5hbC50eHQJLyp0ZXJtZGVidWctdGltZW91dCoKIHRlcm1kZWJ1Zy12YXJpYWJsZXMJdGVybWluYWwudHh0CS8qdGVybWRlYnVnLXZhcmlhYmxlcyoKIHRlcm1kZWJ1Z19kaXNhc21fd2luZG93CXRlcm1pbmFsLnR4dAkvKnRlcm1kZWJ1Z19kaXNhc21fd2luZG93KgogdGVybWRlYnVnX21hcF9LCXRlcm1pbmFsLnR4dAkvKnRlcm1kZWJ1Z19tYXBfSyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQgYi9ydW50aW1lL2RvYy91c3JfNDEudHh0CmluZGV4IGE1NGE5OTEuLjkyMmU4MGEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzQxLnR4dApAQCAtNzk4LDYgKzc5OCw3IEBACiAJZXhlY3V0ZSgpCQlleGVjdXRlIGFuIEV4IGNvbW1hbmQgYW5kIGdldCB0aGUgb3V0cHV0CiAJd2luX2V4ZWN1dGUoKQkJbGlrZSBleGVjdXRlKCkgYnV0IGluIGEgc3BlY2lmaWVkIHdpbmRvdwogCXRyaW0oKQkJCXRyaW0gY2hhcmFjdGVycyBmcm9tIGEgc3RyaW5nCisJYmluZHRleHRkb21haW4oKQlzZXQgbWVzc2FnZSBsb29rdXAgdHJhbnNsYXRpb24gYmFzZSBwYXRoCiAJZ2V0dGV4dCgpCQlsb29rdXAgbWVzc2FnZSB0cmFuc2xhdGlvbgogCiBMaXN0IG1hbmlwdWxhdGlvbjoJCQkJCSpsaXN0LWZ1bmN0aW9ucyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZlcnNpb245LnR4dCBiL3J1bnRpbWUvZG9jL3ZlcnNpb245LnR4dAppbmRleCBkNTBlMGU4Li5iNjBmMzg2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92ZXJzaW9uOS50eHQKKysrIGIvcnVudGltZS9kb2MvdmVyc2lvbjkudHh0CkBAIC00MTU2Myw2ICs0MTU2Myw5IEBACiBTdXBwb3J0IGhpZ2hsaWdodGluZyB0aGUgbWF0Y2hlZCB0ZXh0IGZvciBpbnNlcnQtbW9kZSBjb21wbGV0aW9uIGFuZAogY29tbWFuZC1saW5lIGNvbXBsZXRpb24gaW4gfGlucy1jb21wbGV0aW9uLW1lbnV8LgogCitTdXBwb3J0IGZvciB0cmFuc2xhdGluZyBtZXNzYWdlcyBpbiBWaW0gc2NyaXB0IHBsdWdpbnMgdXNpbmcgdGhlIHxnZXR0ZXh0KCl8CithbmQgfGJpbmR0ZXh0ZG9tYWluKCl8IGZ1bmN0aW9ucy4KKwogCQkJCQkJCSpjaGFuZ2VkLTkuMioKIENoYW5nZWR+CiAtLS0tLS0tCkBAIC00MTU3OSw2ICs0MTU4Miw3IEBACiAKIEZ1bmN0aW9uczogfgogCit8YmluZHRleHRkb21haW4oKXwJc2V0IG1lc3NhZ2UgbG9va3VwIHRyYW5zbGF0aW9uIGJhc2UgcGF0aAogfGRpZmYoKXwJCWRpZmYgdHdvIExpc3RzIG9mIHN0cmluZ3MKIHxmaWxlY29weSgpfAkJY29weSBhIGZpbGUge2Zyb219IHRvIHt0b30KIHxmb3JlYWNoKCl8CQlhcHBseSBmdW5jdGlvbiB0byBMaXN0IGl0ZW1zCmRpZmYgLS1naXQgYS9zcmMvYXV0by9jb25maWd1cmUgYi9zcmMvYXV0by9jb25maWd1cmUKaW5kZXggOThiOTU4MC4uMjZhYzQ1OCAxMDA3NTUKLS0tIGEvc3JjL2F1dG8vY29uZmlndXJlCisrKyBiL3NyYy9hdXRvL2NvbmZpZ3VyZQpAQCAtMTU4NzYsNiArMTU4NzYsMzAgQEAKIAogZmkKIAorICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZ2V0dGV4dCIgPiY1CitwcmludGYgJXMgImNoZWNraW5nIGZvciBkZ2V0dGV4dC4uLiAiID4mNjsgfQorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGxpYmludGwuaD4KK2ludAorbWFpbiAodm9pZCkKK3sKK2RnZXR0ZXh0KCJUZXN0IiwgIlRlc3QiKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKK3RoZW4gOgorICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorcHJpbnRmICIlc1xuIiAieWVzIiA+JjY7IH07IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ER0VUVEVYVCAxIiA+PmNvbmZkZWZzLmgKKworZWxzZSAkYXNfbm9wCisgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKK3ByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgICAgICAgICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9ubF9tc2dfY2F0X2NudHIiID4mNQogcHJpbnRmICVzICJjaGVja2luZyBmb3IgX25sX21zZ19jYXRfY250ci4uLiAiID4mNjsgfQogICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZy5oLmluIGIvc3JjL2NvbmZpZy5oLmluCmluZGV4IDhhZDlmMDMuLjUzMGMwODIgMTAwNjQ0Ci0tLSBhL3NyYy9jb25maWcuaC5pbgorKysgYi9zcmMvY29uZmlnLmguaW4KQEAgLTIyMiw3ICsyMjIsNiBAQAogI3VuZGVmIEhBVkVfVU5TRVRFTlYKICN1bmRlZiBIQVZFX1VTTEVFUAogI3VuZGVmIEhBVkVfVVRJTUUKLSN1bmRlZiBIQVZFX0JJTkRfVEVYVERPTUFJTl9DT0RFU0VUCiAjdW5kZWYgSEFWRV9NQkxFTgogI3VuZGVmIEhBVkVfVElNRVJfQ1JFQVRFCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCkBAIC00MjQsNiArNDIzLDEyIEBACiAvKiBEZWZpbmUgaWYgdGhlcmUgaXMgYSB3b3JraW5nIGdldHRleHQoKS4gKi8KICN1bmRlZiBIQVZFX0dFVFRFWFQKIAorLyogRGVmaW5lIGlmIHRoZXJlIGlzIGEgd29ya2luZyBiaW5kX3RleHRkb21haW5fY29kZXNldCgpLiAqLworI3VuZGVmIEhBVkVfQklORF9URVhURE9NQUlOX0NPREVTRVQKKworLyogRGVmaW5lIGlmIHRoZXJlIGlzIGEgd29ya2luZyBkZ2V0dGV4dCgpLiAqLworI3VuZGVmIEhBVkVfREdFVFRFWFQKKwogLyogRGVmaW5lIGlmIF9ubF9tc2dfY2F0X2NudHIgaXMgcHJlc2VudC4gKi8KICN1bmRlZiBIQVZFX05MX01TR19DQVRfQ05UUgogCmRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmFjIGIvc3JjL2NvbmZpZ3VyZS5hYwppbmRleCA5NDZmZTUyLi4yOWNkOTI2IDEwMDY0NAotLS0gYS9zcmMvY29uZmlndXJlLmFjCisrKyBiL3NyYy9jb25maWd1cmUuYWMKQEAgLTQ0OTcsNiArNDQ5NywxMiBAQAogICAgICAgQUNfU1VCU1QoTUFLRU1PKQogICAgICAgZG5sIHRoaXMgd2FzIGFkZGVkIGluIEdOVSBnZXR0ZXh0IDAuMTAuMzYKICAgICAgIEFDX0NIRUNLX0ZVTkNTKGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KQorICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGdldHRleHRdKQorICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgKKwkJWyNpbmNsdWRlIDxsaWJpbnRsLmg+XSwKKwkJW2RnZXR0ZXh0KCJUZXN0IiwgIlRlc3QiKTtdKV0sCisJCUFDX01TR19SRVNVTFQoW3llc10pOyBBQ19ERUZJTkUoSEFWRV9ER0VUVEVYVCksCisJCUFDX01TR19SRVNVTFQoW25vXSkpCiAgICAgICBkbmwgX25sX21zZ19jYXRfY250ciBpcyByZXF1aXJlZCBmb3IgR05VIGdldHRleHQKICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIF9ubF9tc2dfY2F0X2NudHJdKQogICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgKZGlmZiAtLWdpdCBhL3NyYy9ldmFsZnVuYy5jIGIvc3JjL2V2YWxmdW5jLmMKaW5kZXggMmEwZWIyNy4uNGZmZmE1MCAxMDA2NDQKLS0tIGEvc3JjL2V2YWxmdW5jLmMKKysrIGIvc3JjL2V2YWxmdW5jLmMKQEAgLTI4LDYgKzI4LDcgQEAKIHN0YXRpYyB2b2lkIGZfYmFsbG9vbl9zcGxpdCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KTsKICMgZW5kaWYKICNlbmRpZgorc3RhdGljIHZvaWQgZl9iaW5kdGV4dGRvbWFpbih0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KTsKIHN0YXRpYyB2b2lkIGZfYnl0ZTJsaW5lKHR5cHZhbF9UICphcmd2YXJzLCB0eXB2YWxfVCAqcmV0dHYpOwogc3RhdGljIHZvaWQgZl9jYWxsKHR5cHZhbF9UICphcmd2YXJzLCB0eXB2YWxfVCAqcmV0dHYpOwogc3RhdGljIHZvaWQgZl9jaGFuZ2Vucih0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KTsKQEAgLTE4MjQsNiArMTgyNSw4IEBACiAJICAgIE5VTEwKICNlbmRpZgogCQkJfSwKKyAgICB7ImJpbmR0ZXh0ZG9tYWluIiwJMiwgMiwgMCwJICAgIGFyZzJfc3RyaW5nLAorCQkJcmV0X3ZvaWQsCSAgICBmX2JpbmR0ZXh0ZG9tYWlufSwKICAgICB7ImJsb2IybGlzdCIsCTEsIDEsIEZFQVJHXzEsCSAgICBhcmcxX2Jsb2IsCiAJCQlyZXRfbGlzdF9udW1iZXIsICAgIGZfYmxvYjJsaXN0fSwKICAgICB7ImJyb3dzZSIsCQk0LCA0LCAwLAkgICAgYXJnNF9icm93c2UsCkBAIC0yMTU0LDcgKzIxNTcsNyBAQAogCQkJcmV0X2FueSwJICAgIGZfZ2V0dGFid2ludmFyfSwKICAgICB7ImdldHRhZ3N0YWNrIiwJMCwgMSwgRkVBUkdfMSwJICAgIGFyZzFfbnVtYmVyLAogCQkJcmV0X2RpY3RfYW55LAkgICAgZl9nZXR0YWdzdGFja30sCi0gICAgeyJnZXR0ZXh0IiwJCTEsIDEsIEZFQVJHXzEsCSAgICBhcmcxX3N0cmluZywKKyAgICB7ImdldHRleHQiLAkJMSwgMiwgRkVBUkdfMSwJICAgIGFyZzJfc3RyaW5nLAogCQkJcmV0X3N0cmluZywJICAgIGZfZ2V0dGV4dH0sCiAgICAgeyJnZXR3aW5pbmZvIiwJMCwgMSwgRkVBUkdfMSwJICAgIGFyZzFfbnVtYmVyLAogCQkJcmV0X2xpc3RfZGljdF9hbnksICBmX2dldHdpbmluZm99LApAQCAtMzQ3Nyw2ICszNDgwLDI0IEBACiB9CiAKIC8qCisgKiAiYmluZHRleHRkb21haW4ocGFja2FnZSwgcGF0aCkiIGZ1bmN0aW9uCisgKi8KKyAgICBzdGF0aWMgdm9pZAorZl9iaW5kdGV4dGRvbWFpbih0eXB2YWxfVCAqYXJndmFycyBVTlVTRUQsIHR5cHZhbF9UICpyZXR0diBVTlVTRUQpCit7CisgICAgaWYgKGNoZWNrX2Zvcl9ub25lbXB0eV9zdHJpbmdfYXJnKGFyZ3ZhcnMsIDApID09IEZBSUwKKwkgICAgfHwgY2hlY2tfZm9yX25vbmVtcHR5X3N0cmluZ19hcmcoYXJndmFycywgMSkgPT0gRkFJTCkKKwlyZXR1cm47CisKKyAgICBpZiAoc3RyY21wKChjb25zdCBjaGFyICopYXJndmFyc1swXS52dmFsLnZfc3RyaW5nLCBWSU1QQUNLQUdFKSA9PSAwKQorCXNlbXNnKF8oZV9pbnZhbGlkX2FyZ3VtZW50X3N0ciksIHR2X2dldF9zdHJpbmcoJmFyZ3ZhcnNbMF0pKTsKKyAgICBlbHNlCisJYmluZHRleHRkb21haW4oKGNvbnN0IGNoYXIgKilhcmd2YXJzWzBdLnZ2YWwudl9zdHJpbmcsIChjb25zdCBjaGFyICopYXJndmFyc1sxXS52dmFsLnZfc3RyaW5nKTsKKworICAgIHJldHVybjsKK30KKworLyoKICAqICJieXRlMmxpbmUoYnl0ZSkiIGZ1bmN0aW9uCiAgKi8KICAgICBzdGF0aWMgdm9pZApAQCAtNjAzMywxMSArNjA1NCwzOSBAQAogICAgIHN0YXRpYyB2b2lkCiBmX2dldHRleHQodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikKIHsKLSAgICBpZiAoY2hlY2tfZm9yX25vbmVtcHR5X3N0cmluZ19hcmcoYXJndmFycywgMCkgPT0gRkFJTCkKKyNpZiBkZWZpbmVkKEhBVkVfQklORF9URVhURE9NQUlOX0NPREVTRVQpCisgICAgY2hhciAqcHJldiA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmIChjaGVja19mb3Jfbm9uZW1wdHlfc3RyaW5nX2FyZyhhcmd2YXJzLCAwKSA9PSBGQUlMCisJfHwgY2hlY2tfZm9yX29wdF9zdHJpbmdfYXJnKGFyZ3ZhcnMsIDEpID09IEZBSUwpCiAJcmV0dXJuOwogCiAgICAgcmV0dHYtPnZfdHlwZSA9IFZBUl9TVFJJTkc7Ci0gICAgcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSB2aW1fc3Ryc2F2ZSgoY2hhcl91ICopXyhhcmd2YXJzWzBdLnZ2YWwudl9zdHJpbmcpKTsKKworICAgIGlmIChhcmd2YXJzWzFdLnZfdHlwZSA9PSBWQVJfU1RSSU5HICYmCisJICAgIGFyZ3ZhcnNbMV0udnZhbC52X3N0cmluZyAhPSBOVUxMICYmCisJICAgICooYXJndmFyc1sxXS52dmFsLnZfc3RyaW5nKSAhPSBOVUwpCisgICAgeworI2lmIGRlZmluZWQoSEFWRV9CSU5EX1RFWFRET01BSU5fQ09ERVNFVCkKKwlwcmV2ID0gYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoKGNvbnN0IGNoYXIgKilhcmd2YXJzWzFdLnZ2YWwudl9zdHJpbmcsIChjaGFyICopcF9lbmMpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfREdFVFRFWFQpCisJcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSB2aW1fc3Ryc2F2ZSgoY2hhcl91ICopZGdldHRleHQoKGNvbnN0IGNoYXIgKilhcmd2YXJzWzFdLnZ2YWwudl9zdHJpbmcsIChjb25zdCBjaGFyICopYXJndmFyc1swXS52dmFsLnZfc3RyaW5nKSk7CisjZWxzZQorCXRleHRkb21haW4oKGNvbnN0IGNoYXIgKilhcmd2YXJzWzFdLnZ2YWwudl9zdHJpbmcpOworCXJldHR2LT52dmFsLnZfc3RyaW5nID0gdmltX3N0cnNhdmUoKGNoYXJfdSAqKV8oYXJndmFyc1swXS52dmFsLnZfc3RyaW5nKSk7CisJdGV4dGRvbWFpbihWSU1QQUNLQUdFKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX0JJTkRfVEVYVERPTUFJTl9DT0RFU0VUKQorCWlmIChwcmV2ICE9IE5VTEwpCisJICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KChjb25zdCBjaGFyICopYXJndmFyc1sxXS52dmFsLnZfc3RyaW5nLCBwcmV2KTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlCisJcmV0dHYtPnZ2YWwudl9zdHJpbmcgPSB2aW1fc3Ryc2F2ZSgoY2hhcl91ICopXyhhcmd2YXJzWzBdLnZ2YWwudl9zdHJpbmcpKTsKIH0KIAogLy8gZm9yIFZJTV9WRVJTSU9OXyBkZWZpbmVzCmRpZmYgLS1naXQgYS9zcmMvcG8vTWFrZV9hbGwubWFrIGIvc3JjL3BvL01ha2VfYWxsLm1hawppbmRleCBhYzExMjI4Li5jM2U2NDU5IDEwMDY0NAotLS0gYS9zcmMvcG8vTWFrZV9hbGwubWFrCisrKyBiL3NyYy9wby9NYWtlX2FsbC5tYWsKQEAgLTE4OSw4ICsxODksOCBAQAogCS4uLy4uL3J1bnRpbWUvZGVmYXVsdHMudmltCiAKIFBPX1ZJTV9KU0xJU1QgPSBcCi0Jb3B0d2luLmpzIFwKLQlkZWZhdWx0cy5qcworCV9fX19fX19fcnVudGltZV9fb3B0d2luLmpzIFwKKwlfX19fX19fX3J1bnRpbWVfX2RlZmF1bHRzLmpzCiAKICMgQXJndW1lbnRzIGZvciB4Z2V0dGV4dCB0byBwaWNrIHVwIG1lc3NhZ2VzIHRvIHRyYW5zbGF0ZSBmcm9tIHRoZSBzb3VyY2UgY29kZS4KIFhHRVRURVhUX0tFWVdPUkRTID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fIC0ta2V5d29yZD1OR0VUVEVYVDoxLDIgLS1rZXl3b3JkPVBMVVJBTF9NU0c6Miw0CmRpZmYgLS1naXQgYS9zcmMvcG8vTWFrZWZpbGUgYi9zcmMvcG8vTWFrZWZpbGUKaW5kZXggY2M0MDA4Zi4uODdkNjU3YiAxMDA2NDQKLS0tIGEvc3JjL3BvL01ha2VmaWxlCisrKyBiL3NyYy9wby9NYWtlZmlsZQpAQCAtMSwxNyArMSwxOCBAQAogIyBNYWtlZmlsZSBmb3IgdGhlIFZpbSBtZXNzYWdlIHRyYW5zbGF0aW9ucy4KK1BPX0JBU0VESVIgPSAuCiAKICMgSW5jbHVkZSBzdHVmZiBmb3VuZCBieSBjb25maWd1cmUuCi1pbmNsdWRlIC4uL2F1dG8vY29uZmlnLm1rCitpbmNsdWRlICQoUE9fQkFTRURJUikvLi4vYXV0by9jb25maWcubWsKIAogIyBHZXQgTEFOR1VBR0VTLCBNT0ZJTEVTLCBNT0NPTlZFUlRFRCBhbmQgb3RoZXJzLgotaW5jbHVkZSBNYWtlX2FsbC5tYWsKK2luY2x1ZGUgJChQT19CQVNFRElSKS9NYWtlX2FsbC5tYWsKIAogIyBOb3RlOiBqYS5zamlzLCAqLmNwMTI1MCBhbmQgemhfQ04uY3A5MzYgYXJlIG9ubHkgZm9yIE1TLVdpbmRvd3MsIHRoZXkgYXJlCiAjIG5vdCBpbnN0YWxsZWQgb24gVW5peC4KIAogUEFDS0FHRSA9IHZpbQogU0hFTEwgPSAvYmluL3NoCi1WSU0gPSAuLi92aW0KK1ZJTSA9ICQoUE9fQkFTRURJUikvLi4vdmltCiAKICMgTWFjT1Mgc2VkIGlzIGxvY2FsZSBhd2FyZSwgc2V0ICRMQU5HIHRvIGF2b2lkIHByb2JsZW1zLgogU0VEID0gTEFORz1DIHNlZApAQCAtMjYxLDEzICsyNjIsMTMgQEAKIAogJChQQUNLQUdFKS5wb3Q6ICQoUE9fSU5QVVRMSVNUKSAkKFBPX1ZJTV9JTlBVVExJU1QpCiAJIyBDb252ZXJ0IHRoZSBWaW0gc2NyaXB0cyB0byAod2hhdCBsb29rcyBsaWtlKSBKYXZhc2NyaXB0LgotCSQoVklNKSAtdSBOT05FIC0tbm90LWEtdGVybSAtUyB0b2phdmFzY3JpcHQudmltICQoUEFDS0FHRSkucG90ICQoUE9fVklNX0lOUFVUTElTVCkKKwkkKFZJTSkgLXUgTk9ORSAtLW5vdC1hLXRlcm0gLVMgJChQT19CQVNFRElSKS90b2phdmFzY3JpcHQudmltICQoUEFDS0FHRSkucG90ICQoUE9fVklNX0lOUFVUTElTVCkKIAkjIENyZWF0ZSB2aW0ucG90LgogCSQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChQQUNLQUdFKSAtLWFkZC1jb21tZW50cyBcCiAJCSQoWEdFVFRFWFRfS0VZV09SRFMpICQoUE9fSU5QVVRMSVNUKSAkKFBPX1ZJTV9KU0xJU1QpCiAJbXYgLWYgJChQQUNLQUdFKS5wbyAkKFBBQ0tBR0UpLnBvdAogCSMgRml4IFZpbSBzY3JpcHRzIG5hbWVzLCBzbyB0aGF0ICJnZiIgd29ya3MuCi0JJChWSU0pIC11IE5PTkUgLS1ub3QtYS10ZXJtIC1TIGZpeGZpbGVuYW1lcy52aW0gJChQQUNLQUdFKS5wb3QgJChQT19WSU1fSU5QVVRMSVNUKQorCSQoVklNKSAtdSBOT05FIC0tbm90LWEtdGVybSAtUyAkKFBPX0JBU0VESVIpL2ZpeGZpbGVuYW1lcy52aW0gJChQQUNLQUdFKS5wb3QgJChQT19WSU1fSU5QVVRMSVNUKQogCSMgRGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZXMuCiAJcm0gKi5qcwogCmRpZmYgLS1naXQgYS9zcmMvcG8vZml4ZmlsZW5hbWVzLnZpbSBiL3NyYy9wby9maXhmaWxlbmFtZXMudmltCmluZGV4IDA0YmMwNzkuLmM5MjgzOWUgMTAwNjQ0Ci0tLSBhL3NyYy9wby9maXhmaWxlbmFtZXMudmltCisrKyBiL3NyYy9wby9maXhmaWxlbmFtZXMudmltCkBAIC00LDcgKzQsNyBAQAogc2V0IHNob3J0bWVzcys9QQogCiBmb3IgbmFtZSBpbiBhcmd2KClbMTpdCi0gIGxldCBqc25hbWUgPSBmbmFtZW1vZGlmeShuYW1lLCAiOnQ6ciIpIC4uICIuanMiCisgIGxldCBqc25hbWUgPSBmbmFtZW1vZGlmeShuYW1lLCAiOnI6Z3M/XFx+P18/OmdzP1xcLj9fPzpncz8vP19fPzpncz9cXD9fXz8iKSAuLiAiLmpzIgogICBleGUgIiVzKyIgLi4ganNuYW1lIC4uICIrIiAuLiBzdWJzdGl0dXRlKG5hbWUsICdcXCcsICcvJywgJ2cnKSAuLiAiKyIKIGVuZGZvcgogCmRpZmYgLS1naXQgYS9zcmMvcG8vdG9qYXZhc2NyaXB0LnZpbSBiL3NyYy9wby90b2phdmFzY3JpcHQudmltCmluZGV4IDhiMGRkNzMuLjMyZWVhOWIgMTAwNjQ0Ci0tLSBhL3NyYy9wby90b2phdmFzY3JpcHQudmltCisrKyBiL3NyYy9wby90b2phdmFzY3JpcHQudmltCkBAIC0xMyw3ICsxMyw3IEBACiAgIGcvXlxzKnNldCAuKiIvcy8uKi8vCiAKICAgIiBXcml0ZSBhcyAuanMgZmlsZSwgeGdldHRleHQgcmVjb2duaXplcyB0aGVtCi0gIGV4ZSAndyEgJyAuLiBmbmFtZW1vZGlmeShuYW1lLCAiOnQ6ciIpIC4uICIuanMiCisgIGV4ZSAndyEgJyAuLiBmbmFtZW1vZGlmeShuYW1lLCAiOnI6Z3M/XFx+P18/OmdzP1xcLj9fPzpncz8vP19fPzpncz9cXD9fXz8iKSAuLiAiLmpzIgogZW5kZm9yCiAKIHF1aXQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL01ha2VfYWxsLm1hayBiL3NyYy90ZXN0ZGlyL01ha2VfYWxsLm1hawppbmRleCBlMzFkMmI1Li5hNDlmMTU4IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci9NYWtlX2FsbC5tYWsKKysrIGIvc3JjL3Rlc3RkaXIvTWFrZV9hbGwubWFrCkBAIC0xNjEsNiArMTYxLDkgQEAKIAl0ZXN0X2Z1bmN0aW9uX2xpc3RzIFwKIAl0ZXN0X2dhIFwKIAl0ZXN0X2dldGN3ZCBcCisJdGVzdF9nZXR0ZXh0IFwKKwl0ZXN0X2dldHRleHRfY3AxMjUxIFwKKwl0ZXN0X2dldHRleHRfdXRmOCBcCiAJdGVzdF9nZXR2YXIgXAogCXRlc3RfZ2YgXAogCXRlc3RfZ2xvYjJyZWdwYXQgXApAQCAtNDIwLDYgKzQyMyw5IEBACiAJdGVzdF9mdW5jdGlvbnMucmVzIFwKIAl0ZXN0X2Z1bmN0aW9uX2xpc3RzLnJlcyBcCiAJdGVzdF9nZXRjd2QucmVzIFwKKwl0ZXN0X2dldHRleHQucmVzIFwKKwl0ZXN0X2dldHRleHRfY3AxMjUxLnJlcyBcCisJdGVzdF9nZXR0ZXh0X3V0ZjgucmVzIFwKIAl0ZXN0X2dldHZhci5yZXMgXAogCXRlc3RfZ2YucmVzIFwKIAl0ZXN0X2duLnJlcyBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci9ydV9SVS9MQ19NRVNTQUdFUy9fX1BBQ0tBR0VfXy5tbyBiL3NyYy90ZXN0ZGlyL3J1X1JVL0xDX01FU1NBR0VTL19fUEFDS0FHRV9fLm1vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMGViYTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdGRpci9ydV9SVS9MQ19NRVNTQUdFUy9fX1BBQ0tBR0VfXy5tbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2Z1bmN0aW9ucy52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2Z1bmN0aW9ucy52aW0KaW5kZXggYmE4ZjE4Zi4uOGU5NzNmNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9mdW5jdGlvbnMudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfZnVuY3Rpb25zLnZpbQpAQCAtMzg2NSwxMSArMzg2NSw2IEBACiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdtc2cnLCBIYXNEZWZhdWx0KCkpCiBlbmRmdW5jCiAKLSIgVGVzdCBmb3IgZ2V0dGV4dCgpCi1mdW5jIFRlc3RfZ2V0dGV4dCgpCi0gIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGdldHRleHQoMSknLCAnRTExNzQ6JykKLWVuZGZ1bmMKLQogZnVuYyBUZXN0X2J1aWx0aW5fY2hlY2soKQogICBjYWxsIGFzc2VydF9mYWlscygnbGV0IGc6WyJ0cmltIl0gPSB7eCAtPiAiICIgLi4geH0nLCAnRTcwNDonKQogICBjYWxsIGFzc2VydF9mYWlscygnbGV0IGc6LnRyaW0gPSB7eCAtPiAiICIgLi4geH0nLCAnRTcwNDonKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9nZXR0ZXh0LnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2V0dGV4dC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1YWFmZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2V0dGV4dC52aW0KQEAgLTAsMCArMSwxNiBAQAorc291cmNlIGNoZWNrLnZpbQorCisiIFRlc3QgZm9yIGdldHRleHQoKQorZnVuYyBUZXN0X2dldHRleHQoKQorICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBiaW5kdGV4dGRvbWFpbigidGVzdCIpJywgJ0UxMTk6JykKKyAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgYmluZHRleHRkb21haW4oInZpbSIsICJ0ZXN0IiknLCAnRTQ3NTonKQorCisgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGdldHRleHQoMSknLCAnRTExNzQ6JykKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ3h4eFRFU1R4eHgnLCBnZXR0ZXh0KCJ4eHhURVNUeHh4IikpCisKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ3h4eFRFU1R4eHgnLCBnZXR0ZXh0KCJ4eHhURVNUeHh4IiwgInZpbSIpKQorICBjYWxsIGFzc2VydF9lcXVhbCgneHh4VEVTVHh4eCcsIGdldHRleHQoInh4eFRFU1R4eHgiLCAiX19QQUNLQUdFX18iKSkKKyAgY2FsbCBhc3NlcnRfZXF1YWwoJ0VSUk9SOiAnLCBnZXR0ZXh0KCJFUlJPUjogIiwgIl9fUEFDS0FHRV9fIikpCitlbmRmdW5jCisKKyIgdmltOiBzaGlmdHdpZHRoPTIgc3RzPTIgZXhwYW5kdGFiCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2dldHRleHRfY3AxMjUxLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2V0dGV4dF9jcDEyNTEudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMDJhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdGRpci90ZXN0X2dldHRleHRfY3AxMjUxLnZpbQpAQCAtMCwwICsxLDIyIEBACitzb3VyY2UgY2hlY2sudmltCisKKyIgVGVzdCBmb3IgZ2V0dGV4dCgpCitmdW5jIFRlc3RfZ2V0dGV4dCgpCisgIHNldCBlbmNvZGluZz1jcDEyNTEKKyAgY2FsbCBiaW5kdGV4dGRvbWFpbigiX19QQUNLQUdFX18iLCBnZXRjd2QoKSkKKyAgdHJ5CisgICAgbGFuZ3VhZ2UgcnVfUlUKKyAgICBjYWxsIGFzc2VydF9lcXVhbCgnztjIwcrAOiAnLCBnZXR0ZXh0KCJFUlJPUjogIiwgIl9fUEFDS0FHRV9fIikpCisgIGNhdGNoIC9eVmltXCUoKFxhXCspXClcPTpFMTk3Oi8KKyAgICB0aHJvdyAiU2tpcHBlZDogbm90IHBvc3NpYmxlIHRvIHNldCBsb2NhbGUgdG8gcnUgKG1pc3Npbmc/KSIKKyAgZW5kdHJ5CisgIHRyeQorICAgIGxhbmd1YWdlIGVuX0dCLlVURi04CisgICAgY2FsbCBhc3NlcnRfZXF1YWwoJ0VSUk9SOiAnLCBnZXR0ZXh0KCJFUlJPUjogIiwgIl9fUEFDS0FHRV9fIikpCisgIGNhdGNoIC9eVmltXCUoKFxhXCspXClcPTpFMTk3Oi8KKyAgICB0aHJvdyAiU2tpcHBlZDogbm90IHBvc3NpYmxlIHRvIHNldCBsb2NhbGUgdG8gZW4gKG1pc3Npbmc/KSIKKyAgZW5kdHJ5CisgIHNldCBlbmNvZGluZyYKK2VuZGZ1bmMKKworIiB2aW06IHNoaWZ0d2lkdGg9MiBzdHM9MiBleHBhbmR0YWIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfZ2V0dGV4dF91dGY4LnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2V0dGV4dF91dGY4LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzc3MTBlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9nZXR0ZXh0X3V0ZjgudmltCkBAIC0wLDAgKzEsMjIgQEAKK3NvdXJjZSBjaGVjay52aW0KKworIiBUZXN0IGZvciBnZXR0ZXh0KCkKK2Z1bmMgVGVzdF9nZXR0ZXh0KCkKKyAgc2V0IGVuY29kaW5nPXV0Zi04CisgIGNhbGwgYmluZHRleHRkb21haW4oIl9fUEFDS0FHRV9fIiwgZ2V0Y3dkKCkpCisgIHRyeQorICAgIGxhbmd1YWdlIHJ1X1JVCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoJ9Ce0KjQmNCR0JrQkDogJywgZ2V0dGV4dCgiRVJST1I6ICIsICJfX1BBQ0tBR0VfXyIpKQorICBjYXRjaCAvXlZpbVwlKChcYVwrKVwpXD06RTE5NzovCisgICAgdGhyb3cgIlNraXBwZWQ6IG5vdCBwb3NzaWJsZSB0byBzZXQgbG9jYWxlIHRvIHJ1IChtaXNzaW5nPykiCisgIGVuZHRyeQorICB0cnkKKyAgICBsYW5ndWFnZSBlbl9HQi5VVEYtOAorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdFUlJPUjogJywgZ2V0dGV4dCgiRVJST1I6ICIsICJfX1BBQ0tBR0VfXyIpKQorICBjYXRjaCAvXlZpbVwlKChcYVwrKVwpXD06RTE5NzovCisgICAgdGhyb3cgIlNraXBwZWQ6IG5vdCBwb3NzaWJsZSB0byBzZXQgbG9jYWxlIHRvIGVuIChtaXNzaW5nPykiCisgIGVuZHRyeQorICBzZXQgZW5jb2RpbmcmCitlbmRmdW5jCisKKyIgdmltOiBzaGlmdHdpZHRoPTIgc3RzPTIgZXhwYW5kdGFiCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5jIGIvc3JjL3ZlcnNpb24uYwppbmRleCBmOWMyOTgzLi41ZjlmMmIwIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5jCisrKyBiL3NyYy92ZXJzaW9uLmMKQEAgLTcwNSw2ICs3MDUsOCBAQAogc3RhdGljIGludCBpbmNsdWRlZF9wYXRjaGVzW10gPQogeyAgIC8qIEFkZCBuZXcgcGF0Y2ggbnVtYmVyIGJlbG93IHRoaXMgbGluZSAqLwogLyoqLworICAgIDUwOSwKKy8qKi8KICAgICA1MDgsCiAvKiovCiAgICAgNTA3LAo=