ZGlmZiAtLWdpdCBhL3NyYy9JTlNUQUxMa2RlLnR4dCBiL3NyYy9JTlNUQUxMa2RlLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJkNGExMi4uMDAwMDAwMAotLS0gYS9zcmMvSU5TVEFMTGtkZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotVmltIHdpdGggS0RFOiBrdmltCi0KLU9OIFRIRSBJTlRFUk5FVAotPT09PT09PT09PT09PT09Ci0KLQlUaGUgaG9tZXBhZ2UgaXMgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcva3ZpbS8KLQlUaGUgY29yZSBpcyBidWlsZCBhcm91bmQgdGhlIG9mZmljaWFsIHZpbS02LnggcmVsZWFzZXMgYW5kIHBhdGNoZXMKLQotCUtWaW0gQ1ZTIGlzIGZ1bGwgYW5kIGRvZXMgbm90IG5lZWQgZXh0cmEgcGFja2FnZS4gSnVzdCBkb3dubG9hZCBhbmQgY29tcGlsZSBpdC4KLQotSU5TVEFMTCA6Ci09PT09PT09PT0KLQlXZSBub3cgdXNlIFZpbSdzIGNvbmZpZ3VyZSB0byBjb25maWd1cmUsIGNvbXBpbGUgYW5kIGluc3RhbGwgS1ZpbS4KLQotCURvbid0IGZvcmdldCwgdGhhdCB5b3UgbmVlZCB0byBoYXZlIFFUIGFuZCBLREUgaGVhZGVycyBhbmQgdG9vbHMgaW5zdGFsbGVkLCBvdGhlcndpc2UgaXQgd29uJ3QKLQl3b3JrICEgKHRoZXNlIGNhbiBjb21tb25seSBiZSBmb3VuZCBpbiBrZGUtZGV2ZWwvcXQtZGV2ZWwgcGFja2FnZXMpCi0JCi0JRW50ZXIgdGhlICdzcmMnIGRpcmVjdG9yeSBhbmQgY29uZmlndXJlIGl0IHlvdXIgd2F5ICh5b3UgbmVlZCB0byBhZGQgYXQgbGVhc3QgdGhlc2UgZmxhZ3MgdG8gdGhlIGNvbmZpZ3VyZSBjb21tYW5kIGxpbmUgOiAtLWVuYWJsZS1ndWk9a2RlIC0td2l0aC1xdC1kaXI9JFFURElSICkgdGhlbiBtYWtlIGFuZCBtYWtlIGluc3RhbGwgYXMgcm9vdC4KLQlXZSBhZGRlZCB0byBjb25maWd1cmUgc29tZSBvcHRpb25zIGZvciBLREUgLyBRVCBkZXRlY3Rpb24sIGl0IHdpbGwgZm9yIGV4YW1wbGUsIGZpbmQgd2hldGhlciB5b3UgdXNlIEtERSAyLnggb3IgS0RFIDMueCBhdXRvbWF0aWNhbGx5LiBGb3Igbm93LCBRVCBpcyBfbm90XyBhdXRvZGV0ZWN0ZWQuIEkgaG9wZSB0byBmaXggdGhpcyBzb29uLgotCUZyb20gS1ZpbSA2LjEsIHlvdSBjYW4gbm93IHVzZSBhIEtERSB0b29sYmFyIGluc3RlYWQgb2YgVmltJ3MgVG9vbGJhciwgdG8gZW5hYmxlIGl0LCB1c2UgdGhlIC0tZW5hYmxlLWtkZS10b29sYmFyIGNvbmZpZ3VyZSBmbGFnLgotCi0KLT0+IElmIGl0IGZhaWxzIDogKHllcyBpdCBzdGlsbCBjYW4sIHRoZSBjb25maWd1cmUgc2NyaXB0IGkgd3JvdGUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBwcm9iYWJseSBub3QKLXBlcmZlY3QgO3ApCi0Jb3IgJ2hvdyB0byBtYWtlIGEgYnVnIHJlcG9ydCcgOgotCi0JSW4gc29tZSBjYXNlcywgSSBjYW4gaW1hZ2luZSBpdCB3aWxsIGZhaWwsIGlmIHRoaXMgaGFwcGVucyB0aGVuIHNlbmQgdG8gbWFyY2hhbmRAa2RlLm9yZyA6Ci0JCS0+YXV0by9jb25maWcubWsgKGltcG9ydGFudCBvbmUpCi0JCS0+eW91ciBjb25maWd1cmUgY29tbWFuZCBsaW5lIHdpdGggeW91ciBvcHRpb25zCi0JCS0+eW91ciBwYXRocyA6IHdoZXJlIEtERSBpcyAod2hpY2ggdmVyc2lvbiA/KSwgd2hlcmUgUVQgaXMgKHZlcnNpb24gPyksIGFuZCBmaW5kIHdoZXJlIHlvdXIKLQkJCWxpYnMgYXJlICh5b3VyIGtkZWxpYnMsIHlvdXIgUVQgbGlicyBhbmQgUVQgaGVhZGVycykKLQkJLT50aGUgb3V0cHV0IG9mICdrZGUtY29uZmlnIC0tdmVyc2lvbicKLQkJLT55b3VyIE9TIC8gTGludXggRGlzdHJpYnV0aW9uIHZlcnNpb24KLQkJLT5pbiBjYXNlIG9mIGEgY29tcGlsYXRpb24gZXJyb3IgOiB0aGUgZnVsbCBlcnJvciBvdXRwdXQuCi0JCS0+dGhlIGNvbXBpbGVyIHVzZWQgKGdjYyAyLjk1LCAyLjk2LCAzLjEgLi4uKQotCQktPmFueSBzdHVmZiB5b3UgdGhpbmsgY291bGQgYmUgdXNlZnVsbCB0byBtZSA6KQotCi0JVGhhbmtzIGZvciBnaXZpbmcgS1ZpbSBhIHRyeSwgd2UgaG9wZSB5b3UnbGwgZW5qb3kgaXQgIQotCi0KLURFVkVMT1BNRU5UIFNUQVRFIEFORCBLTk9XTiBCVUdTOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1Nb3N0IFZpbSBHVUkgZmVhdHVyZXMgYXJlIG5vdyBpbXBsZW1lbnRlZCwgb25seSBtdWx0aWJ5dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotV2UgYXJlIHdvcmtpbmcgb24gdGhpcyBhbmQgdGhpcyBpcyBvdXIgcHJpbWFyeSBnb2FsIGFmdGVyIEtWaW0gNi4xIHJlbGVhc2UuCi1XZSBob3BlIHRvIGdldCBpdCB0byB3b3JrIGJlZm9yZSB3ZSBpbmNsdWRlIEtWaW0gaW50byB0aGUgY29yZSBWaW0gd2hpY2ggd2Ugd2FudCB0bwotZG8gYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHllYXIgMjAwMiBpZiBwb3NzaWJsZS4KLQotV2Ugd291bGQgYmUgaGFwcHkgdG8gaGVhciBmcm9tIHlvdSBpZiB5b3UndmUgdHJpZWQga3ZpbS4gVGVsbCB1cwotd2hhdCBpcyBtaXNzaW5nLCB3aGF0IHlvdSBsaWtlIGFuZCBkb24ndCBsaWtlLCBhbmQgd2hhdCB5b3Ugd2FudC4KLQotQXMgcGVvcGxlIGhhdmUgd2lzaGVkIGl0IGZvciBhIHdoaWxlLCBQaGlsaXBwZSBkZXZlbG9wcGVkIGEgY29tcG9uZW50IGZvciBWaW0uCi1UaGUgY29tcG9uZW50IGlzIG5vdyBmdWxseSB1c2FibGUgd2l0aCBHVmltIGFuZCBLVmltIGFuZCBjYW4gYmUgZm91bmQgb24gS0RFJ3MgQ1ZTCi1pbiB0aGUga2RlZXh0cmFnZWFyLTEgbW9kdWxlLgotCi1TT1VSQ0UgQUNDRVNTOgotPT09PT09PT09PT09PT0KLVJlbGVhc2VzIGFuZCBtYXliZSBzbmFwc2hvdHMgYXJlL3dpbGwgYmUgZm91bmQgb24gaHR0cDovL2ZyZWVoYWNrZXJzLm9yZy9rdmltLwotVGhlIENWUyBpcyBDVlNST09UPTpwc2VydmVyOmFub255bW91c0BjdnMudHV4ZmFtaWx5Lm9yZzovY3Zzcm9vdC9rdmltCi0od2l0aCBubyBwYXNzd29yZCkKLVlvdSdsbCBmaW5kIHRoZXJlIGEgZnVsbCB2aW0gNi54IHBhY2thZ2UgKHdpdGggcnVudGltZSBmaWxlcyBpbmNsdWRlZCkuCi0KLU1BSUxJTkcgTElTVDoKLT09PT09PT09PT09PT0KLUFzIHdlIHJlbGVhc2VkIEtWaW0gNi4wLCB3ZSBjcmVhdGVkIGEgcHVibGljIG1haWxpbmcgbGlzdCwgZm9yIGZlZWRiYWNrLAotdXNlciBoZWxwIGFuZCBkZXZlbG9wbWVudCByZWxhdGVkIGRpc2N1c3Npb25zIDogImt2aW0tZGV2QGZyZWVudXgub3JnIiwKLSB0byBzdWJzY3JpYmUgc2VuZCBhIG1haWwgdG8gImt2aW0tZGV2LXN1YnNjcmliZUBmcmVlbnV4Lm9yZyIgd2l0aAotInN1YnNjcmliZSIgYXMgdGhlIHN1YmplY3QgYW5kIGp1c3QgcmVwbHkgdG8gdGhlIG1haWwgeW91IHdpbGwgcmVjZWl2ZS4KLShzb3JyeSB0aGUgYWRtaW4gbWVzc2FnZXMgYXJlIGluIGZyZW5jaCwgYnV0IHRoZSBsaXN0IGRpc2N1c3Npb25zIGFyZSBpbgotZW5nbGlzaCkKLQotVEhBTktTIDoKLT09PT09PT09Ci1UbyBhbGwgdGhlIGd1eXMgb24gI2tkZUBvcG4gKE5laWwsIE1hbHRlIGFuZCBtYW55IG90aGVyKSBhbmQgdG8gYWxsIHRoZSBwZW9wbGUgd2hvCi10cmllZCwgZGVidWdnZWQsIGNvbXBpbGVkIGFuZCByZWNvbXBpbGVkIGFnYWluIEtWaW0gdG8gYnJpbmcgbm93IGEgbXVjaCBtb3JlIHJvYnVzdCBLVmltCi1hbmQgb2YgY291cnNlIHRvIGFsbCBvZiB5b3Ugd2hvIHNlbmQgcGF0Y2hzIGFuZCBjb21tZW50cyA6KQotQW5kIG9mIGNvdXJzZSB0byBWaW0gQXV0aG9ycyA6KQotCi1DVVJSRU5UIE1BSU5UQUlORVI6Ci09PT09PT09PT09PT09PT09PT09Ci0JTWlja2FlbCBNYXJjaGFuZCA8bWFyY2hhbmRAa2RlLm9yZz4KLQkKLURFVkVMT1BFUlMgKENWUyBhY2NvdW50cyk6Ci09PT09PT09PT09Ci0JTWlja2FlbCBNYXJjaGFuZCA8bWFyY2hhbmRAa2RlLm9yZz4gKG1hcmNoYW5kKQotCU1hcmsgV2VzdGNvdHQgPG1hcmtAaG91c2VvZmZpc2gub3JnPiBRdG9waWEgR1VJIChtYXJrKQotCVRob21hcyBDYXByaWNlbGxpIDxvcnplbEBrZGUub3JnPiBJbml0aWFsIEtWaW0gYXV0aG9yIChvcnplbCkKLQlQaGlsaXBwZSBGcmVteSA8cGZyZW15QGNoZXouY29tPiBJbml0aWFsIEtWaW0gYXV0aG9yIChwZnJlbXkpCi0KLUFVVEhPUlMKLT09PT09PT09PQotCVRob21hcyBDYXByaWNlbGxpIDxvcnplbEBrZGUub3JnPiBJbml0aWFsIEtWaW0gYXV0aG9yCi0JUGhpbGlwcGUgRnJlbXkgPHBmcmVteUBjaGV6LmNvbT4gSW5pdGlhbCBLVmltIGF1dGhvcgotCQotQ09OVFJJQlVUT1JTCi09PT09PT09PT09PT0KLQlEYXZpZCBTcGVuY2VyIFR5cmVlIDxjZWxlckBzY3J5cHQubmV0PgotCVZpbmNlIE5lZ3JpIDx2aW5jZUBidWxib3VzLmZyZWVzZXJ2ZS5jby51az4gQW50aUFsaWFzaW5nIHN1cHBvcnQKLQlLYWlsYXNoIFNldGh1cmFtYW4gKGhzYWxpYWssICNuZXRic2RAb3BuKSBOZXRCU0QgY29uZmlndXJhdGlvbi9jb21waWxhdGlvbiBmaXhlcwotCVNvbWUgb3RoZXIsIHNlZSB0aGUgQWJvdXQgS1ZpbSBkaWFsb2cgYm94IGluIEtWaW0uLi4KLQotCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9tcHcubWFrIGIvc3JjL01ha2VfbXB3Lm1hawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk1NWE2MC4uMDAwMDAwMAotLS0gYS9zcmMvTWFrZV9tcHcubWFrCisrKyAvZGV2L251bGwKQEAgLTEsNDM2OSArMCwwIEBACi0jICAgRmlsZTogICAgICAgVkltLm1ha2UKLSMgICBUYXJnZXQ6ICAgICBWSW0KLSMgICBDcmVhdGVkOiAgICBTdW5kYXksIERlY2VtYmVyIDI5LCAyMDAwIDA5OjU1OjE0IFBNCi0KLQotTUFLRUZJTEUJPSBWSW0ubWFrZQotpU1vbmRvQnVpbGSlCT0ge01BS0VGSUxFfSAgIyBNYWtlIGJsYW5rIHRvIGF2b2lkIHJlYnVpbGRzIHdoZW4gbWFrZWZpbGUgaXMgbW9kaWZpZWQKLQotT2JqRGlyCQk9IDpvYmo6Ci1JbmNsdWRlcwk9ICC2Ci0JCQkJICAtaSA6c3JjOnByb3RvOgotQ0ZsYWdzCQk9IC13IDIsMzUgLWVudW0gaW50Ci1TeW0tUFBDCQk9IC1zeW0gb2ZmCi0KLVBQQ0NPcHRpb25zCT0ge0luY2x1ZGVzfSB7Q0ZsYWdzfSB7U3ltLVBQQ30KLQotCi0jIyMgU291cmNlIEZpbGVzICMjIwotCi1TcmNGaWxlcwk9ICC2Ci0JCQkJICA6c3JjOmJ1ZmZlci5jILYKLQkJCQkgIDpzcmM6Y2hhcnNldC5jILYKLQkJCQkgIDpzcmM6ZGlmZi5jILYKLQkJCQkgIDpzcmM6ZGlncmFwaC5jILYKLQkJCQkgIDpzcmM6ZWRpdC5jILYKLQkJCQkgIDpzcmM6ZXZhbC5jILYKLQkJCQkgIDpzcmM6ZXhfY21kcy5jILYKLQkJCQkgIDpzcmM6ZXhfY21kczIuYyC2Ci0JCQkJICA6c3JjOmV4X2RvY21kLmMgtgotCQkJCSAgOnNyYzpleF9ldmFsLmMgtgotCQkJCSAgOnNyYzpleF9nZXRsbi5jILYKLQkJCQkgIDpzcmM6ZmlsZWlvLmMgtgotCQkJCSAgOnNyYzpmb2xkLmMgtgotCQkJCSAgOnNyYzpnZXRjaGFyLmMgtgotCQkJCSAgOnNyYzpoYXJkY29weS5jILYKLQkJCQkgIDpzcmM6aGFzaHRhYmxlLmMgtgotCQkJCSAgOnNyYzpndWkuYyC2Ci0JCQkJICA6c3JjOmd1aV9tYWMuYyC2Ci0JCQkJICA6c3JjOmlmX2NzY29wZS5jILYKLQkJCQkgIDpzcmM6bWFpbi5jILYKLQkJCQkgIDpzcmM6bWFyay5jILYKLQkJCQkgIDpzcmM6bWVtZmlsZS5jILYKLQkJCQkgIDpzcmM6bWVtbGluZS5jILYKLQkJCQkgIDpzcmM6bWVudS5jILYKLQkJCQkgIDpzcmM6bWVzc2FnZS5jILYKLQkJCQkgIDpzcmM6bWlzYzEuYyC2Ci0JCQkJICA6c3JjOm1pc2MyLmMgtgotCQkJCSAgOnNyYzptb3ZlLmMgtgotCQkJCSAgOnNyYzptdWx0aWJ5dGUuYyC2Ci0JCQkJICA6c3JjOm5vcm1hbC5jILYKLQkJCQkgIDpzcmM6b3BzLmMgtgotCQkJCSAgOnNyYzpvcHRpb24uYyC2Ci0JCQkJICA6c3JjOm9zX21hYy5jILYKLQkJCQkgIDpzcmM6cHR5LmMgtgotCQkJCSAgOnNyYzpwb3B1cG1lbnUuYyC2Ci0JCQkJICA6c3JjOnF1aWNrZml4LmMgtgotCQkJCSAgOnNyYzpyZWdleHAuYyC2Ci0JCQkJICA6c3JjOnNjcmVlbi5jILYKLQkJCQkgIDpzcmM6c2VhcmNoLmMgtgotCQkJCSAgOnNyYzpzcGVsbC5jILYKLQkJCQkgIDpzcmM6c3ludGF4LmMgtgotCQkJCSAgOnNyYzp0YWcuYyC2Ci0JCQkJICA6c3JjOnRlcm0uYyC2Ci0JCQkJICA6c3JjOnRlcm1saWIuYyC2Ci0JCQkJICA6c3JjOnVpLmMgtgotCQkJCSAgOnNyYzp1bmRvLmMgtgotCQkJCSAgOnNyYzp2ZXJzaW9uLmMgtgotCQkJCSAgOnNyYzp3aW5kb3cuYyC2Ci0JCQkJICA6c3JjOndzZGVidWcuYwotCi0KLSMjIyBPYmplY3QgRmlsZXMgIyMjCi0KLU9iakZpbGVzLVBQQyAgICA9ICC2Ci0JCQkJICAie09iakRpcn1idWZmZXIuYy54IiC2Ci0JCQkJICAie09iakRpcn1jaGFyc2V0LmMueCIgtgotCQkJCSAgIntPYmpEaXJ9ZGlmZi5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWRpZ3JhcGguYy54IiC2Ci0JCQkJICAie09iakRpcn1lZGl0LmMueCIgtgotCQkJCSAgIntPYmpEaXJ9ZXZhbC5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWV4X2NtZHMuYy54IiC2Ci0JCQkJICAie09iakRpcn1leF9jbWRzMi5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWV4X2RvY21kLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9ZXhfZXZhbC5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWV4X2dldGxuLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9ZmlsZWlvLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9Zm9sZC5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWdldGNoYXIuYy54IiC2Ci0JCQkJICAie09iakRpcn1oYXJkY29weS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWhhc2h0YWJsZS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWd1aS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfWd1aV9tYWMuYy54IiC2Ci0JCQkJICAie09iakRpcn1pZl9jc2NvcGUuYy54IiC2Ci0JCQkJICAie09iakRpcn1tYWluLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9bWFyay5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW1lbWZpbGUuYy54IiC2Ci0JCQkJICAie09iakRpcn1tZW1saW5lLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9bWVudS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW1lc3NhZ2UuYy54IiC2Ci0JCQkJICAie09iakRpcn1taXNjMS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW1pc2MyLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9bW92ZS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW11bHRpYnl0ZS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW5vcm1hbC5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW9wcy5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW9wdGlvbi5jLngiILYKLQkJCQkgICJ7T2JqRGlyfW9zX21hYy5jLngiILYKLQkJCQkgICJ7T2JqRGlyfXB0eS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfXBvcHVwbWVudS5jLngiILYKLQkJCQkgICJ7T2JqRGlyfXF1aWNrZml4LmMueCIgtgotCQkJCSAgIntPYmpEaXJ9cmVnZXhwLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9c2NyZWVuLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9c2VhcmNoLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9c3BlbGwuYy54IiC2Ci0JCQkJICAie09iakRpcn1zeW50YXguYy54IiC2Ci0JCQkJICAie09iakRpcn10YWcuYy54IiC2Ci0JCQkJICAie09iakRpcn10ZXJtLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9dGVybWxpYi5jLngiILYKLQkJCQkgICJ7T2JqRGlyfXVpLmMueCIgtgotCQkJCSAgIntPYmpEaXJ9dW5kby5jLngiILYKLQkJCQkgICJ7T2JqRGlyfXZlcnNpb24uYy54IiC2Ci0JCQkJICAie09iakRpcn13aW5kb3cuYy54IiC2Ci0JCQkJICAie09iakRpcn13c2RlYnVnLmMueCIKLQotCi0jIyMgTGlicmFyaWVzICMjIwotCi1MaWJGaWxlcy1QUEMgICAgPSAgtgotCQkJCSAgIntTaGFyZWRMaWJyYXJpZXN9SW50ZXJmYWNlTGliIiC2Ci0JCQkJICAie1NoYXJlZExpYnJhcmllc31NYXRoTGliIiC2Ci0JCQkJICAie1NoYXJlZExpYnJhcmllc31TdGRDTGliIiC2Ci0JCQkJICAie1BQQ0xpYnJhcmllc31TdGRDUnVudGltZS5vIiC2Ci0JCQkJICAie1BQQ0xpYnJhcmllc31QUENTdGRDTGliLm8iILYKLQkJCQkgICJ7UFBDTGlicmFyaWVzfVBQQ0NSdW50aW1lLm8iILYKLQkJCQkgICJ7UFBDTGlicmFyaWVzfVBQQ1Rvb2xMaWJzLm8iCi0KLQotIyMjIERlZmF1bHQgUnVsZXMgIyMjCi0KLS5jLnggIMQgIC5jICB7pU1vbmRvQnVpbGSlfQotCXtQUENDfSB7ZGVwRGlyfXtkZWZhdWx0fS5jIC1vIHt0YXJnRGlyfXtkZWZhdWx0fS5jLngge1BQQ0NPcHRpb25zfQotCi0KLSMjIyBCdWlsZCBSdWxlcyAjIyMKLQotVkltICDExCAge09iakZpbGVzLVBQQ30ge0xpYkZpbGVzLVBQQ30ge6VNb25kb0J1aWxkpX0KLQlQUENMaW5rILYKLQkJLW8ge1Rhcmd9ILYKLQkJe09iakZpbGVzLVBQQ30gtgotCQl7TGliRmlsZXMtUFBDfSC2Ci0JCXtTeW0tUFBDfSC2Ci0JCS1tZiAtZCC2Ci0JCS10ICdBUFBMJyC2Ci0JCS1jICdWSU0hJwotCi0KLQotIyMjIFJlcXVpcmVkIERlcGVuZGVuY2llcyAjIyMKLQotIntPYmpEaXJ9YnVmZmVyLmMueCIgIMQgIDpzcmM6YnVmZmVyLmMKLSJ7T2JqRGlyfWNoYXJzZXQuYy54IiAgxCAgOnNyYzpjaGFyc2V0LmMKLSJ7T2JqRGlyfWRpZmYuYy54IiAgxCAgOnNyYzpkaWZmLmMKLSJ7T2JqRGlyfWRpZ3JhcGguYy54IiAgxCAgOnNyYzpkaWdyYXBoLmMKLSJ7T2JqRGlyfWVkaXQuYy54IiAgxCAgOnNyYzplZGl0LmMKLSJ7T2JqRGlyfWV2YWwuYy54IiAgxCAgOnNyYzpldmFsLmMKLSJ7T2JqRGlyfWV4X2NtZHMuYy54IiAgxCAgOnNyYzpleF9jbWRzLmMKLSJ7T2JqRGlyfWV4X2NtZHMyLmMueCIgIMQgIDpzcmM6ZXhfY21kczIuYwotIntPYmpEaXJ9ZXhfZG9jbWQuYy54IiAgxCAgOnNyYzpleF9kb2NtZC5jCi0ie09iakRpcn1leF9ldmFsLmMueCIgIMQgIDpzcmM6ZXhfZXZhbC5jCi0ie09iakRpcn1leF9nZXRsbi5jLngiICDEICA6c3JjOmV4X2dldGxuLmMKLSJ7T2JqRGlyfWZpbGVpby5jLngiICDEICA6c3JjOmZpbGVpby5jCi0ie09iakRpcn1mb2xkLmMueCIgIMQgIDpzcmM6Zm9sZC5jCi0ie09iakRpcn1nZXRjaGFyLmMueCIgIMQgIDpzcmM6Z2V0Y2hhci5jCi0ie09iakRpcn1oYXJkY29weS5jLngiICDEICA6c3JjOmhhcmRjb3B5LmMKLSJ7T2JqRGlyfWhhc2h0YWJsZS5jLngiICDEICA6c3JjOmhhc2h0YWJsZS5jCi0ie09iakRpcn1ndWkuYy54IiAgxCAgOnNyYzpndWkuYwotIntPYmpEaXJ9Z3VpX21hYy5jLngiICDEICA6c3JjOmd1aV9tYWMuYwotIntPYmpEaXJ9aWZfY3Njb3BlLmMueCIgIMQgIDpzcmM6aWZfY3Njb3BlLmMKLSJ7T2JqRGlyfW1haW4uYy54IiAgxCAgOnNyYzptYWluLmMKLSJ7T2JqRGlyfW1hcmsuYy54IiAgxCAgOnNyYzptYXJrLmMKLSJ7T2JqRGlyfW1lbWZpbGUuYy54IiAgxCAgOnNyYzptZW1maWxlLmMKLSJ7T2JqRGlyfW1lbWxpbmUuYy54IiAgxCAgOnNyYzptZW1saW5lLmMKLSJ7T2JqRGlyfW1lbnUuYy54IiAgxCAgOnNyYzptZW51LmMKLSJ7T2JqRGlyfW1lc3NhZ2UuYy54IiAgxCAgOnNyYzptZXNzYWdlLmMKLSJ7T2JqRGlyfW1pc2MxLmMueCIgIMQgIDpzcmM6bWlzYzEuYwotIntPYmpEaXJ9bWlzYzIuYy54IiAgxCAgOnNyYzptaXNjMi5jCi0ie09iakRpcn1tb3ZlLmMueCIgIMQgIDpzcmM6bW92ZS5jCi0ie09iakRpcn1tdWx0aWJ5dGUuYy54IiAgxCAgOnNyYzptdWx0aWJ5dGUuYwotIntPYmpEaXJ9bm9ybWFsLmMueCIgIMQgIDpzcmM6bm9ybWFsLmMKLSJ7T2JqRGlyfW9wcy5jLngiICDEICA6c3JjOm9wcy5jCi0ie09iakRpcn1vcHRpb24uYy54IiAgxCAgOnNyYzpvcHRpb24uYwotIntPYmpEaXJ9b3NfbWFjLmMueCIgIMQgIDpzcmM6b3NfbWFjLmMKLSJ7T2JqRGlyfXB0eS5jLngiICDEICA6c3JjOnB0eS5jCi0ie09iakRpcn1wb3B1cG1lbnUuYy54IiAgxCAgOnNyYzpwb3B1cG1lbnUuYwotIntPYmpEaXJ9cXVpY2tmaXguYy54IiAgxCAgOnNyYzpxdWlja2ZpeC5jCi0ie09iakRpcn1yZWdleHAuYy54IiAgxCAgOnNyYzpyZWdleHAuYwotIntPYmpEaXJ9c2NyZWVuLmMueCIgIMQgIDpzcmM6c2NyZWVuLmMKLSJ7T2JqRGlyfXNlYXJjaC5jLngiICDEICA6c3JjOnNlYXJjaC5jCi0ie09iakRpcn1zcGVsbC5jLngiICDEICA6c3JjOnNwZWxsLmMKLSJ7T2JqRGlyfXN5bnRheC5jLngiICDEICA6c3JjOnN5bnRheC5jCi0ie09iakRpcn10YWcuYy54IiAgxCAgOnNyYzp0YWcuYwotIntPYmpEaXJ9dGVybS5jLngiICDEICA6c3JjOnRlcm0uYwotIntPYmpEaXJ9dGVybWxpYi5jLngiICDEICA6c3JjOnRlcm1saWIuYwotIntPYmpEaXJ9dWkuYy54IiAgxCAgOnNyYzp1aS5jCi0ie09iakRpcn11bmRvLmMueCIgIMQgIDpzcmM6dW5kby5jCi0ie09iakRpcn12ZXJzaW9uLmMueCIgIMQgIDpzcmM6dmVyc2lvbi5jCi0ie09iakRpcn13aW5kb3cuYy54IiAgxCAgOnNyYzp3aW5kb3cuYwotIntPYmpEaXJ9d3NkZWJ1Zy5jLngiICDEICA6c3JjOndzZGVidWcuYwotCi0KLSMjIyBPcHRpb25hbCBEZXBlbmRlbmNpZXMgIyMjCi0jIyMgQnVpbGQgdGhpcyB0YXJnZXQgdG8gZ2VuZXJhdGUgImluY2x1ZGUgZmlsZSIgZGVwZW5kZW5jaWVzLiAjIyMKLQotRGVwZW5kZW5jaWVzICDEICAkT3V0T2ZEYXRlCi0JTWFrZURlcGVuZCC2Ci0JCS1hcHBlbmQge01BS0VGSUxFfSC2Ci0JCS1pZ25vcmUgIntDSW5jbHVkZXN9IiC2Ci0JCS1vYmpkaXIgIntPYmpEaXJ9IiC2Ci0JCS1vYmpleHQgLnggtgotCQl7SW5jbHVkZXN9ILYKLQkJe1NyY0ZpbGVzfQotCi0KLSMqKiogRGVwZW5kZW5jaWVzOiBDdXQgaGVyZSAqKioKLSMgVGhlc2UgZGVwZW5kZW5jaWVzIHdlcmUgcHJvZHVjZWQgYXQgMTI6MTc6MDIgVWhyIG9uIEZyZSwgMjkuIERleiAyMDAwIGJ5IE1ha2VEZXBlbmQKLQotOm9iajpidWZmZXIuYy54CcQgILYKLQk6c3JjOmJ1ZmZlci5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajpjaGFyc2V0LmMueAnEICC2Ci0JOnNyYzpjaGFyc2V0LmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmRpZmYuYy54CcQgILYKLQk6c3JjOmRpZmYuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6ZGlncmFwaC5jLngJxCAgtgotCTpzcmM6ZGlncmFwaC5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajplZGl0LmMueAnEICC2Ci0JOnNyYzplZGl0LmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmV2YWwuYy54CcQgILYKLQk6c3JjOmV2YWwuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzp2ZXJzaW9uLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmV4X2NtZHMuYy54CcQgILYKLQk6c3JjOmV4X2NtZHMuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6ZXhfY21kczIuYy54CcQgILYKLQk6c3JjOmV4X2NtZHMyLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmV4X2RvY21kLmMueAnEICC2Ci0JOnNyYzpleF9kb2NtZC5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajpleF9ldmFsLmMueAnEICC2Ci0JOnNyYzpleF9ldmFsLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmV4X2dldGxuLmMueAnEICC2Ci0JOnNyYzpleF9nZXRsbi5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajpmaWxlaW8uYy54CcQgILYKLQk6c3JjOmZpbGVpby5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajpmb2xkLmMueAnEICC2Ci0JOnNyYzpmb2xkLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmdldGNoYXIuYy54CcQgILYKLQk6c3JjOmdldGNoYXIuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6aGFyZGNvcHkuYy54CcQgILYKLQk6c3JjOmhhcmRjb3B5LmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmhhc2h0YWJsZS5jLngJxCAgtgotCTpzcmM6aGFzaHRhYmxlLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmd1aS5jLngJxCAgtgotCTpzcmM6Z3VpLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOmd1aV9tYWMuYy54CcQgILYKLQk6c3JjOmd1aV9tYWMuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpzcmM6Z3VpX21hYy5yCcQgILYKLQk6c3JjOmd1aV9tYWMuciC2Ci0JIntSSW5jbHVkZXN9IlN5c1R5cGVzLnIgtgotCSJ7UkluY2x1ZGVzfSJUeXBlcy5yILYKLQk6c3JjOnZlcnNpb24uaCC2Ci0JIntSSW5jbHVkZXN9IkZvbnRzLnIgtgotCSJ7UkluY2x1ZGVzfSJJbnRsUmVzb3VyY2VzLnIgtgotCSJ7UkluY2x1ZGVzfSJTb3VuZC5yILYKLQkie1JJbmNsdWRlc30iQ29uZGl0aW9uYWxNYWNyb3MuciC2Ci0JIntSSW5jbHVkZXN9Ik1hY1R5cGVzLnIgtgotCSJ7UkluY2x1ZGVzfSJDb250cm9scy5yILYKLQkie1JJbmNsdWRlc30iQ29udHJvbERlZmluaXRpb25zLnIgtgotCSJ7UkluY2x1ZGVzfSJNYWNXaW5kb3dzLnIgtgotCSJ7UkluY2x1ZGVzfSJEaWFsb2dzLnIgtgotCSJ7UkluY2x1ZGVzfSJNZW51cy5yILYKLQkie1JJbmNsdWRlc30iSWNvbnMuciC2Ci0JIntSSW5jbHVkZXN9IkZpbmRlci5yILYKLQkie1JJbmNsdWRlc30iUXVpY2tkcmF3LnIgtgotCSJ7UkluY2x1ZGVzfSJQcm9jZXNzZXMuciC2Ci0JIntSSW5jbHVkZXN9IkFwcGxlRXZlbnRzLnIgtgotCSJ7UkluY2x1ZGVzfSJTY3JpcHQuciC2Ci0JIntSSW5jbHVkZXN9IkNvbGxlY3Rpb25zLnIgtgotCSJ7UkluY2x1ZGVzfSJQaWN0VXRpbHMuciC2Ci0JIntSSW5jbHVkZXN9IkFFRGF0YU1vZGVsLnIKLQotOm9iajppZl9jc2NvcGUuYy54CcQgILYKLQk6c3JjOmlmX2NzY29wZS5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmlmX2NzY29wZS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajptYWluLmMueAnEICC2Ci0JOnNyYzptYWluLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6ZmFyc2kuYyC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6bWFyay5jLngJxCAgtgotCTpzcmM6bWFyay5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajptZW1maWxlLmMueAnEICC2Ci0JOnNyYzptZW1maWxlLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOm1lbWxpbmUuYy54CcQgILYKLQk6c3JjOm1lbWxpbmUuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6bWVudS5jLngJxCAgtgotCTpzcmM6bWVudS5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajptZXNzYWdlLmMueAnEICC2Ci0JOnNyYzptZXNzYWdlLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOm1pc2MxLmMueAnEICC2Ci0JOnNyYzptaXNjMS5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOnZlcnNpb24uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6bWlzYzIuYy54CcQgILYKLQk6c3JjOm1pc2MyLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOm1vdmUuYy54CcQgILYKLQk6c3JjOm1vdmUuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6bXVsdGlieXRlLmMueAnEICC2Ci0JOnNyYzptdWx0aWJ5dGUuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6bm9ybWFsLmMueAnEICC2Ci0JOnNyYzpub3JtYWwuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6b3BzLmMueAnEICC2Ci0JOnNyYzpvcHMuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6b3B0aW9uLmMueAnEICC2Ci0JOnNyYzpvcHRpb24uYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6b3NfbWFjLmMueAnEICC2Ci0JOnNyYzpvc19tYWMuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6cHR5LmMueAnEICC2Ci0JOnNyYzpwdHkuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6cG9wdXBtZW51LmMueAnEICC2Ci0JOnNyYzpwb3B1cG1lbnUuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6cXVpY2tmaXguYy54CcQgILYKLQk6c3JjOnF1aWNrZml4LmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnJlZ2V4cC5jLngJxCAgtgotCTpzcmM6cmVnZXhwLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnNjcmVlbi5jLngJxCAgtgotCTpzcmM6c2NyZWVuLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnNlYXJjaC5jLngJxCAgtgotCTpzcmM6c2VhcmNoLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnNwZWxsLmMueAnEICC2Ci0JOnNyYzpzcGVsbC5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajpzeW50YXguYy54CcQgILYKLQk6c3JjOnN5bnRheC5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajp0YWcuYy54CcQgILYKLQk6c3JjOnRhZy5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KLQotOm9iajp0ZXJtLmMueAnEICC2Ci0JOnNyYzp0ZXJtLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnRlcm1saWIuYy54CcQgILYKLQk6c3JjOnRlcm1saWIuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6dWkuYy54CcQgILYKLQk6c3JjOnVpLmMgtgotCTpzcmM6dmltLmggtgotCTpzcmM6YXV0bzpjb25maWcuaCC2Ci0JOnNyYzpmZWF0dXJlLmggtgotCTpzcmM6b3NfdW5peC5oILYKLQk6c3JjOm9zX21hYy5oILYKLQk6c3JjOndvcmtzaG9wLmggtgotCTpzcmM6YXNjaWkuaCC2Ci0JOnNyYzprZXltYXAuaCC2Ci0JOnNyYzp0ZXJtLmggtgotCTpzcmM6bWFjcm9zLmggtgotCTpzcmM6c3RydWN0cy5oILYKLQk6c3JjOmdsb2JhbHMuaCC2Ci0JOnNyYzpvcHRpb24uaCC2Ci0JOnNyYzpleF9jbWRzLmggtgotCTpzcmM6cHJvdG8uaCC2Ci0JOnNyYzppbnRlZ3JhdGlvbi5oILYKLQk6c3JjOndzZGVidWcuaCC2Ci0JOnNyYzpyZWdleHAuaCC2Ci0JOnNyYzpndWkuaCC2Ci0JOnNyYzpmYXJzaS5oILYKLQk6c3JjOnByb3RvOm9zX3VuaXgucHJvILYKLQk6c3JjOnByb3RvOm9zX21hYy5wcm8gtgotCTpzcmM6cHJvdG86YnVmZmVyLnBybyC2Ci0JOnNyYzpwcm90bzpjaGFyc2V0LnBybyC2Ci0JOnNyYzpwcm90bzppZl9jc2NvcGUucHJvILYKLQk6c3JjOnByb3RvOmRpZmYucHJvILYKLQk6c3JjOnByb3RvOmRpZ3JhcGgucHJvILYKLQk6c3JjOnByb3RvOmVkaXQucHJvILYKLQk6c3JjOnByb3RvOmV2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMucHJvILYKLQk6c3JjOnByb3RvOmV4X2NtZHMyLnBybyC2Ci0JOnNyYzpwcm90bzpleF9kb2NtZC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZ2V0bG4ucHJvILYKLQk6c3JjOnByb3RvOmZpbGVpby5wcm8gtgotCTpzcmM6cHJvdG86Zm9sZC5wcm8gtgotCTpzcmM6cHJvdG86Z2V0Y2hhci5wcm8gtgotCTpzcmM6cHJvdG86aGFyZGNvcHkucHJvILYKLQk6c3JjOnByb3RvOmhhc2h0YWJsZS5wcm8gtgotCTpzcmM6cHJvdG86aGFuZ3VsaW4ucHJvILYKLQk6c3JjOnByb3RvOm1haW4ucHJvILYKLQk6c3JjOnByb3RvOm1hcmsucHJvILYKLQk6c3JjOnByb3RvOm1lbWZpbGUucHJvILYKLQk6c3JjOnByb3RvOm1lbWxpbmUucHJvILYKLQk6c3JjOnByb3RvOm1lbnUucHJvILYKLQk6c3JjOnByb3RvOm1lc3NhZ2UucHJvILYKLQk6c3JjOnByb3RvOm1pc2MxLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMi5wcm8gtgotCTpzcmM6cHJvdG86bW92ZS5wcm8gtgotCTpzcmM6cHJvdG86bXVsdGlieXRlLnBybyC2Ci0JOnNyYzpwcm90bzpub3JtYWwucHJvILYKLQk6c3JjOnByb3RvOm9wcy5wcm8gtgotCTpzcmM6cHJvdG86b3B0aW9uLnBybyC2Ci0JOnNyYzpwcm90bzpwb3B1cG1lbnUucHJvILYKLQk6c3JjOnByb3RvOnF1aWNrZml4LnBybyC2Ci0JOnNyYzpwcm90bzpyZWdleHAucHJvILYKLQk6c3JjOnByb3RvOnNjcmVlbi5wcm8gtgotCTpzcmM6cHJvdG86c2VhcmNoLnBybyC2Ci0JOnNyYzpwcm90bzpzcGVsbC5wcm8gtgotCTpzcmM6cHJvdG86c3ludGF4LnBybyC2Ci0JOnNyYzpwcm90bzp0YWcucHJvILYKLQk6c3JjOnByb3RvOnRlcm0ucHJvILYKLQk6c3JjOnByb3RvOnRlcm1saWIucHJvILYKLQk6c3JjOnByb3RvOnVpLnBybyC2Ci0JOnNyYzpwcm90bzp1bmRvLnBybyC2Ci0JOnNyYzpwcm90bzp2ZXJzaW9uLnBybyC2Ci0JOnNyYzpwcm90bzp3aW5kb3cucHJvILYKLQk6c3JjOnByb3RvOmlmX3B5dGhvbi5wcm8gtgotCTpzcmM6cHJvdG86aWZfdGNsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9ydWJ5LnBybyC2Ci0JOnNyYzpwcm90bzpndWkucHJvILYKLQk6c3JjOnByb3RvOnB0eS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0ay5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2d0a194MTEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tb3RpZi5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX2F0aGVuYS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21hYy5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86d29ya3Nob3AucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmwucHJvILYKLQk6c3JjOnByb3RvOmlmX3BlcmxzZmlvLnBybwotCi06b2JqOnVuZG8uYy54CcQgILYKLQk6c3JjOnVuZG8uYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6dmVyc2lvbi5jLngJxCAgtgotCTpzcmM6dmVyc2lvbi5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOnZlcnNpb24uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6d2luZG93LmMueAnEICC2Ci0JOnNyYzp3aW5kb3cuYyC2Ci0JOnNyYzp2aW0uaCC2Ci0JOnNyYzphdXRvOmNvbmZpZy5oILYKLQk6c3JjOmZlYXR1cmUuaCC2Ci0JOnNyYzpvc191bml4LmggtgotCTpzcmM6b3NfbWFjLmggtgotCTpzcmM6d29ya3Nob3AuaCC2Ci0JOnNyYzphc2NpaS5oILYKLQk6c3JjOmtleW1hcC5oILYKLQk6c3JjOnRlcm0uaCC2Ci0JOnNyYzptYWNyb3MuaCC2Ci0JOnNyYzpzdHJ1Y3RzLmggtgotCTpzcmM6Z2xvYmFscy5oILYKLQk6c3JjOm9wdGlvbi5oILYKLQk6c3JjOmV4X2NtZHMuaCC2Ci0JOnNyYzpwcm90by5oILYKLQk6c3JjOmludGVncmF0aW9uLmggtgotCTpzcmM6d3NkZWJ1Zy5oILYKLQk6c3JjOnJlZ2V4cC5oILYKLQk6c3JjOmd1aS5oILYKLQk6c3JjOmZhcnNpLmggtgotCTpzcmM6cHJvdG86b3NfdW5peC5wcm8gtgotCTpzcmM6cHJvdG86b3NfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpidWZmZXIucHJvILYKLQk6c3JjOnByb3RvOmNoYXJzZXQucHJvILYKLQk6c3JjOnByb3RvOmlmX2NzY29wZS5wcm8gtgotCTpzcmM6cHJvdG86ZGlmZi5wcm8gtgotCTpzcmM6cHJvdG86ZGlncmFwaC5wcm8gtgotCTpzcmM6cHJvdG86ZWRpdC5wcm8gtgotCTpzcmM6cHJvdG86ZXZhbC5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kcy5wcm8gtgotCTpzcmM6cHJvdG86ZXhfY21kczIucHJvILYKLQk6c3JjOnByb3RvOmV4X2RvY21kLnBybyC2Ci0JOnNyYzpwcm90bzpleF9ldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9nZXRsbi5wcm8gtgotCTpzcmM6cHJvdG86ZmlsZWlvLnBybyC2Ci0JOnNyYzpwcm90bzpmb2xkLnBybyC2Ci0JOnNyYzpwcm90bzpnZXRjaGFyLnBybyC2Ci0JOnNyYzpwcm90bzpoYXJkY29weS5wcm8gtgotCTpzcmM6cHJvdG86aGFzaHRhYmxlLnBybyC2Ci0JOnNyYzpwcm90bzpoYW5ndWxpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFpbi5wcm8gtgotCTpzcmM6cHJvdG86bWFyay5wcm8gtgotCTpzcmM6cHJvdG86bWVtZmlsZS5wcm8gtgotCTpzcmM6cHJvdG86bWVtbGluZS5wcm8gtgotCTpzcmM6cHJvdG86bWVudS5wcm8gtgotCTpzcmM6cHJvdG86bWVzc2FnZS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzEucHJvILYKLQk6c3JjOnByb3RvOm1pc2MyLnBybyC2Ci0JOnNyYzpwcm90bzptb3ZlLnBybyC2Ci0JOnNyYzpwcm90bzptdWx0aWJ5dGUucHJvILYKLQk6c3JjOnByb3RvOm5vcm1hbC5wcm8gtgotCTpzcmM6cHJvdG86b3BzLnBybyC2Ci0JOnNyYzpwcm90bzpvcHRpb24ucHJvILYKLQk6c3JjOnByb3RvOnBvcHVwbWVudS5wcm8gtgotCTpzcmM6cHJvdG86cXVpY2tmaXgucHJvILYKLQk6c3JjOnByb3RvOnJlZ2V4cC5wcm8gtgotCTpzcmM6cHJvdG86c2NyZWVuLnBybyC2Ci0JOnNyYzpwcm90bzpzZWFyY2gucHJvILYKLQk6c3JjOnByb3RvOnNwZWxsLnBybyC2Ci0JOnNyYzpwcm90bzpzeW50YXgucHJvILYKLQk6c3JjOnByb3RvOnRhZy5wcm8gtgotCTpzcmM6cHJvdG86dGVybS5wcm8gtgotCTpzcmM6cHJvdG86dGVybWxpYi5wcm8gtgotCTpzcmM6cHJvdG86dWkucHJvILYKLQk6c3JjOnByb3RvOnVuZG8ucHJvILYKLQk6c3JjOnByb3RvOnZlcnNpb24ucHJvILYKLQk6c3JjOnByb3RvOndpbmRvdy5wcm8gtgotCTpzcmM6cHJvdG86aWZfcHl0aG9uLnBybyC2Ci0JOnNyYzpwcm90bzppZl90Y2wucHJvILYKLQk6c3JjOnByb3RvOmlmX3J1YnkucHJvILYKLQk6c3JjOnByb3RvOmd1aS5wcm8gtgotCTpzcmM6cHJvdG86cHR5LnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfZ3RrX3gxMS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpX21vdGlmLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfYXRoZW5hLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbWFjLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfeDExLnBybyC2Ci0JOnNyYzpwcm90bzp3b3Jrc2hvcC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcGVybHNmaW8ucHJvCi0KLTpvYmo6d3NkZWJ1Zy5jLngJxCAgtgotCTpzcmM6d3NkZWJ1Zy5jILYKLQk6c3JjOnZpbS5oILYKLQk6c3JjOmF1dG86Y29uZmlnLmggtgotCTpzcmM6ZmVhdHVyZS5oILYKLQk6c3JjOm9zX3VuaXguaCC2Ci0JOnNyYzpvc19tYWMuaCC2Ci0JOnNyYzp3b3Jrc2hvcC5oILYKLQk6c3JjOmFzY2lpLmggtgotCTpzcmM6a2V5bWFwLmggtgotCTpzcmM6dGVybS5oILYKLQk6c3JjOm1hY3Jvcy5oILYKLQk6c3JjOnN0cnVjdHMuaCC2Ci0JOnNyYzpnbG9iYWxzLmggtgotCTpzcmM6b3B0aW9uLmggtgotCTpzcmM6ZXhfY21kcy5oILYKLQk6c3JjOnByb3RvLmggtgotCTpzcmM6aW50ZWdyYXRpb24uaCC2Ci0JOnNyYzp3c2RlYnVnLmggtgotCTpzcmM6cmVnZXhwLmggtgotCTpzcmM6Z3VpLmggtgotCTpzcmM6ZmFyc2kuaCC2Ci0JOnNyYzpwcm90bzpvc191bml4LnBybyC2Ci0JOnNyYzpwcm90bzpvc19tYWMucHJvILYKLQk6c3JjOnByb3RvOmJ1ZmZlci5wcm8gtgotCTpzcmM6cHJvdG86Y2hhcnNldC5wcm8gtgotCTpzcmM6cHJvdG86aWZfY3Njb3BlLnBybyC2Ci0JOnNyYzpwcm90bzpkaWZmLnBybyC2Ci0JOnNyYzpwcm90bzpkaWdyYXBoLnBybyC2Ci0JOnNyYzpwcm90bzplZGl0LnBybyC2Ci0JOnNyYzpwcm90bzpldmFsLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzLnBybyC2Ci0JOnNyYzpwcm90bzpleF9jbWRzMi5wcm8gtgotCTpzcmM6cHJvdG86ZXhfZG9jbWQucHJvILYKLQk6c3JjOnByb3RvOmV4X2V2YWwucHJvILYKLQk6c3JjOnByb3RvOmV4X2dldGxuLnBybyC2Ci0JOnNyYzpwcm90bzpmaWxlaW8ucHJvILYKLQk6c3JjOnByb3RvOmZvbGQucHJvILYKLQk6c3JjOnByb3RvOmdldGNoYXIucHJvILYKLQk6c3JjOnByb3RvOmhhcmRjb3B5LnBybyC2Ci0JOnNyYzpwcm90bzpoYXNodGFibGUucHJvILYKLQk6c3JjOnByb3RvOmhhbmd1bGluLnBybyC2Ci0JOnNyYzpwcm90bzptYWluLnBybyC2Ci0JOnNyYzpwcm90bzptYXJrLnBybyC2Ci0JOnNyYzpwcm90bzptZW1maWxlLnBybyC2Ci0JOnNyYzpwcm90bzptZW1saW5lLnBybyC2Ci0JOnNyYzpwcm90bzptZW51LnBybyC2Ci0JOnNyYzpwcm90bzptZXNzYWdlLnBybyC2Ci0JOnNyYzpwcm90bzptaXNjMS5wcm8gtgotCTpzcmM6cHJvdG86bWlzYzIucHJvILYKLQk6c3JjOnByb3RvOm1vdmUucHJvILYKLQk6c3JjOnByb3RvOm11bHRpYnl0ZS5wcm8gtgotCTpzcmM6cHJvdG86bm9ybWFsLnBybyC2Ci0JOnNyYzpwcm90bzpvcHMucHJvILYKLQk6c3JjOnByb3RvOm9wdGlvbi5wcm8gtgotCTpzcmM6cHJvdG86cG9wdXBtZW51LnBybyC2Ci0JOnNyYzpwcm90bzpxdWlja2ZpeC5wcm8gtgotCTpzcmM6cHJvdG86cmVnZXhwLnBybyC2Ci0JOnNyYzpwcm90bzpzY3JlZW4ucHJvILYKLQk6c3JjOnByb3RvOnNlYXJjaC5wcm8gtgotCTpzcmM6cHJvdG86c3BlbGwucHJvILYKLQk6c3JjOnByb3RvOnN5bnRheC5wcm8gtgotCTpzcmM6cHJvdG86dGFnLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtLnBybyC2Ci0JOnNyYzpwcm90bzp0ZXJtbGliLnBybyC2Ci0JOnNyYzpwcm90bzp1aS5wcm8gtgotCTpzcmM6cHJvdG86dW5kby5wcm8gtgotCTpzcmM6cHJvdG86dmVyc2lvbi5wcm8gtgotCTpzcmM6cHJvdG86d2luZG93LnBybyC2Ci0JOnNyYzpwcm90bzppZl9weXRob24ucHJvILYKLQk6c3JjOnByb3RvOmlmX3RjbC5wcm8gtgotCTpzcmM6cHJvdG86aWZfcnVieS5wcm8gtgotCTpzcmM6cHJvdG86Z3VpLnBybyC2Ci0JOnNyYzpwcm90bzpwdHkucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGsucHJvILYKLQk6c3JjOnByb3RvOmd1aV9ndGtfeDExLnBybyC2Ci0JOnNyYzpwcm90bzpndWlfbW90aWYucHJvILYKLQk6c3JjOnByb3RvOmd1aV9hdGhlbmEucHJvILYKLQk6c3JjOnByb3RvOmd1aV9tYWMucHJvILYKLQk6c3JjOnByb3RvOmd1aV94MTEucHJvILYKLQk6c3JjOnByb3RvOndvcmtzaG9wLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsLnBybyC2Ci0JOnNyYzpwcm90bzppZl9wZXJsc2Zpby5wcm8KZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDQyM2ZhZWEuLmQxMjcxOTggMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMTAwMjQsNyArMTAwMjQsNyBAQAogCSJkb3MxNiIsCiAjIGVuZGlmCiAjZW5kaWYKLSNpZmRlZiBNQUNPUyAvKiBUT0RPOiBTaG91bGQgd2UgYWRkIE1BQ09TX0NMQVNTSUMsIE1BQ09TX1g/IChEYW55KSAqLworI2lmZGVmIE1BQ09TCiAJIm1hYyIsCiAjZW5kaWYKICNpZiBkZWZpbmVkKE1BQ09TX1hfVU5JWCkKQEAgLTEwMTczLDkgKzEwMTczLDYgQEAKIAkiZ3VpX2F0aGVuYSIsCiAjIGVuZGlmCiAjZW5kaWYKLSNpZmRlZiBGRUFUX0dVSV9LREUKLQkiZ3VpX2tkZSIsCi0jZW5kaWYKICNpZmRlZiBGRUFUX0dVSV9HVEsKIAkiZ3VpX2d0ayIsCiAjIGlmZGVmIEhBVkVfR1RLMgpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9rZGUuY2MgYi9zcmMvZ3VpX2tkZS5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI4OGU5OC4uMDAwMDAwMAotLS0gYS9zcmMvZ3VpX2tkZS5jYworKysgL2Rldi9udWxsCkBAIC0xLDY3MCArMCwwIEBACi0vKiB2aTpzZXQgdHM9OCBzdHM9NCBzdz00OgotICoKLSAqIFZJTSAtIFZpIElNcHJvdmVkCQlieSBCcmFtIE1vb2xlbmFhcgotICoKLSAqIERvICI6aGVscCB1Z2FuZGEiICBpbiBWaW0gdG8gcmVhZCBjb3B5aW5nIGFuZCB1c2FnZSBjb25kaXRpb25zLgotICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCi0gKi8KLQotLyoKLSAqIFBvcnRpbmcgdG8gS0RFKDIpIHdhcyBkb25lIGJ5Ci0gKgotICogIChDKSAyMDAwIGJ5IFRob21hcyBDYXByaWNlbGxpIDxvcnplbEBmcmVlaGFja2Vycy5vcmc+Ci0gKgotICogIFBsZWFzZSB2aXNpdCBodHRwOi8vZnJlZWhhY2tlcnMub3JnL2t2aW0gZm9yIG90aGVyIHZpbS0gb3IKLSAqICBrZGUtcmVsYXRlZCBjb2RpbmcuIChVUkwgY3VycmVudGx5IGRvZXNuJ3Qgd29yay4uLikKLSAqCi0gKiAgJElkJAotICoKLSAqLwotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8a21lbnViYXIuaD4KLSNpbmNsdWRlIDxrZmlsZWRpYWxvZy5oPgotI2luY2x1ZGUgPGtpY29ubG9hZGVyLmg+Ci0KLSNpbmNsdWRlIDxxc2Nyb2xsYmFyLmg+Ci0jaW5jbHVkZSA8cWN1cnNvci5oPgotI2luY2x1ZGUgPHFtZXNzYWdlYm94Lmg+Ci0jaW5jbHVkZSA8cWljb25zZXQuaD4KLSNpbmNsdWRlIDxxdGV4dGNvZGVjLmg+Ci0jaW5jbHVkZSAiZ3VpX2tkZV93aWQuaCIKLQotZXh0ZXJuICJDIiB7Ci0jaW5jbHVkZSAidmltLmgiCi19Ci0KLSN1bmRlZiBkYmYKLSN1bmRlZiBkYgotI3VuZGVmIG1wdXRzCi0KLSNpZiAxCi0jZGVmaW5lIGRiZihmb3JtYXQsIGFyZ3MuLi4pIHsgcHJpbnRmKCIlcyIgIiA6ICIgZm9ybWF0ICJcbiIgLCBfX0ZVTkNUSU9OX18gLCAjIyBhcmdzICk7IGZmbHVzaChzdGRvdXQpOyB9Ci0jZGVmaW5lIGRiKCkgICAgICAgeyBwcmludGYoIiVzXG4iLCBfX0ZVTkNUSU9OX18gKTtmZmx1c2goc3Rkb3V0KTsgfQotI2Vsc2UKLSNkZWZpbmUgZGJmKGZvcm1hdCwgYXJncy4uLiApCi0jZGVmaW5lIGRiKCkKLSNlbmRpZgotCi0KLSNpZmRlZiBGRUFUX1RPT0xCQVIKLSNpZm5kZWYgRkVBVF9LREVUT09MQkFSCi0vKgotICogSWNvbnMgdXNlZCBieSB0aGUgdG9vbGJhciBjb2RlLgotICovLy97e3sKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX25ldy54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9vcGVuLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX2Nsb3NlLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX3NhdmUueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfcHJpbnQueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfY3V0LnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX2NvcHkueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfcGFzdGUueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfZmluZC54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9maW5kX25leHQueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfZmluZF9wcmV2LnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX2ZpbmRfaGVscC54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9leGl0LnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX3VuZG8ueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfcmVkby54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9oZWxwLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21hY3JvLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21ha2UueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfc2F2ZV9hbGwueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfanVtcC54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9jdGFncy54cG0iCi0jaW5jbHVkZSAiLi4vcGl4bWFwcy90Yl9sb2FkX3Nlc3Npb24ueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfc2F2ZV9zZXNzaW9uLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX25ld19zZXNzaW9uLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX2JsYW5rLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21heGltaXplLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX3NwbGl0LnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21pbmltaXplLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX3NoZWxsLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX3JlcGxhY2UueHBtIgotI2luY2x1ZGUgIi4uL3BpeG1hcHMvdGJfdnNwbGl0LnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21heHdpZHRoLnhwbSIKLSNpbmNsdWRlICIuLi9waXhtYXBzL3RiX21pbndpZHRoLnhwbSIKLS8vfX19Ci0vKgotICogVGhlc2UgYXJlIHRoZSBwaXhtYXBzIHVzZWQgZm9yIHRoZSBkZWZhdWx0IGJ1dHRvbnMuCi0gKiBPcmRlciBtdXN0IGV4YWN0bHkgbWF0Y2ggdG9vbGJhcl9uYW1lc1tdIGluIG1lbnUuYyEKLSAqLy8ve3t7Ci1zdGF0aWMgY2hhciAqKihidWlsdF9pbl9waXhtYXBzW10pID0KLXsKLQl0Yl9uZXdfeHBtLAotCXRiX29wZW5feHBtLAotCXRiX3NhdmVfeHBtLAotCXRiX3VuZG9feHBtLAotCXRiX3JlZG9feHBtLAotCXRiX2N1dF94cG0sCi0JdGJfY29weV94cG0sCi0JdGJfcGFzdGVfeHBtLAotCXRiX3ByaW50X3hwbSwKLQl0Yl9oZWxwX3hwbSwKLQl0Yl9maW5kX3hwbSwKLQl0Yl9zYXZlX2FsbF94cG0sCi0JdGJfc2F2ZV9zZXNzaW9uX3hwbSwKLQl0Yl9uZXdfc2Vzc2lvbl94cG0sCi0JdGJfbG9hZF9zZXNzaW9uX3hwbSwKLQl0Yl9tYWNyb194cG0sCi0JdGJfcmVwbGFjZV94cG0sCi0JdGJfY2xvc2VfeHBtLAotCXRiX21heGltaXplX3hwbSwKLQl0Yl9taW5pbWl6ZV94cG0sCi0JdGJfc3BsaXRfeHBtLAotCXRiX3NoZWxsX3hwbSwKLQl0Yl9maW5kX3ByZXZfeHBtLAotCXRiX2ZpbmRfbmV4dF94cG0sCi0JdGJfZmluZF9oZWxwX3hwbSwKLQl0Yl9tYWtlX3hwbSwKLQl0Yl9qdW1wX3hwbSwKLQl0Yl9jdGFnc194cG0sCi0JdGJfdnNwbGl0X3hwbSwKLQl0Yl9tYXh3aWR0aF94cG0sCi0JdGJfbWlud2lkdGhfeHBtLAotCXRiX2V4aXRfeHBtCi19Oy8vfX19Ci0jZWxzZQotY29uc3QgY2hhciAqa2RlaWNvbnNbXSA9IHsKLQkiZmlsZW5ldyIsCi0JImZpbGVvcGVuIiwKLQkiZmlsZXNhdmUiLAotCSJ1bmRvIiwKLQkicmVkbyIsCi0JImVkaXRjdXQiLAotCSJlZGl0Y29weSIsCi0JImVkaXRwYXN0ZSIsCi0JImZpbGVwcmludCIsCi0JImNvbnRlbnRzMiIsCi0JImZpbGVmaW5kIiwKLQkic2F2ZV9hbGwiLAotCSJmaWxlZXhwb3J0IiwKLQkiZmlsZW5ldyIsCi0JImZpbGVpbXBvcnQiLAotCSJydW4iLAotCSJlZGl0IiwKLQkiZmlsZWNsb3NlIiwKLQkiIiwKLQkiIiwKLQkic3BsaXQiLAotCSJvcGVudGVybSIsCi0JInByZXZpb3VzIiwKLQkibmV4dCIsCi0JImhlbHAiLAotCSJtYWtlIiwKLQkiZ290byIsCi0JInJ1biIsCi0JInZzcGxpdCIsCi0JIm1heHdpZHRoIiwKLQkibWlud2lkdGgiLAotCSJxdWl0IgotfTsKLSNlbmRpZgotLyoKLSAqIGNyZWF0ZXMgYSBibGFuayBwaXhtYXAgdXNpbmcgdGJfYmxhbmsKLSAqLwotICAgIFFQaXhtYXAKLXBpeG1hcF9jcmVhdGVfZnJvbV94cG0oY2hhciAqKnhwbSkvL3t7ewotewotICAgIHJldHVybiAoUVBpeG1hcCgoY29uc3QgY2hhciAqKil4cG0pKTsKLX0vL319fQotCi0vKgotICogY3JlYXRlcyBhIHBpeG1hcCBieSB1c2luZyBhIGJ1aWx0LWluIG51bWJlcgotICovCi0gICAgUVBpeG1hcAotcGl4bWFwX2NyZWF0ZV9ieV9udW0oaW50IHBpeG1hcF9udW0pLy97e3sKLXsKLSNpZmRlZiBGRUFUX0tERVRPT0xCQVIKLSAgICBpZiAocGl4bWFwX251bSA+PSAwICYmICh1bnNpZ25lZClwaXhtYXBfbnVtIDwgKHNpemVvZihrZGVpY29ucykKLQkJCQkJCSAgIC8gc2l6ZW9mKGtkZWljb25zWzBdKSkgLSAxKQotICAgIHsKLQotCUtJY29uTG9hZGVyICppbCA9IGthcHAtPmljb25Mb2FkZXIoKTsgLy9uZXcgS0ljb25Mb2FkZXIoKTsKLQlRU3RyaW5nIGljb247Ci0JaWNvbiA9IFFTdHJpbmcoa2RlaWNvbnNbcGl4bWFwX251bV0pOwotCXJldHVybiBpbC0+bG9hZEljb24oaWNvbiwgS0ljb246Ok1haW5Ub29sYmFyKTsKLSAgICB9Ci0gICAgcmV0dXJuIFFQaXhtYXAoKTsKLSNlbHNlCi0gICAgaWYgKHBpeG1hcF9udW0gPj0gMCAmJiAodW5zaWduZWQpcGl4bWFwX251bSA8IChzaXplb2YoYnVpbHRfaW5fcGl4bWFwcykKLQkJCQkJICAgLyBzaXplb2YoYnVpbHRfaW5fcGl4bWFwc1swXSkpIC0gMSkKLQlyZXR1cm4gcGl4bWFwX2NyZWF0ZV9mcm9tX3hwbShidWlsdF9pbl9waXhtYXBzW3BpeG1hcF9udW1dKTsKLSAgICBlbHNlCi0JcmV0dXJuIFFQaXhtYXAoKTsKLSNlbmRpZgotfS8vfX19Ci0KLS8qCi0gKiBDcmVhdGVzIGEgcGl4bWFwIGJ5IHVzaW5nIHRoZSBwaXhtYXAgIm5hbWUiIGZvdW5kIGluICdydW50aW1lcGF0aCcvYml0bWFwcy8KLSAqLwotICAgIFFQaXhtYXAKLXBpeG1hcF9jcmVhdGVfYnlfZGlyKGNoYXJfdSAqbmFtZSkvL3t7ewotewotICAgIGNoYXJfdSBmdWxsX3BhdGhuYW1lW01BWFBBVEhMICsgMV07Ci0KLSAgICBpZiAoZ3VpX2ZpbmRfYml0bWFwKG5hbWUsIGZ1bGxfcGF0aG5hbWUsICJ4cG0iKSA9PSBPSykKLQlyZXR1cm4gUVBpeG1hcCgoY29uc3QgY2hhciAqKWZ1bGxfcGF0aG5hbWUpOwotICAgIGVsc2UKLQlyZXR1cm4gUVBpeG1hcCgpOwotfS8vfX19Ci0KLQotICAgIFFQaXhtYXAKLXBpeG1hcF9jcmVhdGVfZnJvbV9maWxlKGNoYXJfdSAqZmlsZSkKLXsKLSAgICByZXR1cm4gUVBpeG1hcCgoY29uc3QgY2hhciAqKWZpbGUpOwotfQotI2VuZGlmCi0KLSAgICB2b2lkCi1ndWlfbWNoX2FkZF9tZW51KHZpbW1lbnVfVCAqbWVudSwgaW50IGlkeCkvL3t7ewotewotI2lmZGVmIEZFQVRfTUVOVQotICAgIFFQb3B1cE1lbnUgKm1lOwotICAgIHZpbW1lbnVfVCAqcGFyZW50ID0gbWVudS0+cGFyZW50OwotCi0gICAgaWYgKG1lbnVfaXNfcG9wdXAobWVudS0+bmFtZSkpCi0gICAgewotCW1lbnUtPndpZGdldCA9IG5ldyBRUG9wdXBNZW51KHZtdyAsIFFTVFIobWVudS0+bmFtZSkpOwotCVFPYmplY3Q6OmNvbm5lY3QobWVudS0+d2lkZ2V0LCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCB2bXcsCi0JCQkJCQkgICBTTE9UKG1lbnVfYWN0aXZhdGVkKGludCkpKTsKLQlyZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtZW51X2lzX21lbnViYXIobWVudS0+bmFtZSkpCi0JcmV0dXJuOwotCi0gICAgaWYgKHBhcmVudCkKLSAgICB7Ci0JaWR4Kys7IC8vIGZvciB0ZWFyb2ZmcyB0byBiZSBmaXJzdCBpbiBtZW51cwotCW1lID0gbmV3IFFQb3B1cE1lbnUocGFyZW50LT53aWRnZXQsIFFTVFIobWVudS0+bmFtZSkpOwotCXBhcmVudC0+d2lkZ2V0LT5pbnNlcnRJdGVtKFFTVFIobWVudS0+bmFtZSksIG1lLCAobG9uZyltZSwgaWR4KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLQltZSA9IG5ldyBRUG9wdXBNZW51KHZtdy0+bWVudUJhcigpLCBRU1RSKG1lbnUtPm5hbWUpKTsKLQl2bXctPm1lbnVCYXIoKS0+aW5zZXJ0SXRlbShRU1RSKG1lbnUtPm5hbWUpLCBtZSwgKGxvbmcpbWUsIGlkeCk7Ci0gICAgfQotCi0gICAgbWUtPnNldENhcHRpb24oKGNvbnN0IGNoYXIgKikobWVudS0+ZG5hbWUpKTsKLSAgICBpZiAodm13LT5oYXZlX3RlYXJvZmYpCi0JbWUtPmluc2VydFRlYXJPZmZIYW5kbGUoMCwgMCk7Ci0gICAgUU9iamVjdDo6Y29ubmVjdChtZSwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdm13LAotCQkJCQkJICAgU0xPVChtZW51X2FjdGl2YXRlZChpbnQpKSk7Ci0gICAgbWVudS0+d2lkZ2V0ID0gbWU7Ci0jZW5kaWYKLX0vL319fQotCi0KLSAgICB2b2lkCi1ndWlfbWNoX2FkZF9tZW51X2l0ZW0odmltbWVudV9UICptZW51LCBpbnQgaWR4KS8ve3t7Ci17Ci0jaWZkZWYgRkVBVF9NRU5VCi0gICAgdmltbWVudV9UICpwYXJlbnQgPSBtZW51LT5wYXJlbnQ7Ci0jaWZkZWYgRkVBVF9UT09MQkFSCi0gICAgaWYgKG1lbnVfaXNfdG9vbGJhcihwYXJlbnQtPm5hbWUpKQotICAgIHsKLQlRUGl4bWFwIHBpeDsKLQotCWlmIChtZW51X2lzX3NlcGFyYXRvcihtZW51LT5uYW1lKSkKLQl7Ci0JICAgIHZtdy0+dG9vbEJhcigpLT5pbnNlcnRTZXBhcmF0b3IoKTsKLQkgICAgcmV0dXJuOwotCX0KLQlpZiAobWVudS0+aWNvbmZpbGUgIT0gTlVMTCkKLQl7Ci0JICAgIHBpeCA9IHBpeG1hcF9jcmVhdGVfZnJvbV9maWxlKG1lbnUtPmljb25maWxlKTsKLQl9Ci0JaWYgKCFtZW51LT5pY29uX2J1aWx0aW4pCi0JewotCSAgICBwaXggPSBwaXhtYXBfY3JlYXRlX2J5X2RpcihtZW51LT5uYW1lKTsKLQl9Ci0JaWYgKHBpeC5pc051bGwoKSAmJiBtZW51LT5pY29uaWR4ID49IDApCi0JewotCSAgICBwaXggPSBwaXhtYXBfY3JlYXRlX2J5X251bShtZW51LT5pY29uaWR4KTsKLQl9Ci0jaWZuZGVmIEZFQVRfS0RFVE9PTEJBUgotCWlmIChwaXguaXNOdWxsKCkpCi0JewotCSAgICBwaXggPSBwaXhtYXBfY3JlYXRlX2Zyb21feHBtKHRiX2JsYW5rX3hwbSk7Ci0JfQotI2VuZGlmCi0JaWYgKHBpeC5pc051bGwoKSkKLQkgICAgcmV0dXJuOyAvLyBmYWlsZWQKLQl2bXctPnRvb2xCYXIoKS0+aW5zZXJ0QnV0dG9uKAotCQlwaXgsCi0JCShsb25nKW1lbnUsIC8vIGlkCi0JCXRydWUsCi0JCVFTVFIobWVudS0+c3RyaW5nc1tNRU5VX0lOREVYX1RJUF0pLCAvLyB0b29sdGlwIG9yIHRleHQKLQkJaWR4KTsKLQltZW51LT5wYXJlbnQ9cGFyZW50OwotCXJldHVybjsKLSAgICB9Ci0jZW5kaWYgLy8gRkVBVF9UT09MQkFSCi0KLSAgICBpZHgrKzsKLSAgICBpZiAobWVudV9pc19zZXBhcmF0b3IobWVudS0+bmFtZSkpCi0gICAgewotCXBhcmVudC0+d2lkZ2V0LT5pbnNlcnRTZXBhcmF0b3IoKTsKLQlyZXR1cm47Ci0gICAgfQotICAgIHBhcmVudC0+d2lkZ2V0LT5pbnNlcnRJdGVtKFFTVFIobWVudS0+bmFtZSksIChsb25nKW1lbnUsIGlkeCk7Ci0jZW5kaWYKLX0vL319fQotCi0KLSAgICB2b2lkCi1ndWlfbWNoX3NldF90ZXh0X2FyZWFfcG9zKGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKS8ve3t7Ci17Ci0gICAgaW50IFggPSAwOwotICAgIGludCBZID0gMDsKLQotICAgIGlmICh2bXctPm1lbnVCYXIoKS0+aXNWaXNpYmxlKCkgJiYgdm13LT5tZW51QmFyKCktPmlzRW5hYmxlZCgpCi0jaWYgUVRfVkVSU0lPTj49MzAwCi0JICAgICYmICF2bXctPm1lbnVCYXIoKS0+aXNUb3BMZXZlbE1lbnUoKQotI2VuZGlmCi0gICAgICAgKQotCVkgKz0gdm13LT5tZW51QmFyKCktPmhlaWdodCgpOwotI2lmZGVmIEZFQVRfVE9PTEJBUgotICAgIGlmICh2bXctPnRvb2xCYXIoKS0+aXNWaXNpYmxlKCkgJiYgdm13LT50b29sQmFyKCktPmlzRW5hYmxlZCgpCi0JCQkJICAgJiYgdm13LT50b29sQmFyKCktPmJhclBvcygpPT1LVG9vbEJhcjo6VG9wKQotCVkgKz0gdm13LT50b29sQmFyKCktPmhlaWdodCgpOwotCi0gICAgaWYgKHZtdy0+dG9vbEJhcigpLT5pc1Zpc2libGUoKSAmJiB2bXctPnRvb2xCYXIoKS0+aXNFbmFibGVkKCkKLQkJCQkgICYmIHZtdy0+dG9vbEJhcigpLT5iYXJQb3MoKT09S1Rvb2xCYXI6OkxlZnQpCi0JWCArPSB2bXctPnRvb2xCYXIoKS0+d2lkdGgoKTsKLSNlbmRpZiAvLyBGRUFUX1RPT0xCQVIKLQotICAgIGd1aS53LT5zZXRHZW9tZXRyeSh4ICsgWCwgeSArIFksIHcsIGgpOwotfS8vfX19Ci0KLQotI2lmIGRlZmluZWQoRkVBVF9NRU5VKSB8fCBkZWZpbmVkKFBST1RPKQotLyoKLSAqIEVuYWJsZSBvciBkaXNhYmxlIG1uZW1vbmljcyBmb3IgdGhlIHRvcGxldmVsIG1lbnVzLgotICovCi0gICAgdm9pZAotZ3VpX2d0a19zZXRfbW5lbW9uaWNzKGludCBlbmFibGUpLy97e3sgLy8gVE8gQkUgUkVNT1ZFRAotewotfS8vfX19Ci0KLSAgICB2b2lkCi10b2dnbGVfdGVhcm9mZnModmltbWVudV9UICptZW51LCBpbnQgZW5hYmxlKS8ve3t7Ci17Ci0gICAgd2hpbGUgKG1lbnUgIT0gTlVMTCkKLSAgICB7Ci0JaWYgKCFtZW51X2lzX3BvcHVwKG1lbnUtPm5hbWUpKQotCXsKLQkgICAgaWYgKG1lbnUtPndpZGdldCAhPSAwKQotCSAgICB7Ci0JCWlmIChlbmFibGUpCi0JCSAgICBtZW51LT53aWRnZXQtPmluc2VydFRlYXJPZmZIYW5kbGUoMCwwKTsKLQkJZWxzZQotCQkgICAgbWVudS0+d2lkZ2V0LT5yZW1vdmVJdGVtKDApOwotCSAgICB9Ci0JICAgIHRvZ2dsZV90ZWFyb2ZmcyhtZW51LT5jaGlsZHJlbiwgZW5hYmxlKTsKLQl9Ci0JbWVudSA9IG1lbnUtPm5leHQ7Ci0gICAgfQotfS8vfX19Ci0KLQl2b2lkCi1ndWlfbWNoX3RvZ2dsZV90ZWFyb2ZmcyhpbnQgZW5hYmxlKS8ve3t7Ci17Ci0gICAgdm13LT5oYXZlX3RlYXJvZmY9ZW5hYmxlOwotICAgIHRvZ2dsZV90ZWFyb2Zmcyhyb290X21lbnUsIGVuYWJsZSk7Ci19Ly99fX0KLSNlbmRpZgotCi0KLSNpZiBkZWZpbmVkKEZFQVRfTUVOVSkgfHwgZGVmaW5lZChQUk9UTykKLS8qCi0gKiBEZXN0cm95IHRoZSBtYWNoaW5lIHNwZWNpZmljIG1lbnUgd2lkZ2V0LgotICovCi0gICAgdm9pZAotZ3VpX21jaF9kZXN0cm95X21lbnUodmltbWVudV9UICptZW51KS8ve3t7Ci17Ci0jaWZkZWYgRkVBVF9UT09MQkFSCi0gICAgaWYgKG1lbnUtPnBhcmVudCAmJiBtZW51X2lzX3Rvb2xiYXIobWVudS0+cGFyZW50LT5uYW1lKSkKLSAgICB7Ci0Jdm13LT50b29sQmFyKCktPnJlbW92ZUl0ZW0oKGxvbmcpbWVudSk7Ci0JcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGlmIChtZW51LT5wYXJlbnQpCi0JbWVudS0+cGFyZW50LT53aWRnZXQtPnJlbW92ZUl0ZW0oKGxvbmcpbWVudSk7Ci0gICAgaWYgKG1lbnUtPndpZGdldCkKLQlkZWxldGUgbWVudS0+d2lkZ2V0OwotICAgIG1lbnUtPndpZGdldCA9IDA7Ci19Ly99fX0KLSNlbmRpZiAvKiBGRUFUX01FTlUgKi8KLQotCi0vKgotICogU2Nyb2xsYmFyIHN0dWZmLgotICovCi0KLSAgICB2b2lkCi1ndWlfbWNoX3NldF9zY3JvbGxiYXJfdGh1bWIoc2Nyb2xsYmFyX1QgKnNiLCBsb25nIHZhbCwgbG9uZyBzaXplLCBsb25nIG1heCkvL3t7ewotewotICAgIGlmICghc2ItPncpCi0JcmV0dXJuOwotCi0gICAgc2ItPnctPnNldFJhbmdlKDAsIG1heCArIDEgLSBzaXplKTsKLSAgICBzYi0+dy0+c2V0VmFsdWUodmFsKTsKLQotICAgIHNiLT53LT5zZXRMaW5lU3RlcCgxKTsKLSAgICBzYi0+dy0+c2V0UGFnZVN0ZXAoc2l6ZSk7Ci19Ly99fX0KLQotICAgIHZvaWQKLWd1aV9tY2hfc2V0X3Njcm9sbGJhcl9wb3Moc2Nyb2xsYmFyX1QgKnNiLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkvL3t7ewotewotICAgIGlmICghc2ItPncpCi0JcmV0dXJuOwotCi0gICAgLy93ZSBhZGQgdGhlIG1lbnViYXIgYW5kIHRvb2xiYXIgaGVpZ2h0L3dpZHRoCi0gICAgaW50IFggPSAwOwotICAgIGludCBZID0gMDsKLQotICAgIGlmICh2bXctPm1lbnVCYXIoKS0+aXNWaXNpYmxlKCkgJiYgdm13LT5tZW51QmFyKCktPmlzRW5hYmxlZCgpCi0jaWYgUVRfVkVSU0lPTj49MzAwCi0JCQkJCSAgJiYgIXZtdy0+bWVudUJhcigpLT5pc1RvcExldmVsTWVudSgpCi0jZW5kaWYKLSAgICAgICApCi0JWSArPSB2bXctPm1lbnVCYXIoKS0+aGVpZ2h0KCk7Ci0jaWZkZWYgRkVBVF9UT09MQkFSCi0gICAgaWYgKHZtdy0+dG9vbEJhcigpLT5pc1Zpc2libGUoKSAmJiB2bXctPnRvb2xCYXIoKS0+aXNFbmFibGVkKCkKLQkJCQkgICAmJiB2bXctPnRvb2xCYXIoKS0+YmFyUG9zKCk9PUtUb29sQmFyOjpUb3ApCi0JWSArPSB2bXctPnRvb2xCYXIoKS0+aGVpZ2h0KCk7Ci0KLSAgICBpZiAodm13LT50b29sQmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+dG9vbEJhcigpLT5pc0VuYWJsZWQoKQotCQkJCSAgJiYgdm13LT50b29sQmFyKCktPmJhclBvcygpPT1LVG9vbEJhcjo6TGVmdCkKLQlYICs9IHZtdy0+dG9vbEJhcigpLT53aWR0aCgpOwotI2VuZGlmIC8vRkVBVF9UT09MQkFSCi0gICAgaWYgKHNiLT53LT5vcmllbnRhdGlvbigpID09IFF0OjpWZXJ0aWNhbCkKLSAgICB7Ci0JYm9vbCBsZWZ0c2Nyb2xsPWd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfTEVGVF07Ci0JYm9vbCByaWdodHNjcm9sbD1ndWkud2hpY2hfc2Nyb2xsYmFyc1tTQkFSX1JJR0hUXTsKLQotCWlmICh4IDwgMjApCi0JICAgIGxlZnRzY3JvbGwgPSB0cnVlOwotCWVsc2UKLQkgICAgcmlnaHRzY3JvbGwgPSB0cnVlOwotCWlmICh4IDwgMjApCi0JICAgIHNiLT53LT5zZXRHZW9tZXRyeShYLCB5K1ksIHcsIGgpOwotCWVsc2UKLQkgICAgc2ItPnctPnNldEdlb21ldHJ5KHZtdy0+d2lkdGgoKSAtIHcgLSAxICsgWCwgeSArIFksIHcsIGgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotCXNiLT53LT5zZXRHZW9tZXRyeSh4ICsgWCwgeSArIFksIHcsIGgpOwotICAgIH0KLX0vL319fQotCi0vKiBTQkFSX1ZFUlQgb3IgU0JBUl9IT1JJWiAqLwotICAgIHZvaWQKLWd1aV9tY2hfY3JlYXRlX3Njcm9sbGJhcihzY3JvbGxiYXJfVCAqc2IsIGludCBvcmllbnQpLy97e3sKLXsKLSAgICBzYnBvb2wtPmNyZWF0ZShzYixvcmllbnQpOwotICAgIGlmIChvcmllbnQgPT0gU0JBUl9WRVJUKQotCWd1aS5zY3JvbGxiYXJfd2lkdGggPSBzYi0+dy0+c2l6ZUhpbnQoKS53aWR0aCgpOwotICAgIGVsc2UKLQlndWkuc2Nyb2xsYmFyX2hlaWdodCA9IHNiLT53LT5zaXplSGludCgpLmhlaWdodCgpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1ndWlfbWNoX2Rlc3Ryb3lfc2Nyb2xsYmFyKHNjcm9sbGJhcl9UICpzYikvL3t7ewotewotICAgIHNicG9vbC0+ZGVzdHJveShzYik7Ci19Ly99fX0KLQotI2lmIGRlZmluZWQoRkVBVF9CUk9XU0UpIHx8IGRlZmluZWQoUFJPVE8pCi0vKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGZpbGUgc2VsZWN0b3IgcmVsYXRlZCBzdHVmZgotICovCi0KLS8qCi0gKiBDb252ZXJ0IHRoZSBWaW0tc3R5bGUgZmlsdGVyIHNwZWNpZmljYXRpb24gJ3MnIHRvIHRoZSBLREUtc3R5bGUKLSAqIGZpbHRlciBzcGVjaWZpY2F0aW9uLgotICogICAgICBWaW0tc3R5bGU6ICAgICAge2xhYmVsfVx0e3BhdHRlcm4xfTt7cGF0dGVybjJ9XG4KLSAqICAgICAgS0RFLXN0eWxlOiAgICAgIHtwYXR0ZXJuMX0ge3BhdHRlcm4yfXx7bGFiZWx9XG4KLSAqCi0gKiBUaGUgbmV3bHkgY29uc3RydWN0ZWQgZmlsdGVyIGlzIHJldHVybmVkIGluIGFsbG9jYXRlZCBtZW1vcnkgYW5kCi0gKiBtdXN0IGJlIGZyZWVkIGJ5IHRoZSBjYWxsaW5nIHByb2dyYW0uCi0gKi8KLSAgICBzdGF0aWMgY2hhciAqCi1jb252ZXJ0X2ZpbHRlcihjaGFyX3UgKnMpCi17Ci0gICAgY2hhcgkqcmVzOwotICAgIHVuc2lnbmVkCWk7Ci0gICAgdW5zaWduZWQJcGF0dGVybl9sZW47Ci0gICAgY2hhcgkqZmlsdGVyX2xhYmVsOwotICAgIGNoYXIJKmZpbHRlcl9wYXR0ZXJuOwotCi0gICAgLy8gVGhlIGNvbnZlcnNpb24gZ2VuZXJhdGVzIGEgc3RyaW5nIG9mIGVxdWFsIGxlbmd0aCB0byB0aGUgb3JpZ2luYWwKLSAgICAvLyBwYXR0ZXJuLCBzbyBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IHRvIGhvbGQgdGhlIG9yaWdpbmFsIHN0cmluZy4KLSAgICByZXMgPSBuZXcgY2hhcltTVFJMRU4ocykgKyAxXTsKLSAgICBzID0gdmltX3N0cnNhdmUocyk7Ci0gICAgaWYgKHJlcyAhPSBOVUxMICYmIHMgIT0gTlVMTCkKLSAgICB7Ci0JLy8gTWFrZSBzdXJlIHRoZSBmaXJzdCBieXRlIGlzIGEgTlVMIHNvIHRoYXQgc3RyY2F0KCkKLQkvLyB3aWxsIGFwcGVuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCi0JcmVzWzBdID0gJ1wwJzsKLQlmaWx0ZXJfbGFiZWwgPSBzdHJ0b2soKGNoYXIgKikgcywgIlx0Iik7Ci0Jd2hpbGUgKGZpbHRlcl9sYWJlbCAhPSBOVUxMKQotCXsKLQkgICAgZmlsdGVyX3BhdHRlcm4gPSBzdHJ0b2soIDBMLCAiXG4iKTsKLQkgICAgaWYgKGZpbHRlcl9wYXR0ZXJuICE9IE5VTEwpCi0JICAgIHsKLQkJcGF0dGVybl9sZW4gPSAodW5zaWduZWQpIFNUUkxFTihmaWx0ZXJfcGF0dGVybik7Ci0JCWZvciAoaSA9IDA7IGkgPCBwYXR0ZXJuX2xlbjsgKytpKQotCQkgICAgaWYgKGZpbHRlcl9wYXR0ZXJuW2ldID09ICc7JykKLQkJCWZpbHRlcl9wYXR0ZXJuW2ldID0gJyAnOwotCi0JCXN0cmNhdChyZXMsIGZpbHRlcl9wYXR0ZXJuKTsKLQkJc3RyY2F0KHJlcywgInwiKTsKLQkJc3RyY2F0KHJlcywgZmlsdGVyX2xhYmVsKTsKLQkJc3RyY2F0KHJlcywgIlxuIik7Ci0JICAgIH0KLQkgICAgZmlsdGVyX2xhYmVsID0gc3RydG9rKDBMLCAiXHQiKTsKLQl9Ci0gICAgfQotICAgIGlmIChzKQotCXZpbV9mcmVlKHMpOwotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBQdXQgdXAgYSBmaWxlIHJlcXVlc3Rlci4KLSAqIFJldHVybnMgdGhlIHNlbGVjdGVkIG5hbWUgaW4gYWxsb2NhdGVkIG1lbW9yeSwgb3IgTlVMTCBmb3IgQ2FuY2VsLgotICogc2F2aW5nLAkJCXNlbGVjdCBmaWxlIHRvIHdyaXRlCi0gKiB0aXRsZQkJCXRpdGxlIGZvciB0aGUgd2luZG93Ci0gKiBkZmx0CQkJCWRlZmF1bHQgbmFtZQotICogZXh0CQkJCW5vdCB1c2VkIChleHRlbnNpb24gYWRkZWQpCi0gKiBpbml0ZGlyCQkJaW5pdGlhbCBkaXJlY3RvcnksIE5VTEwgZm9yIGN1cnJlbnQgZGlyCi0gKiBmaWx0ZXIJCQlub3QgdXNlZCAoZmlsZSBuYW1lIGZpbHRlcikKLSAqLwotLypBUkdTVVNFRCovCi0gICAgY2hhcl91ICoKLWd1aV9tY2hfYnJvd3NlKGludCBzYXZpbmcsLy97e3sKLQkJY2hhcl91ICp0aXRsZSwKLQkJY2hhcl91ICpkZmx0LAotCQljaGFyX3UgKmV4dCwKLQkJY2hhcl91ICppbml0ZGlyLAotCQljaGFyX3UgKmZpbHRlcikKLXsKLSAgICBjaGFyICpmaWx0X2dsb2I7Ci0KLSAgICBmaWx0X2dsb2IgPSBjb252ZXJ0X2ZpbHRlcihmaWx0ZXIpOwotCi0gICAgZ3VpX21jaF9tb3VzZWhpZGUoRkFMU0UpOwotCi0gICAgUVN0cmluZyBzOwotICAgIGlmICghc2F2aW5nKQotCXMgPSBLRmlsZURpYWxvZzo6Z2V0T3BlbkZpbGVOYW1lKFFTVFIoaW5pdGRpciksIFFTVFIoZmlsdF9nbG9iKSwKLQkJCQkJCQkgIHZtdywgUVNUUih0aXRsZSkpOwotICAgIGVsc2UKLQlzID0gS0ZpbGVEaWFsb2c6OmdldFNhdmVGaWxlTmFtZSgpOwotCi0gICAgaWYgKGZpbHRfZ2xvYikKLQlkZWxldGUgZmlsdF9nbG9iOwotCi0gICAgaWYgKHMuaXNOdWxsKCkpCi0JcmV0dXJuIE5VTEw7Ci0gICAgUUNTdHJpbmcgdW5pc3RyaW5nID0gdm13LT5jb2RlYy0+ZnJvbVVuaWNvZGUocyk7Ci0gICAgY2hhcl91ICpzMiA9IChjaGFyX3UgKikoY29uc3QgY2hhciAqKXVuaXN0cmluZzsKLSAgICBpZiAoczIpCi0JczIgPSB2aW1fc3Ryc2F2ZShzMik7Ci0KLSAgICByZXR1cm4gczI7Ci19Ly99fX0KLQotI2VuZGlmCS8qIEZFQVRfQlJPV1NFICovCi0KLSNpZmRlZiBGRUFUX0dVSV9ESUFMT0cKLQotLyogQVJHU1VTRUQgKi8KLSAgICBpbnQKLWd1aV9tY2hfZGlhbG9nKGludCB0eXBlLAkJLyogdHlwZSBvZiBkaWFsb2cgKi8vL3t7ewotCQljaGFyX3UgKnRpdGxlLAkJLyogdGl0bGUgb2YgZGlhbG9nICovCi0JCWNoYXJfdSAqbWVzc2FnZSwJLyogbWVzc2FnZSB0ZXh0ICovCi0JCWNoYXJfdSAqYnV0dG9ucywJLyogbmFtZXMgb2YgYnV0dG9ucyAqLwotCQlpbnQgICAgZGVmX2J1dCwJCS8qIGRlZmF1bHQgYnV0dG9uICovCi0JCWNoYXJfdSAqdGV4dGZpZWxkKQotewotICAgIGd1aV9tY2hfbW91c2VoaWRlKEZBTFNFKTsKLSAgICBWaW1EaWFsb2cgdmQodHlwZSwgdGl0bGUsIG1lc3NhZ2UsIGJ1dHRvbnMsIGRlZl9idXQsdGV4dGZpZWxkKTsKLSAgICBpbnQgcmV0ID0gdmQuZXhlYygpOwotICAgIHJldHVybiByZXQ7Ci19Ly99fX0KLQotCi0jZW5kaWYJLyogRkVBVF9HVUlfRElBTE9HICovCi0KLSNpZiBkZWZpbmVkKEZFQVRfTUVOVSkgfHwgZGVmaW5lZChQUk9UTykKLSAgICB2b2lkCi1ndWlfbWNoX3Nob3dfcG9wdXBtZW51KHZpbW1lbnVfVCAqbWVudSkvL3t7ewotewotICAgIG1lbnUtPndpZGdldC0+cG9wdXAoUUN1cnNvcjo6cG9zKCkpOwotfS8vfX19Ci0KLS8qIFRPRE86IHVzZSBtb3VzZV9wb3MgKi8KLXZvaWQKLWd1aV9tYWtlX3BvcHVwIChjaGFyX3UgKnBhdGhuYW1lLCBpbnQgbW91c2VfcG9zKS8ve3t7Ci17Ci0gICAgdmltbWVudV9UICptZW51ID0gZ3VpX2ZpbmRfbWVudShwYXRobmFtZSk7Ci0KLSAgICBpZiAobWVudSAhPSBOVUxMKQotCW1lbnUtPndpZGdldC0+cG9wdXAoUUN1cnNvcjo6cG9zKCkpOwotfS8vfX19Ci0jZW5kaWYKLQotCi0KLS8qIEZpbmQgYW5kIFJlcGxhY2UgaW1wbGVtZW50YXRpb25zICovCi0gICAgdm9pZAotZ3VpX21jaF9maW5kX2RpYWxvZyhleGFyZ19UICplYXApLy97e3sKLXsKLSAgICAvLyBjaGFyX3UqIGVudHJ5X3RleHQ7Ci0gICAgLy9pbnQgZXhhY3Rfd29yZD1GQUxTRTsKLSAgICAvLyAgICBlbnRyeV90ZXh0ID0gZ2V0X2ZpbmRfZGlhbG9nX3RleHQoZWFwLT5hcmcsJmV4YWN0X3dvcmQpOwotCi0gICAgdm13LT5maW5kZGxnLT5zZXRDYXNlU2Vuc2l0aXZlKHRydWUpOwotCi0gICAgLyogICAgaWYgKGVudHJ5X3RleHQhPU5VTEwpCi0gICAgICogICAgewotCSAgdm13LT5maW5kZGxnLT5zZXRUZXh0KFFTdHJpbmcoKGNoYXIgKillbnRyeV90ZXh0KSk7Ci0gICAgLy8gZXhhY3QgbWF0Y2ggc2hvdWxkIGdvIHRoZXJlLCBob3BlZnVsbHkgS0RFIG9sZCBLRWRGaW5kL0tFZFJlcGxhY2Ugd2lsbCBiZSByZXBsYWNlZCBpbiBLREUgNCBhcyBwcGxlIHdhbnRlZCBLREUgMydzIEZpbmQvUmVwbGFjZSB0byBiZSBrZXB0Ci0gICAgfSovIC8vIERvbid0IHVzZSBpdCwgS0RFIGtlZXBzIG9sZCBzZWFyY2ggaW4gbWVtb3J5IGFuZCB2aW0gZ2l2ZSBcXENzZWFyY2gsIHdoaWNoIGlzIGRpZmZpY3VsdCB0byBoYW5kbGUKLSAgICAvLyAgIHZpbV9mcmVlKGVudHJ5X3RleHQpOwotCi0gICAgdm13LT5maW5kZGxnLT5zaG93KCk7Ci19Ly99fX0KLQotICAgIHZvaWQKLWd1aV9tY2hfcmVwbGFjZV9kaWFsb2coZXhhcmdfVCAqZWFwKS8ve3t7Ci17Ci0gICAgLy8gIGNoYXJfdSogZW50cnlfdGV4dDsKLSAgICAvL2ludCBleGFjdF93b3JkPUZBTFNFOwotCi0gICAgLy8gICAgZW50cnlfdGV4dCA9IGdldF9maW5kX2RpYWxvZ190ZXh0KGVhcC0+YXJnLCZleGFjdF93b3JkKTsKLQotICAgIC8qICAgIGlmIChlbnRyeV90ZXh0IT1OVUxMKQotICAgICAqICAgIHsKLSAgICAgdm13LT5yZXBsZGxnLT5zZXRUZXh0KFFTdHJpbmcoKGNoYXIgKillbnRyeV90ZXh0KSk7Ci0gICAgLy8gZXhhY3QgbWF0Y2ggc2hvdWxkIGdvIHRoZXJlLCBob3BlZnVsbHkgS0RFIG9sZCBLRWRGaW5kL0tFZFJlcGxhY2Ugd2lsbCBiZSByZXBsYWNlZCBpbiBLREUgNCBhcyBwcGxlIHdhbnRlZCBLREUgMydzIEZpbmQvUmVwbGFjZSB0byBiZSBrZXB0Ci0gICAgfSovCi0gICAgLy92aW1fZnJlZShlbnRyeV90ZXh0KTsKLQotICAgIHZtdy0+cmVwbGRsZy0+c2hvdygpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1leF9oZWxwZmluZChleGFyZ19UICplYXApLy97e3sKLXsKLSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopImVtZW51IFRvb2xCYXIuRmluZEhlbHAiKTsKLX0vL319fQpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9rZGVfd2lkLmNjIGIvc3JjL2d1aV9rZGVfd2lkLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGI4NTM5Li4wMDAwMDAwCi0tLSBhL3NyYy9ndWlfa2RlX3dpZC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE2NDQgKzAsMCBAQAotLyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKLSAqCi0gKiBWSU0gLSBWaSBJTXByb3ZlZAkJYnkgQnJhbSBNb29sZW5hYXIKLSAqCi0gKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KLSAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgotICovCi0KLS8qCi0gKiBQb3J0aW5nIHRvIEtERSgyKSB3YXMgZG9uZSBieQotICoKLSAqICAoQykgMjAwMCBieSBUaG9tYXMgQ2FwcmljZWxsaSA8b3J6ZWxAZnJlZWhhY2tlcnMub3JnPgotICoKLSAqICBQbGVhc2UgdmlzaXQgaHR0cDovL2ZyZWVoYWNrZXJzLm9yZy9rdmltIGZvciBvdGhlciB2aW0tIG9yCi0gKiAga2RlLXJlbGF0ZWQgY29kaW5nLgotICoKLSAqICAkSWQkCi0gKgotICovCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxxcGFpbnRlci5oPgotI2luY2x1ZGUgPHFldmVudC5oPgotI2luY2x1ZGUgPHFwdXNoYnV0dG9uLmg+Ci0jaW5jbHVkZSA8cXNjcm9sbGJhci5oPgotI2luY2x1ZGUgPHFsYXlvdXQuaD4KLSNpbmNsdWRlIDxxY2xpcGJvYXJkLmg+Ci0jaW5jbHVkZSA8cWRyYWdvYmplY3QuaD4KLSNpbmNsdWRlIDxxc3RybGlzdC5oPgotI2luY2x1ZGUgPHFtZW51YmFyLmg+Ci0jaW5jbHVkZSA8cXRleHRjb2RlYy5oPgotI2lmIFFUX1ZFUlNJT04+PTMwMAotI2luY2x1ZGUgPHFwdHJsaXN0Lmg+Ci0jaW5jbHVkZSA8a3RpcC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8a2dsb2JhbC5oPgotI2luY2x1ZGUgPGtjb25maWcuaD4KLSNpbmNsdWRlIDxrYWJvdXRhcHBsaWNhdGlvbi5oPgotI2luY2x1ZGUgPGRjb3BjbGllbnQuaD4KLSNpbmNsdWRlIDxrYWJvdXRrZGUuaD4KLSNpbmNsdWRlIDxrYnVncmVwb3J0Lmg+Ci0jaW5jbHVkZSA8a3VybGRyYWcuaD4KLSNpbmNsdWRlIDxrbWVudWJhci5oPgotI2luY2x1ZGUgPGt0b29sYmFyLmg+Ci0jaW5jbHVkZSA8a3N0YW5kYXJkZGlycy5oPgotI2luY2x1ZGUgImd1aV9rZGVfd2lkLmgiCi0jaW5jbHVkZSA8cXhlbWJlZC5oPgotCi1leHRlcm4gIkMiCi17Ci0jaW5jbHVkZSAidmVyc2lvbi5oIgotfQotCi0vLyBQaXhtYXAgZm9yIGRpYWxvZwotI2lmZGVmIEZFQVRfR1VJX0RJQUxPRwotIyBpbmNsdWRlICIuLi8uLi9waXhtYXBzL2FsZXJ0LnhwbSIKLSMgaW5jbHVkZSAiLi4vLi4vcGl4bWFwcy9lcnJvci54cG0iCi0jIGluY2x1ZGUgIi4uLy4uL3BpeG1hcHMvZ2VuZXJpYy54cG0iCi0jIGluY2x1ZGUgIi4uLy4uL3BpeG1hcHMvaW5mby54cG0iCi0jIGluY2x1ZGUgIi4uLy4uL3BpeG1hcHMvcXVlc3QueHBtIgotI2VuZGlmCi0KLS8qKgotICogS2V5Y29kZXMgcmVjb2duaXplZCBieSB2aW0uCi0gKi8KLXN0cnVjdCBzcGVjaWFsX2tleSB7Ly97e3sKLSAgICBpbnQgcXRrZXk7Ci0gICAgY2hhcl91IGNvZGUwOwotICAgIGNoYXJfdSBjb2RlMTsKLX0gc3BlY2lhbF9rZXlzW10gPQotewotICAgIHtRdDo6S2V5X1VwLAknaycsICd1J30sCi0gICAge1F0OjpLZXlfRG93biwJJ2snLCAnZCd9LAotICAgIHtRdDo6S2V5X0xlZnQsCSdrJywgJ2wnfSwKLSAgICB7UXQ6OktleV9SaWdodCwJJ2snLCAncid9LAotICAgIHtRdDo6S2V5X0YxLAknaycsICcxJ30sCi0gICAge1F0OjpLZXlfRjIsCSdrJywgJzInfSwKLSAgICB7UXQ6OktleV9GMywJJ2snLCAnMyd9LAotICAgIHtRdDo6S2V5X0Y0LAknaycsICc0J30sCi0gICAge1F0OjpLZXlfRjUsCSdrJywgJzUnfSwKLSAgICB7UXQ6OktleV9GNiwJJ2snLCAnNid9LAotICAgIHtRdDo6S2V5X0Y3LAknaycsICc3J30sCi0gICAge1F0OjpLZXlfRjgsCSdrJywgJzgnfSwKLSAgICB7UXQ6OktleV9GOSwJJ2snLCAnOSd9LAotICAgIHtRdDo6S2V5X0YxMCwJJ2snLCAnOyd9LAotICAgIHtRdDo6S2V5X0YxMSwJJ0YnLCAnMSd9LAotICAgIHtRdDo6S2V5X0YxMiwJJ0YnLCAnMid9LAotICAgIHtRdDo6S2V5X0YxMywJJ0YnLCAnMyd9LAotICAgIHtRdDo6S2V5X0YxNCwJJ0YnLCAnNCd9LAotICAgIHtRdDo6S2V5X0YxNSwJJ0YnLCAnNSd9LAotICAgIHtRdDo6S2V5X0YxNiwJJ0YnLCAnNid9LAotICAgIHtRdDo6S2V5X0YxNywJJ0YnLCAnNyd9LAotICAgIHtRdDo6S2V5X0YxOCwJJ0YnLCAnOCd9LAotICAgIHtRdDo6S2V5X0YxOSwJJ0YnLCAnOSd9LAotICAgIHtRdDo6S2V5X0YyMCwJJ0YnLCAnQSd9LAotICAgIHtRdDo6S2V5X0YyMSwJJ0YnLCAnQid9LAotICAgIHtRdDo6S2V5X0YyMiwJJ0YnLCAnQyd9LAotICAgIHtRdDo6S2V5X0YyMywJJ0YnLCAnRCd9LAotICAgIHtRdDo6S2V5X0YyNCwJJ0YnLCAnRSd9LAotICAgIHtRdDo6S2V5X0YyNSwJJ0YnLCAnRid9LAotICAgIHtRdDo6S2V5X0YyNiwJJ0YnLCAnRyd9LAotICAgIHtRdDo6S2V5X0YyNywJJ0YnLCAnSCd9LAotICAgIHtRdDo6S2V5X0YyOCwJJ0YnLCAnSSd9LAotICAgIHtRdDo6S2V5X0YyOSwJJ0YnLCAnSid9LAotICAgIHtRdDo6S2V5X0YzMCwJJ0YnLCAnSyd9LAotICAgIHtRdDo6S2V5X0YzMSwJJ0YnLCAnTCd9LAotICAgIHtRdDo6S2V5X0YzMiwJJ0YnLCAnTSd9LAotICAgIHtRdDo6S2V5X0YzMywJJ0YnLCAnTid9LAotICAgIHtRdDo6S2V5X0YzNCwJJ0YnLCAnTyd9LAotICAgIHtRdDo6S2V5X0YzNSwJJ0YnLCAnUCd9LAotICAgIHtRdDo6S2V5X0hlbHAsCSclJywgJzEnfSwKLSAgICAvLyAgICB7IFF0OjpLZXlfVW5kbywJJyYnLCAnOCd9LCA8PSBobW1tID8KLSAgICB7UXQ6OktleV9CYWNrU3BhY2UsCSdrJywgJ2InfSwKLSAgICB7UXQ6OktleV9JbnNlcnQsCUtTX0VYVFJBLCBLRV9LSU5TIH0sCi0gICAge1F0OjpLZXlfRGVsZXRlLAlLU19FWFRSQSwgS0VfS0RFTCB9LAotICAgIHtRdDo6S2V5X0hvbWUsCSdLJywgJzEnfSwKLSAgICB7UXQ6OktleV9FbmQsCSdLJywgJzQnfSwKLSAgICB7UXQ6OktleV9QcmlvciwJJ0snLCAnMyd9LAotICAgIHtRdDo6S2V5X05leHQsCSdLJywgJzUnfSwKLSAgICB7UXQ6OktleV9QcmludCwJJyUnLCAnOSd9LAotCi0gICAge1F0OjpLZXlfUGx1cywJJ0snLCAnNid9LAotICAgIHtRdDo6S2V5X01pbnVzLAknSycsICc3J30sCi0gICAge1F0OjpLZXlfU2xhc2gsCSdLJywgJzgnfSwKLSAgICB7UXQ6OktleV9tdWx0aXBseSwJJ0snLCAnOSd9LAotICAgIHtRdDo6S2V5X0VudGVyLAknSycsICdBJ30sCi0gICAge1F0OjpLZXlfUGVyaW9kLAknSycsICdCJ30sCi0KLSAgICB7UXQ6OktleV8wLAkJJ0snLCAnQyd9LAotICAgIHtRdDo6S2V5XzEsCQknSycsICdEJ30sCi0gICAge1F0OjpLZXlfMiwJCSdLJywgJ0UnfSwKLSAgICB7UXQ6OktleV8zLAkJJ0snLCAnRid9LAotICAgIHtRdDo6S2V5XzQsCQknSycsICdHJ30sCi0gICAge1F0OjpLZXlfNSwJCSdLJywgJ0gnfSwKLSAgICB7UXQ6OktleV82LAkJJ0snLCAnSSd9LAotICAgIHtRdDo6S2V5XzcsCQknSycsICdKJ30sCi0gICAge1F0OjpLZXlfOCwJCSdLJywgJ0snfSwKLSAgICB7UXQ6OktleV85LAkJJ0snLCAnTCd9LAotCi0gICAgLyogRW5kIG9mIGxpc3QgbWFya2VyOiAqLwotICAgIHswLCAwLCAwfQotfTsvL319fQotCi0jaWZkZWYgRkVBVF9DTElFTlRTRVJWRVIKLXR5cGVkZWYgaW50ICgqUVgxMUV2ZW50RmlsdGVyKShYRXZlbnQqKTsKLWV4dGVybgkgICAgUVgxMUV2ZW50RmlsdGVyIHF0X3NldF94MTFfZXZlbnRfZmlsdGVyKFFYMTFFdmVudEZpbHRlciBmaWx0ZXIpOwotc3RhdGljCSAgICBRWDExRXZlbnRGaWx0ZXIgb2xkRmlsdGVyID0gMDsKLXN0YXRpYyBpbnQgIGt2aW1feDExX2V2ZW50X2ZpbHRlcihYRXZlbnQqIGUpOwotI2VuZGlmCi12b2lkCSAgICBndWlfa2V5cHJlc3MoUUtleUV2ZW50ICplKTsKLQotLyoKLSAqIFJldHVybiBPSyBpZiB0aGUga2V5IHdpdGggdGhlIHRlcm1jYXAgbmFtZSAibmFtZSIgaXMgc3VwcG9ydGVkLgotICovCi0gICAgaW50Ci1ndWlfbWNoX2hhc2tleShjaGFyX3UgKiBuYW1lKS8ve3t7Ci17Ci0gICAgZm9yIChpbnQgaSA9IDA7IHNwZWNpYWxfa2V5c1tpXS5xdGtleSAhPSAwOyBpKyspCi0JaWYgKG5hbWVbMF0gPT0gc3BlY2lhbF9rZXlzW2ldLmNvZGUwCi0JCQkJCSAgJiYgbmFtZVsxXSA9PSBzcGVjaWFsX2tleXNbaV0uY29kZTEpCi0JICAgIHJldHVybiBPSzsKLSAgICByZXR1cm4gRkFJTDsKLX0vL319fQotCi0vKgotICogY3VzdG9tIEZyYW1lIGZvciBkcmF3aW5nIC4uLgotICovCi0gICAgdm9pZAotVmltV2lkZ2V0OjpwYWludEV2ZW50KFFQYWludEV2ZW50ICplKS8ve3t7Ci17Ci0gICAgUVJlY3QgciA9IGUtPnJlY3QoKTsKLSAgICBndWlfcmVkcmF3KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpkcmF3X3N0cmluZyhpbnQgeCwgaW50IHksIFFTdHJpbmcgcywgaW50IGxlbiwgaW50IGZsYWdzKS8ve3t7Ci17Ci0gICAgZ3VpLmN1cnJlbnRfZm9udC0+c2V0Qm9sZChmbGFncyAmIERSQVdfQk9MRCk7Ci0gICAgZ3VpLmN1cnJlbnRfZm9udC0+c2V0VW5kZXJsaW5lKGZsYWdzICYgRFJBV19VTkRFUkwpOwotICAgIGd1aS5jdXJyZW50X2ZvbnQtPnNldEl0YWxpYyhmbGFncyAmIERSQVdfSVRBTElDKTsKLSAgICBwYWludGVyLT5zZXRCYWNrZ3JvdW5kTW9kZShmbGFncyAmIERSQVdfVFJBTlNQCi0JCQkJICAgICAgPyBRdDo6VHJhbnNwYXJlbnRNb2RlIDogUXQ6Ok9wYXF1ZU1vZGUpOwotICAgIHBhaW50ZXItPnNldEZvbnQoKihndWkuY3VycmVudF9mb250KSk7Ci0gICAgcGFpbnRlci0+ZHJhd1RleHQoeCwgeSwgcywgbGVuKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0Ojptb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KS8ve3t7Ci17Ci0gICAgaW50CQlidXR0b24gPSAwOwotICAgIGludAkJbW9kaWZpZXJzID0gMDsKLSAgICBCdXR0b25TdGF0ZSBzdGF0ZSA9IGV2ZW50LT5zdGF0ZSgpOwotICAgIEJ1dHRvblN0YXRlIGJ1dHRvbnMgPSBldmVudC0+YnV0dG9uKCk7Ci0KLSAgICAvL0xvb2sgYXQgYnV0dG9uIHN0YXRlcwotICAgIGlmIChidXR0b25zICYgUU1vdXNlRXZlbnQ6OkxlZnRCdXR0b24pCi0JYnV0dG9uIHw9IE1PVVNFX0xFRlQ7Ci0gICAgaWYgKGJ1dHRvbnMgJiBRTW91c2VFdmVudDo6UmlnaHRCdXR0b24pCi0JYnV0dG9uIHw9IE1PVVNFX1JJR0hUOwotICAgIGlmIChidXR0b25zICYgUU1vdXNlRXZlbnQ6Ok1pZEJ1dHRvbikKLQlidXR0b24gfD0gTU9VU0VfTUlERExFOwotICAgIC8vTG9vayBmb3Iga2V5Ym9hcmQgbW9kaWZpZXJzCi0gICAgaWYgKHN0YXRlICYgUU1vdXNlRXZlbnQ6OlNoaWZ0QnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9TSElGVDsKLSAgICBpZiAoc3RhdGUgJiBRTW91c2VFdmVudDo6Q29udHJvbEJ1dHRvbikKLQltb2RpZmllcnMgfD0gTU9VU0VfQ1RSTDsKLSAgICBpZiAoc3RhdGUgJiBRTW91c2VFdmVudDo6QWx0QnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9BTFQ7Ci0gICAgZ3VpX3NlbmRfbW91c2VfZXZlbnQoYnV0dG9uLCBldmVudC0+eCgpLCBldmVudC0+eSgpLCBGQUxTRSwgbW9kaWZpZXJzKTsKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICBRQnl0ZUFycmF5IHBhcmFtczsKLSAgICBRRGF0YVN0cmVhbSBzdHJlYW0ocGFyYW1zLCBJT19Xcml0ZU9ubHkpOwotICAgIHN0cmVhbSA8PCBrYXBwLT5kY29wQ2xpZW50KCktPmFwcElkKCkgPDwgYnV0dG9uIDw8IG1vZGlmaWVycwotCQkJCQkJCTw8IGd1aS5yb3cgPDwgZ3VpLmNvbDsKLSAgICBrYXBwLT5kY29wQ2xpZW50KCktPmVtaXREQ09QU2lnbmFsKAotCQkJICJtb3VzZVBFdmVudChRQ1N0cmluZywgaW50LCBpbnQsIGludCwgaW50KSIsIHBhcmFtcyk7Ci0jZW5kaWYKLSAgICBldmVudC0+YWNjZXB0KCk7Ci19Ly99fX0KLQotI2lmIGRlZmluZWQoRkVBVF9TRVNTSU9OKQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNhdmVHbG9iYWxQcm9wZXJ0aWVzKEtDb25maWcgKmNvbmYpCi17Ci0gICAgLy93ZSB3cml0ZSBhIG1rc2Vzc2lvbiBmaWxlIHRvIGEgZmlsZSB3cml0dGVuIGluIHRoZSB1c2VyJ3Mgfi8ua2RlL3NoYXJlL2NvbmZpZy8KLSAgICAvL3RoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHNhdmVkIGluICdjb25mJwotICAgIC8vd2hlbiByZXN0b3JpbmcgYXBwLCB3ZSBzb3VyY2UgdGhpcyBmaWxlCi0jaWYgMCAvL2Rpc2FibGVkIGZvciByZWxlYXNlCi0gICAgUVN0cmluZyBmaWxlbmFtZSA9IEtHbG9iYWw6OmRpcnMoKS0+bG9jYWxrZGVkaXIoKSArIEtHbG9iYWw6OmRpcnMoKS0+a2RlX2RlZmF1bHQoImNvbmZpZyIpICsga2FwcC0+cmFuZG9tU3RyaW5nKDEwKTsKLSAgICBRU3RyaW5nIGNtZCgibWtzZXNzaW9uICIpOwotICAgIGNtZCs9ZmlsZW5hbWU7Ci0gICAgZG9fY21kbGluZV9jbWQoKGNoYXJfdSopY21kLmxhdGluMSgpKTsKLSAgICBjb25mLT53cml0ZVBhdGhFbnRyeSgic2Vzc2lvbmZpbGUiLCBmaWxlbmFtZSk7Ci0gICAgY29uZi0+c3luYygpOwotI2VuZGlmCi19Ci0KLSAgICB2b2lkCi1WaW1NYWluV2luZG93OjpyZWFkR2xvYmFsUHJvcGVydGllcyAoS0NvbmZpZyAqY29uZikKLXsKLSNpZiAwCi0gICAgUVN0cmluZyBmaWxlbmFtZSA9IGNvbmYtPnJlYWRQYXRoRW50cnkoInNlc3Npb25maWxlIik7Ci0gICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKSByZXR1cm47Ci0gICAgUVN0cmluZyBjbWQoInNvdXJjZSAiKTsKLSAgICBjbWQrPWZpbGVuYW1lOwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UqKWNtZC5sYXRpbjEoKSk7Ci0jZW5kaWYKLX0KLSNlbmRpZgotCi0gICAgdm9pZAotVmltTWFpbldpbmRvdzo6d2hlZWxFdmVudCAoUVdoZWVsRXZlbnQgKmV2ZW50KS8ve3t7Ci17Ci0gICAgQnV0dG9uU3RhdGUgc3RhdGUgPSBldmVudC0+c3RhdGUoKTsKLSAgICBpbnQJCWJ1dHRvbiA9IDA7Ci0gICAgaW50CQltb2RpZmllcnMgPSAwOwotCi0gICAgaWYgKGV2ZW50LT5kZWx0YSgpID4gMCkKLQlidXR0b24gfD0gTU9VU0VfNDsKLSAgICBlbHNlIGJ1dHRvbiB8PSBNT1VTRV81OwotCi0gICAgaWYgKHN0YXRlICYgU2hpZnRCdXR0b24pCi0JbW9kaWZpZXJzIHw9IE1PVVNFX1NISUZUOwotICAgIGlmIChzdGF0ZSAmIENvbnRyb2xCdXR0b24pCi0JbW9kaWZpZXJzIHw9IE1PVVNFX0NUUkw7Ci0gICAgaWYgKHN0YXRlICYgQWx0QnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9BTFQ7Ci0KLSAgICBndWlfc2VuZF9tb3VzZV9ldmVudChidXR0b24sIGV2ZW50LT54KCksIGV2ZW50LT55KCksIEZBTFNFLCBtb2RpZmllcnMpOwotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIFFCeXRlQXJyYXkgcGFyYW1zOwotICAgIFFEYXRhU3RyZWFtIHN0cmVhbShwYXJhbXMsIElPX1dyaXRlT25seSk7Ci0gICAgc3RyZWFtIDw8IGthcHAtPmRjb3BDbGllbnQoKS0+YXBwSWQoKSA8PCBidXR0b24gPDwgbW9kaWZpZXJzCi0JCQkJCQkJPDwgZ3VpLnJvdyA8PCBndWkuY29sOwotICAgIGthcHAtPmRjb3BDbGllbnQoKS0+ZW1pdERDT1BTaWduYWwoCi0JCSAgICAgICAibW91c2VXaGxFdmVudChRQ1N0cmluZywgaW50LCBpbnQsIGludCwgaW50KSIsIHBhcmFtcyk7Ci0jZW5kaWYKLSAgICBldmVudC0+YWNjZXB0KCk7Ci19Ly99fX0KLQotICAgIHZvaWQKLVZpbVdpZGdldDo6bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkvL3t7ewotewotICAgIEJ1dHRvblN0YXRlIHN0YXRlID0gZXZlbnQtPnN0YXRlKCk7Ci0gICAgQnV0dG9uU3RhdGUgYnV0dG9ucyA9IGV2ZW50LT5idXR0b24oKTsKLSAgICBpbnQJCW1vZGlmaWVycyA9IDA7Ci0gICAgaW50CQlidXR0b24gPSAwOwotCi0gICAgLy9Mb29rIGF0IGJ1dHRvbiBzdGF0ZXMKLSAgICBpZiAoYnV0dG9ucyAmIExlZnRCdXR0b24pCi0JYnV0dG9uIHw9IE1PVVNFX0xFRlQ7Ci0gICAgaWYgKGJ1dHRvbnMgJiBSaWdodEJ1dHRvbikKLQlidXR0b24gfD0gTU9VU0VfUklHSFQ7Ci0gICAgaWYgKGJ1dHRvbnMgJiBNaWRCdXR0b24pCi0JYnV0dG9uIHw9IE1PVVNFX01JRERMRTsKLQotICAgIC8vTG9vayBmb3Iga2V5Ym9hcmQgbW9kaWZpZXJzCi0gICAgaWYgKHN0YXRlICYgU2hpZnRCdXR0b24pCi0JbW9kaWZpZXJzIHw9IE1PVVNFX1NISUZUOwotICAgIGlmIChzdGF0ZSAmIENvbnRyb2xCdXR0b24pCi0JbW9kaWZpZXJzIHw9IE1PVVNFX0NUUkw7Ci0gICAgaWYgKHN0YXRlICYgQWx0QnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9BTFQ7Ci0KLSAgICBndWlfc2VuZF9tb3VzZV9ldmVudChidXR0b24sIGV2ZW50LT54KCksIGV2ZW50LT55KCksIFRSVUUsIG1vZGlmaWVycyk7Ci0jaWYgUVRfVkVSU0lPTj49MzAwCi0gICAgUUJ5dGVBcnJheSBwYXJhbXM7Ci0gICAgUURhdGFTdHJlYW0gc3RyZWFtKHBhcmFtcywgSU9fV3JpdGVPbmx5KTsKLSAgICBzdHJlYW0gPDwga2FwcC0+ZGNvcENsaWVudCgpLT5hcHBJZCgpIDw8IGJ1dHRvbiA8PCBtb2RpZmllcnMKLQkJCQkJCQk8PCBndWkucm93IDw8IGd1aS5jb2w7Ci0gICAga2FwcC0+ZGNvcENsaWVudCgpLT5lbWl0RENPUFNpZ25hbCgKLQkJICAibW91c2VEYmxDbGlja0V2ZW50KFFDU3RyaW5nLCBpbnQsIGludCwgaW50LCBpbnQpIiwgcGFyYW1zKTsKLSNlbmRpZgotICAgIGV2ZW50LT5hY2NlcHQoKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0Ojptb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCAqZXZlbnQpLy97e3sKLXsKLSAgICBCdXR0b25TdGF0ZSBzdGF0ZSA9IGV2ZW50LT5zdGF0ZSgpOwotICAgIGludAkJbW9kaWZpZXJzID0gMDsKLSAgICBpbnQJCWJ1dHRvbiA9IDA7Ci0KLSAgICBndWlfbWNoX21vdXNlaGlkZShGQUxTRSk7Ci0KLSAgICAvL0xvb2sgYXQgYnV0dG9uIHN0YXRlcwotICAgIC8vd2FybmluZzogd2UgdXNlIHN0YXRlIGhlcmUsIHRoaXMgaXMgaW1wb3J0YW50ICEKLSAgICBpZiAoc3RhdGUgJiBRTW91c2VFdmVudDo6TGVmdEJ1dHRvbgotCSAgICB8fCBzdGF0ZSAmIFFNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbgotCSAgICB8fCBzdGF0ZSAmIFFNb3VzZUV2ZW50OjpNaWRCdXR0b24pCi0JYnV0dG9uIHw9IE1PVVNFX0RSQUc7Ci0KLSAgICAvL0xvb2sgZm9yIGtleWJvYXJkIG1vZGlmaWVycwotICAgIGlmIChzdGF0ZSAmIFNoaWZ0QnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9TSElGVDsKLSAgICBpZiAoc3RhdGUgJiBDb250cm9sQnV0dG9uKQotCW1vZGlmaWVycyB8PSBNT1VTRV9DVFJMOwotICAgIGlmIChzdGF0ZSAmIEFsdEJ1dHRvbikKLQltb2RpZmllcnMgfD0gTU9VU0VfQUxUOwotICAgIGlmIChidXR0b24gIT0gTU9VU0VfRFJBRykKLQlndWlfbW91c2VfbW92ZWQoZXZlbnQtPngoKSwgZXZlbnQtPnkoKSk7Ci0gICAgZWxzZQotCWd1aV9zZW5kX21vdXNlX2V2ZW50KE1PVVNFX0RSQUcsIGV2ZW50LT54KCksIGV2ZW50LT55KCksCi0JCQkJCQkJICAgIEZBTFNFLCBtb2RpZmllcnMpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6Om1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkvL3t7ewotewotICAgIEJ1dHRvblN0YXRlIHN0YXRlID0gZXZlbnQtPnN0YXRlKCk7Ci0gICAgaW50CQltb2RpZmllcnMgPSAwOwotCi0gICAgLy9Mb29rIGZvciBrZXlib2FyZCBtb2RpZmllcnMKLSAgICBpZiAoc3RhdGUgJiBTaGlmdEJ1dHRvbikKLQltb2RpZmllcnMgfD0gTU9VU0VfU0hJRlQ7Ci0gICAgaWYgKHN0YXRlICYgQ29udHJvbEJ1dHRvbikKLQltb2RpZmllcnMgfD0gTU9VU0VfQ1RSTDsKLSAgICBpZiAoc3RhdGUgJiBBbHRCdXR0b24pCi0JbW9kaWZpZXJzIHw9IE1PVVNFX0FMVDsKLQotICAgIGd1aV9zZW5kX21vdXNlX2V2ZW50KE1PVVNFX1JFTEVBU0UsIGV2ZW50LT54KCksIGV2ZW50LT55KCksCi0JCQkJCQkJICAgIEZBTFNFLCBtb2RpZmllcnMpOwotICAgIGV2ZW50LT5hY2NlcHQoKTsKLX0vL319fQotCi0vKgotICogIFRoZSBtYWluIHdpZGdldCAoZXZlcnl0aGluZyBidXQgdG9vbGJhci9tZW51YmFyKQotICovCi1WaW1XaWRnZXQ6OlZpbVdpZGdldChRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUsIFdGbGFncyBmKS8ve3t7Ci0gICAgOlFXaWRnZXQocGFyZW50LCBuYW1lLCBmKQotICAgICwgRENPUE9iamVjdCgiS1ZpbSIpCi0jaWZkZWYgRkVBVF9NWlNDSEVNRQotICAgICwgbXpzY2hlbWVfdGltZXJfaWQoLTEpCi0jZW5kaWYKLXsKLSAgICAvL3RvIGJlIGFibGUgdG8gc2hvdy9oaWRlIHRoZSBjdXJzb3Igd2hlbiBtb3ZpbmcgdGhlIG1vdXNlCi0gICAgc2V0TW91c2VUcmFja2luZyh0cnVlKTsKLSAgICBwYWludGVyID0gbmV3IFFQYWludGVyKHRoaXMpOwotCi0gICAgc2V0S2V5Q29tcHJlc3Npb24odHJ1ZSk7Ci0gICAgc2V0Rm9jdXNQb2xpY3koUVdpZGdldDo6U3Ryb25nRm9jdXMpOwotICAgIHNldEFjY2VwdERyb3BzKFRSVUUpOyAvLyBETkQKLSAgICBibGlua19zdGF0ZSA9IEJMSU5LX05PTkU7Ci0gICAgYmxpbmtfb25fdGltZSA9IDcwMDsKLSAgICBibGlua19vZmZfdGltZSA9IDQwMDsKLSAgICBibGlua193YWl0X3RpbWUgPSAyNTA7Ci0gICAgY29ubmVjdCggJmJsaW5rX3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgU0xPVChibGlua19jdXJzb3IoKSkpOwotICAgIGNvbm5lY3QoICZ3YWl0X3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgU0xPVCh3YWl0X3RpbWVvdXQoKSkpOwotICAgIHNldElucHV0TWV0aG9kRW5hYmxlZCh0cnVlKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpleGVjTm9ybWFsKFFTdHJpbmcgY29tbWFuZCkvL3t7ewotewotICAgIFFTdHJpbmcgY21kKCJleGVjdXRlICdub3JtYWwgIik7Ci0gICAgY21kICs9IGNvbW1hbmQ7Ci0gICAgY21kICs9ICInIjsKLSAgICBRQ1N0cmluZyB1bmlzdHJpbmcgPSB2bXctPmNvZGVjLT5mcm9tVW5pY29kZShjbWQpOwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nKTsKLSAgICBndWlfdXBkYXRlX3NjcmVlbigpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmV4ZWNJbnNlcnQoUVN0cmluZyBjb21tYW5kKS8ve3t7Ci17Ci0gICAgUVN0cmluZyBjbWQoImV4ZWN1dGUgJ25vcm1hbCBpIik7Ci0gICAgY21kICs9IGNvbW1hbmQ7Ci0gICAgY21kICs9ICInIjsKLSAgICBRQ1N0cmluZyB1bmlzdHJpbmcgPSB2bXctPmNvZGVjLT5mcm9tVW5pY29kZShjbWQpOwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nKTsKLSAgICBndWlfdXBkYXRlX3NjcmVlbigpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmV4ZWNSYXcoUVN0cmluZyBjb21tYW5kKS8ve3t7Ci17Ci0gICAgUVN0cmluZyBjbWQoImV4ZWN1dGUgJyIpOwotICAgIGNtZCArPSBjb21tYW5kOwotICAgIGNtZCArPSAiJyI7Ci0gICAgUUNTdHJpbmcgdW5pc3RyaW5nID0gdm13LT5jb2RlYy0+ZnJvbVVuaWNvZGUoY21kKTsKLSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopKGNvbnN0IGNoYXIqKXVuaXN0cmluZyk7Ci0gICAgZ3VpX3VwZGF0ZV9zY3JlZW4oKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpleGVjQ21kKFFTdHJpbmcgY29tbWFuZCkvL3t7ewotewotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGNvbW1hbmQpOwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nKTsKLSAgICBndWlfdXBkYXRlX3NjcmVlbigpOwotfS8vfX19Ci0KLSAgICBRU3RyaW5nCi1WaW1XaWRnZXQ6OmV2YWwoUVN0cmluZyBleHByKS8ve3t7Ci17Ci0jaWZkZWYgRkVBVF9FVkFMCi0gICAgUUNTdHJpbmcgdW5pc3RyaW5nID0gdm13LT5jb2RlYy0+ZnJvbVVuaWNvZGUoZXhwcik7Ci0gICAgUVN0cmluZyB2YWwoKGNvbnN0IGNoYXIgKilldmFsX3RvX3N0cmluZygKLQkJCQkgICAgIChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nLCBOVUxMKSk7Ci0gICAgcmV0dXJuIHZhbDsKLSNlbHNlCi0gICAgcmV0dXJuIFFTdHJpbmc6Om51bGw7Ci0jZW5kaWYKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0Ojp3YWl0KGxvbmcgd3RpbWUpLy97e3sKLXsKLSAgICBpZiAod2FpdF90aW1lci5pc0FjdGl2ZSgpKQotCXdhaXRfdGltZXIuc3RvcCgpOwotICAgIHdhaXRfZG9uZSA9IGZhbHNlOwotICAgIHdhaXRfdGltZXIuc3RhcnQoIHd0aW1lLCB0cnVlKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0Ojp3YWl0X3RpbWVvdXQoKSAvL3t7ewotewotICAgIHdhaXRfZG9uZSA9IHRydWU7Ci19Ly99fX0KLQotICAgIHZvaWQKLVZpbVdpZGdldDo6ZHJhZ0VudGVyRXZlbnQgKFFEcmFnRW50ZXJFdmVudCAqZSkvL3t7ewotewotI2lmIChkZWZpbmVkKEZFQVRfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX0RST1BfRklMRSkpIHx8IGRlZmluZWQoUFJPVE8pCi0gICAgZS0+YWNjZXB0KFFVcmlEcmFnOjpjYW5EZWNvZGUoZSkpOwotI2Vsc2UKLSAgICBlLT5pZ25vcmUoKTsKLSNlbmRpZgotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmRyb3BFdmVudChRRHJvcEV2ZW50ICplKSAvLyB7e3sKLXsKLSNpZiAoZGVmaW5lZChGRUFUX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9EUk9QX0ZJTEUpKSB8fCBkZWZpbmVkKFBST1RPKQotICAgIFFTdHJMaXN0CXVybHM7Ci0KLSAgICBjaGFyX3UJKipmbmFtZXM7Ci0gICAgaW50CQlyZWRvX2RpcnMgPSBGQUxTRTsKLSAgICBpbnQJCWk7Ci0gICAgaW50CQluOwotICAgIGludAkJbmZpbGVzOwotICAgIGludAkJdXJsID0gRkFMU0U7Ci0KLSAgICAvKiBDb3VudCBob3cgbWFueSBpdGVtcyB0aGVyZSBtYXkgYmUgYW5kIG5vcm1hbGl6ZSBkZWxpbWl0ZXJzLiAqLwotCi0gICAgaWYgKFFVcmlEcmFnOjpkZWNvZGUoZSwgdXJscykpCi0gICAgewotCW4gPSB1cmxzLmNvdW50KCk7Ci0JZm5hbWVzID0gKGNoYXJfdSAqKilsYWxsb2MoKG4rMSkgKiBzaXplb2YoY2hhcl91ICopLCBUUlVFKTsKLQluZmlsZXMgPSAwOwotI2lmIFFUX1ZFUlNJT04+PTMwMAotCVFQdHJMaXN0SXRlcmF0b3I8Y2hhcj4gaXQodXJscyk7Ci0JZm9yICg7IGl0LmN1cnJlbnQoKTsgKytpdCkKLQl7Ci0JICAgIEtVUkwgdSgqaXQpOwotI2Vsc2UKLQkgICAgZm9yIChpID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKQotCSAgICB7Ci0JCUtVUkwgdSh1cmxzLmF0KGkpKTsKLSNlbmRpZgotCQlpZiAoIXUuaXNMb2NhbEZpbGUoKSkKLQkJICAgIHVybCA9IFRSVUU7Ci0JCWVsc2UKLQkJewotCQkgICAgZm5hbWVzW25maWxlc10gPSAoY2hhcl91ICopc3RyZHVwKChjb25zdCBjaGFyICopdS5wYXRoKCkpOwotCQkgICAgKytuZmlsZXM7Ci0JCX0KLQkgICAgfQotCSAgICAvKiBSZWFsIGZpbGVzIChpLmUuIG5vdCBodHRwIGFuZCBub3QgZnRwKSAqLwotCSAgICBpZiAodXJsID09IEZBTFNFKQotCSAgICB7Ci0JCWlmIChuZmlsZXMgPT0gMSkKLQkJewotCQkgICAgaWYgKG1jaF9pc2RpcihmbmFtZXNbMF0pKQotCQkgICAgewotCQkJLyogSGFuZGxlIGRyb3BwaW5nIGEgZGlyZWN0b3J5IG9uIFZpbS4gKi8KLQkJCWlmIChtY2hfY2hkaXIoKGNoYXIgKilmbmFtZXNbMF0pID09IDApCi0JCQl7Ci0JCQkgICAgZnJlZShmbmFtZXNbMF0pOwotCQkJICAgIGZuYW1lc1swXSA9IE5VTEw7Ci0JCQkgICAgcmVkb19kaXJzID0gVFJVRTsKLQkJCX0KLQkJICAgIH0KLQkJfQotCQllbHNlCi0JCXsKLQkJICAgIC8qIElnbm9yZSBhbnkgZGlyZWN0b3JpZXMgKi8KLQkJICAgIGZvciAoaSA9IDA7IGkgPCBuZmlsZXM7ICsraSkKLQkJICAgIHsKLQkJCWlmIChtY2hfaXNkaXIoZm5hbWVzW2ldKSkKLQkJCXsKLQkJCSAgICB2aW1fZnJlZShmbmFtZXNbaV0pOwotCQkJICAgIGZuYW1lc1tpXSA9IE5VTEw7Ci0JCQl9Ci0JCSAgICB9Ci0JCX0KLQotCQlpZiAoMCkKLQkJewotCQkgICAgLyogU2hpZnQgaGVsZCBkb3duLCBjaGFuZ2UgdG8gZmlyc3QgZmlsZSdzIGRpcmVjdG9yeSAqLwotCQkgICAgaWYgKGZuYW1lc1swXSAhPSBOVUxMICYmIHZpbV9jaGRpcmZpbGUoZm5hbWVzWzBdKSA9PSBPSykKLQkJCXJlZG9fZGlycyA9IFRSVUU7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCSAgICBjaGFyX3UJZGlybmFtZVtNQVhQQVRITF07Ci0JCSAgICBjaGFyX3UJKnM7Ci0KLQkJICAgIGlmIChtY2hfZGlybmFtZShkaXJuYW1lLCBNQVhQQVRITCkgPT0gT0spCi0JCQlmb3IgKGkgPSAwOyBpIDwgbmZpbGVzOyArK2kpCi0JCQkgICAgaWYgKGZuYW1lc1tpXSAhPSBOVUxMKQotCQkJICAgIHsKLQkJCQlzID0gc2hvcnRlbl9mbmFtZShmbmFtZXNbaV0sIGRpcm5hbWUpOwotCQkJCWlmIChzICE9IE5VTEwgJiYgKHMgPSB2aW1fc3Ryc2F2ZShzKSkgIT0gTlVMTCkKLQkJCQl7Ci0JCQkJICAgIHZpbV9mcmVlKGZuYW1lc1tpXSk7Ci0JCQkJICAgIGZuYW1lc1tpXSA9IHM7Ci0JCQkJfQotCQkJICAgIH0KLQkJfQotCSAgICB9Ci0KLQkgICAgLyogSGFuZGxlIHRoZSBkcm9wLCA6ZWRpdCBvciA6c3BsaXQgdG8gZ2V0IHRvIHRoZSBmaWxlICovCi0JICAgIGhhbmRsZV9kcm9wKG5maWxlcywgZm5hbWVzLCBGQUxTRSk7Ci0KLQkgICAgaWYgKHJlZG9fZGlycykKLQkJc2hvcnRlbl9mbmFtZXMoVFJVRSk7Ci0JfQotCi0JLyogVXBkYXRlIHRoZSBzY3JlZW4gZGlzcGxheSAqLwotCXVwZGF0ZV9zY3JlZW4oTk9UX1ZBTElEKTsKLSNpZmRlZiBGRUFUX01FTlUKLQlndWlfdXBkYXRlX21lbnVzKDApOwotI2VuZGlmCi0Jc2V0Y3Vyc29yKCk7Ci0Jb3V0X2ZsdXNoKCk7Ci0JZ3VpX3VwZGF0ZV9jdXJzb3IoRkFMU0UsIEZBTFNFKTsKLQlndWlfbWNoX2ZsdXNoKCk7Ci0jZW5kaWYKLX0gLy8gfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKSAvLyB7e3sKLXsKLSAgICBndWlfa2V5cHJlc3MoZSk7Ci19IC8vIH19fQotCi0gICAgdm9pZAotZ3VpX2tleXByZXNzKFFLZXlFdmVudCAqZSkgLy8ge3t7Ci17Ci0gICAgaW50CQkgICAga2V5ID0gKGludCllLT5rZXkoKTsKLSAgICBpbnQJCSAgICBtb2RpZmllcnMgPSAwLCBpOwotICAgIHVjaGFyCSAgICBzdHJpbmdbMjU2XSwgc3RyaW5nMlsyNTZdOwotICAgIHVjaGFyCSAgICAqcywgKmQ7Ci0gICAgUXQ6OkJ1dHRvblN0YXRlIHN0YXRlID0gZS0+c3RhdGUoKTsKLQotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGUtPnRleHQoKSk7Ci0gICAgaWYgKHVuaXN0cmluZy5sZW5ndGgoKSA+IDApCi0Jc3RybmNweSgoY2hhciopc3RyaW5nLCAoY29uc3QgY2hhciopdW5pc3RyaW5nLCB1bmlzdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0cmluZ1t1bmlzdHJpbmcubGVuZ3RoKCldID0gMDsKLSAgICBpbnQgbGVuID0gdW5pc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgLy8gaWdub3JlIGNlcnRhaW4ga2V5cwotICAgIGlmIChrZXkgPT0gUXQ6OktleV9TaGlmdAotCSAgICB8fCBrZXkgPT0gUXQ6OktleV9BbHQKLQkgICAgfHwga2V5ID09IFF0OjpLZXlfQ29udHJvbAotCSAgICB8fCBrZXkgPT0gUXQ6OktleV9NZXRhCi0JICAgIHx8IGtleSA9PSBRdDo6S2V5X0NhcHNMb2NrCi0JICAgIHx8IGtleSA9PSBRdDo6S2V5X051bUxvY2sKLQkgICAgfHwga2V5ID09IFF0OjpLZXlfU2Nyb2xsTG9jaykKLSAgICB7Ci0JZS0+aWdub3JlKCk7Ci0JcmV0dXJuOwotICAgIH0KLQotI2lmZGVmIEZFQVRfTUJZVEUKLSAgICBpZiAoaW5wdXRfY29udi52Y190eXBlICE9IENPTlZfTk9ORSkKLSAgICB7Ci0JbWNoX21lbW1vdmUoc3RyaW5nMiwgc3RyaW5nLCBsZW4pOwotCWxlbiA9IGNvbnZlcnRfaW5wdXQoc3RyaW5nMiwgbGVuLCBzaXplb2Yoc3RyaW5nMikpOwotCXMgPSBzdHJpbmcyOwotICAgIH0KLSAgICBlbHNlCi0jZW5kaWYKLQlzID0gc3RyaW5nOwotICAgIGQgPSBzdHJpbmc7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQotICAgIHsKLQkqZCsrID0gc1tpXTsKLQlpZiAoZFstMV0gPT0gQ1NJICYmIGQgKyAyIDwgc3RyaW5nICsgc2l6ZW9mKHN0cmluZykpCi0JewotCSAgICAvKiBUdXJuIENTSSBpbnRvIEtfQ1NJLiAqLwotCSAgICAqZCsrID0gS1NfRVhUUkE7Ci0JICAgICpkKysgPSAoaW50KUtFX0NTSTsKLQl9Ci0gICAgfQotICAgIGxlbiA9IGQgLSBzdHJpbmc7Ci0KLQotICAgIC8vIGNoYW5nZSBzaGlmdC10YWIgKGJhY2t0YWIpIGludG8gU19UQUIKLSAgICBpZiAoa2V5ID09IFF0OjpLZXlfQmFja1RhYiAmJiBzdGF0ZSAmIFF0OjpTaGlmdEJ1dHRvbikKLQlrZXkgPSBRdDo6S2V5X1RhYjsKLQotICAgIC8vIENoYW5nZSBDLUAgYW5kIEMtMiBpbiBOVUwgPyBHdGsgZG9lcyB0aGlzCi0gICAgaWYgKChrZXkgPT0gUXQ6OktleV8yIHx8IGtleSA9PSBRdDo6S2V5X0F0KSAmJiBzdGF0ZSAmIFF0OjpDb250cm9sQnV0dG9uKQotICAgIHsKLQlzdHJpbmdbMF0gPSBOVUw7Ci0JbGVuID0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobGVuID09IDAgJiYgKGtleSA9PSBRdDo6S2V5X1NwYWNlIHx8IGtleSA9PSBRdDo6S2V5X1RhYikpCi0gICAgewotCS8qIFdoZW4gdGhlcmUgYXJlIG1vZGlmaWVycywgdGhlc2Uga2V5cyBnZXQgemVybyBsZW5ndGg7IHdlIG5lZWQgdGhlCi0JICogb3JpZ2luYWwga2V5IGhlcmUgdG8gYmUgYWJsZSB0byBhZGQgYSBtb2RpZmllciBiZWxvdy4gKi8KLQlzdHJpbmdbMF0gPSAoa2V5ICYgMHhmZik7Ci0JbGVuID0gMTsKLSAgICB9Ci0gICAgLyogQ2hlY2sgZm9yIEFsdC9NZXRhIGtleSAoTW9kMU1hc2spLCBidXQgbm90IGZvciBhIEJTLCBERUwgb3IgY2hhcmFjdGVyCi0gICAgICogdGhhdCBhbHJlYWR5IGhhcyB0aGUgOHRoIGJpdCBzZXQuCi0gICAgICogRG9uJ3QgZG8gdGhpcyBmb3IgPFMtTS1UYWI+LCB0aGF0IHNob3VsZCBiZWNvbWUgS19TX1RBQiB3aXRoIEFMVC4gKi8KLSAgICBpZiAobGVuID09IDEKLQkgICAgJiYgKGtleSAhPSBRdDo6S2V5X0JhY2tTcGFjZSAmJiBrZXkgIT0gUXQ6OktleV9EZWxldGUpCi0JICAgICYmIChzdHJpbmdbMF0gJiAweDgwKSA9PSAwCi0JICAgICYmIChzdGF0ZSAmIFF0OjpBbHRCdXR0b24pCi0JICAgICYmICEoa2V5ID09IFF0OjpLZXlfVGFiICYmIChzdGF0ZSAmIFF0OjpTaGlmdEJ1dHRvbikpKQotICAgIHsKLQlzdHJpbmdbMF0gfD0gMHg4MDsKLSNpZmRlZiBGRUFUX01CWVRFCi0JaWYgKGVuY191dGY4KSAvLyBjb252ZXJ0IHRvIHV0Zi04Ci0JewotCSAgICBzdHJpbmdbMV0gPSBzdHJpbmdbMF0gJiAweGJmOwotCSAgICBzdHJpbmdbMF0gPSAoKHVuc2lnbmVkKXN0cmluZ1swXSA+PiA2KSArIDB4YzA7Ci0JICAgIGlmIChzdHJpbmdbMV0gPT0gQ1NJKQotCSAgICB7Ci0JCXN0cmluZ1syXSA9IEtTX0VYVFJBOwotCQlzdHJpbmdbM10gPSAoaW50KUtFX0NTSTsKLQkJbGVuID0gNDsKLQkgICAgfQotCSAgICBlbHNlCi0JCWxlbiA9IDI7Ci0JfQotI2VuZGlmCi0gICAgfQotCi0gICAgLyogQ2hlY2sgZm9yIHNwZWNpYWwga2V5cywgbWFraW5nIHN1cmUgQlMgYW5kIERFTCBhcmUgcmVjb2duaXNlZC4gKi8KLSAgICBpZiAobGVuID09IDAgfHwga2V5ID09IFF0OjpLZXlfQmFja1NwYWNlIHx8IGtleSA9PSBRdDo6S2V5X0RlbGV0ZSkKLSAgICB7Ci0Jd2hpbGUgKHNwZWNpYWxfa2V5c1tpXS5xdGtleSAhPSAwICYmIHNwZWNpYWxfa2V5c1tpXS5xdGtleSAhPSBrZXkpCi0JICAgIGkrKzsKLQlpZiAoc3BlY2lhbF9rZXlzW2ldLnF0a2V5ICE9IDApCi0JewotCSAgICBzdHJpbmdbMF0gPSBDU0k7Ci0JICAgIHN0cmluZ1sxXSA9IHNwZWNpYWxfa2V5c1tpXS5jb2RlMDsKLQkgICAgc3RyaW5nWzJdID0gc3BlY2lhbF9rZXlzW2ldLmNvZGUxOwotCSAgICBsZW4gPSAtMzsKLQl9Ci0vKgotCWZvciAoaSA9IDA7IHNwZWNpYWxfa2V5c1tpXS5xdGtleSAhPSAwIDsgaSsrKQotCXsKLQkgICAgaWYgKHNwZWNpYWxfa2V5c1tpXS5xdGtleSA9PSBrZXkgKQotCSAgICB7Ci0JCXN0cmluZ1swXSA9IENTSTsKLQkJc3RyaW5nWzFdID0gc3BlY2lhbF9rZXlzW2ldLmNvZGUwOwotCQlzdHJpbmdbMl0gPSBzcGVjaWFsX2tleXNbaV0uY29kZTE7Ci0JCWxlbiA9IC0zOwotCQlicmVhazsKLQkgICAgfQotCX0qLwotICAgIH0KLQotICAgIGlmIChsZW4gPT0gMCkKLSAgICB7Ci0JLy9ubyBuZWVkIHRvIGR1bXAgdGhhdCwgdGhhdCdzIGEgUVQgcHJvYmxlbSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcKLQkvL2RiZigiVW5yZWNvZ25pc2VkIEtleSA6ICVYICVzIiwga2V5LCBlLT50ZXh0KCkubGF0aW4xKCkpOwotCWUtPmlnbm9yZSgpOwotCXJldHVybjsKLSAgICB9Ci0KLQotICAgIC8qIFNwZWNpYWwga2V5cyAoYW5kIGEgZmV3IG90aGVycykgbWF5IGhhdmUgbW9kaWZpZXJzICovCi0gICAgaWYgKGxlbiA9PSAtMwotCSAgICB8fCBrZXkgPT0gUXQ6OktleV9TcGFjZQotCSAgICB8fCBrZXkgPT0gUXQ6OktleV9UYWIKLQkgICAgfHwga2V5ID09IFF0OjpLZXlfUmV0dXJuCi0JICAgIHx8IGtleSA9PSBRdDo6S2V5X0VudGVyCi0JICAgIHx8IGtleSA9PSBRdDo6S2V5X0VzY2FwZSkKLSAgICB7Ci0JbW9kaWZpZXJzID0gMDsKLQlpZiAoc3RhdGUgJiBRdDo6U2hpZnRCdXR0b24pCi0JICAgIG1vZGlmaWVycyB8PSBNT0RfTUFTS19TSElGVDsKLQlpZiAoc3RhdGUgJiBRdDo6Q29udHJvbEJ1dHRvbikKLQkgICAgbW9kaWZpZXJzIHw9IE1PRF9NQVNLX0NUUkw7Ci0JaWYgKHN0YXRlICYgUXQ6OkFsdEJ1dHRvbikKLQkgICAgbW9kaWZpZXJzIHw9IE1PRF9NQVNLX0FMVDsKLQotCS8qCi0JICogRm9yIHNvbWUga2V5cyBhIHNoaWZ0IG1vZGlmaWVyIGlzIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyIGtleQotCSAqIGNvZGUuIERvIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGxlbiAhPSAxIGFuZAotCSAqIHN0cmluZ1swXSAhPSBDU0k/Ci0JICovCi0JaWYgKGxlbiA9PSAtMykKLQkgICAga2V5ID0gVE9fU1BFQ0lBTChzdHJpbmdbMV0sIHN0cmluZ1syXSk7Ci0JZWxzZQotCSAgICBrZXkgPSBzdHJpbmdbMF07Ci0KLQlrZXkgPSBzaW1wbGlmeV9rZXkoa2V5LCAmbW9kaWZpZXJzKTsKLQlpZiAoa2V5ID09IENTSSkKLQkgICAga2V5ID0gS19DU0k7Ci0KLQlpZiAoSVNfU1BFQ0lBTChrZXkpKQotCXsKLQkgICAgc3RyaW5nWzBdID0gQ1NJOwotCSAgICBzdHJpbmdbMV0gPSBLX1NFQ09ORChrZXkpOwotCSAgICBzdHJpbmdbMl0gPSBLX1RISVJEKGtleSk7Ci0JICAgIGxlbiA9IDM7Ci0JfQotCWVsc2UKLQl7Ci0JICAgIHN0cmluZ1swXSA9IGtleTsKLQkgICAgbGVuID0gMTsKLQl9Ci0KLQlpZiAobW9kaWZpZXJzICE9IDApCi0JewotCSAgICB1Y2hhciBzdHJpbmcyWzEwXTsKLQkgICAgc3RyaW5nMlswXSA9IENTSTsKLQkgICAgc3RyaW5nMlsxXSA9IEtTX01PRElGSUVSOwotCSAgICBzdHJpbmcyWzJdID0gbW9kaWZpZXJzOwotCSAgICBhZGRfdG9faW5wdXRfYnVmKHN0cmluZzIsIDMpOwotCX0KLQotICAgIH0gLyogc3BlY2lhbCBrZXlzICovCi0KLSAgICBpZiAobGVuID09IDEgJiYgKChzdHJpbmdbMF0gPT0gQ3RybF9DICYmIGN0cmxfY19pbnRlcnJ1cHRzKQotCQkJICB8fCAoc3RyaW5nWzBdID09IGludHJfY2hhciAmJiBpbnRyX2NoYXIgIT0gQ3RybF9DKSkpCi0gICAgewotCXRyYXNoX2lucHV0X2J1ZigpOwotCWdvdF9pbnQgPSBUUlVFOwotICAgIH0KLQotICAgIGFkZF90b19pbnB1dF9idWYoc3RyaW5nLCBsZW4pOwotICAgIGlmIChwX21oKQotCWd1aV9tY2hfbW91c2VoaWRlKFRSVUUpOwotCi0gICAgLy9EQ09QIEVtYmVkZGluZyBzdHVmZgotICAgIC8vaWYgd2UgYXJlIGhlcmUgdGhlbiB0aGUgdXNlciBoYXMgdHlwZSBzb21ldGhpbmcgaW4gdGhlIHdpbmRvdywgdGh1cyB3ZSBjYW4gZWFzaWx5IGltYWdpbmUgdGhhdCA6Ci0gICAgLy8gMSAtIHRleHQgaGFzIGNoYW5nZWQgKGVtaXQgdGV4dENoYW5nZWQoKSkKLSAgICAvLyAyIC0gY2hhcmFjdGVycyB3ZXJlIGludGVyYWN0aXZlbHkgaW5zZXJ0ZWQgKGVtaXQgY2hhcmFjdGVyc0ludGVyYWN0aXZlbHlJbnNlcnRlZCgpKQotICAgIC8vIDMgLSBjdXJzb3IgcG9zaXRpb24gaGFzIGNoYW5nZWQgKCBlbWl0IGN1cnNvclBvc2l0aW9uQ2hhbmdlZCgpICkKLSAgICAvLyA0IC0gc2VsZWN0aW9uIGhhcyBjaGFuZ2VkID8gZHVubm8geWV0IC8vWFhYCi0gICAgLy8gNSAtIHVuZG8gY2hhbmdlZCB0b28gPyAoZWFjaCBjaGFyYWN0ZXIgdHlwZWQgaW4gbWFrZXMgdGhlIHVuZG8gY2hhbmdlcyBhbnl3YXkpCi0gICAgLy8gY29uY2x1c2lvbiA6IHRoaXMgbWFrZXMgYSBsb3Qgb2YgdGhpbmdzIHRvIHNlbmQgdG8gdGhlIHZpbSBrcGFydCwgbWF5YmUgdG9vIG11Y2gKLSAgICAvLyBmb3Igbm93IGknbGwganVzdCBzZW5kIDoga2V5Ym9hcmRFdmVudCB0byB0aGUga3BhcnQgd2l0aCB0aGUgZXZlbnQgc3RyaW5nIGFzIHBhcmFtZXRlciwKLSAgICAvLyB3aXRoIGN1cnJlbnQgY3VycmVudCBwb3NpdGlvbgotICAgIC8vIGknbGwgZG8gdGhlIHNhbWUgZm9yIG1vdXNlRXZlbnRzCi0jaWYgUVRfVkVSU0lPTj49MzAwCi0gICAgUUJ5dGVBcnJheSBwYXJhbXM7Ci0gICAgUURhdGFTdHJlYW0gc3RyZWFtKHBhcmFtcywgSU9fV3JpdGVPbmx5KTsKLSAgICBzdHJlYW0gPDwga2FwcC0+ZGNvcENsaWVudCgpLT5hcHBJZCgpIDw8IHVuaXN0cmluZyA8PCBndWkucm93IDw8IGd1aS5jb2w7Ci0gICAga2FwcC0+ZGNvcENsaWVudCgpLT5lbWl0RENPUFNpZ25hbCgKLQkJICAgICAgICJrZXlib2FyZEV2ZW50KFFDU3RyaW5nLCBRQ1N0cmluZywgaW50LCBpbnQpIiwgcGFyYW1zKTsKLSNlbmRpZgotICAgIGUtPmlnbm9yZSgpOwotfSAvLyB9fX0KLQotI2lmZGVmIEZFQVRfQ0xJRU5UU0VSVkVSCi0gICAgdm9pZAotVmltV2lkZ2V0OjpzZXJ2ZXJBY3RpdmF0ZShXSWQgaWQpIC8ve3t7Ci17Ci0gICAgaWYgKHNlcnZlck5hbWUgPT0gTlVMTCAmJiBzZXJ2ZXJEZWxheWVkU3RhcnROYW1lICE9IE5VTEwpCi0gICAgewotCWNvbW1XaW5kb3cgPSBpZDsKLQkodm9pZClzZXJ2ZXJSZWdpc3Rlck5hbWUocXRfeGRpc3BsYXkoKSwgc2VydmVyRGVsYXllZFN0YXJ0TmFtZSk7Ci0gICAgfQotICAgIGVsc2UKLQlzZXJ2ZXJDaGFuZ2VSZWdpc3RlcmVkV2luZG93KCBxdF94ZGlzcGxheSgpLCBpZCk7Ci19Ly99fX0KLSNlbmRpZgotCi0jaWZkZWYgRkVBVF9YSU0KLQotc3RhdGljIGludCBwcmVlZGl0X2J1Zl9sZW4gPSAwOwotc3RhdGljIGludCBpbV9wcmVlZGl0X2N1cnNvciA9IDA7Ci1zdGF0aWMgaW50IGltX3ByZWVkaXRfdHJhaWxpbmcgPSAwOwotCi0gICAgc3RhdGljIHZvaWQKLWltX2RlbGV0ZV9wcmVlZGl0KHZvaWQpCi17Ci0gICAgY2hhcl91IGJza2V5W10gID0ge0NTSSwgJ2snLCAnYid9OwotICAgIGNoYXJfdSBkZWxrZXlbXSA9IHtDU0ksICdrJywgJ0QnfTsKLQotICAgIGlmIChTdGF0ZSAmIE5PUk1BTCkKLSAgICB7Ci0JaW1fcHJlZWRpdF9jdXJzb3IgPSAwOwotCXJldHVybjsKLSAgICB9Ci0gICAgZm9yICg7IGltX3ByZWVkaXRfY3Vyc29yID4gMDsgLS1pbV9wcmVlZGl0X2N1cnNvcikKLQlhZGRfdG9faW5wdXRfYnVmKGJza2V5LCAoaW50KXNpemVvZihic2tleSkpOwotCi0gICAgZm9yICg7IGltX3ByZWVkaXRfdHJhaWxpbmcgPiAwOyAtLWltX3ByZWVkaXRfdHJhaWxpbmcpCi0JYWRkX3RvX2lucHV0X2J1ZihkZWxrZXksIChpbnQpc2l6ZW9mKGRlbGtleSkpOwotfQotCi0gICAgdm9pZAotaW1fc2V0X3Bvc2l0aW9uKGludCByb3csIGludCBjb2wpCi17Ci0gICAgdm13LT53LT5zZXRNaWNyb0ZvY3VzSGludCgKLQkgICAgVEVYVF9YKGd1aS5jb2wpLAotCSAgICBURVhUX1koZ3VpLnJvdyksIDAsIDAsIFRSVUUsICZ2bXctPnctPmZvbnQoKSk7Ci19Ci0KLSAgICBpbnQKLWltX2lzX3ByZWVkaXRpbmcoKQotewotICAgIHJldHVybiAocHJlZWRpdF9zdGFydF9jb2wgIT0gTUFYQ09MKTsKLX0KLQotICAgIGludAotaW1fZ2V0X2ZlZWRiYWNrX2F0dHIoaW50IGNvbCkKLXsKLSAgICBpZiAoZHJhd19mZWVkYmFjayAhPSBOVUxMICYmIGNvbCA8IHByZWVkaXRfYnVmX2xlbikKLSAgICB7Ci0JaWYgKGRyYXdfZmVlZGJhY2tbY29sXSAmIFhJTVJldmVyc2UpCi0JICAgIHJldHVybiBITF9JTlZFUlNFOwotCWVsc2UgaWYgKGRyYXdfZmVlZGJhY2tbY29sXSAmIFhJTVVuZGVybGluZSkKLQkgICAgcmV0dXJuIEhMX1VOREVSTElORTsKLQllbHNlCi0JICAgIHJldHVybiBobF9hdHRyKEhMRl9WKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmltU3RhcnRFdmVudChRSU1FdmVudCAqZSkKLXsKLSAgICBpZiAoU3RhdGUgJiBDTURMSU5FKQotCXByZWVkaXRfc3RhcnRfY29sID0gY21kbGluZV9nZXR2Y29sX2N1cnNvcigpOwotICAgIGVsc2UgaWYgKGN1cndpbiAhPSBOVUxMKQotCWdldHZjb2woY3Vyd2luLCAmY3Vyd2luLT53X2N1cnNvciwgJnByZWVkaXRfc3RhcnRfY29sLCBOVUxMLCBOVUxMKTsKLSAgICB4aWMgPSAoWElDKSFOVUxMOwotICAgIGUtPmFjY2VwdCgpOwotfQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjppbUVuZEV2ZW50KFFJTUV2ZW50ICplKQotewotICAgIHVjaGFyIHN0cmluZ1syNTZdOwotCi0gICAgaW1fZGVsZXRlX3ByZWVkaXQoKTsKLQotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGUtPnRleHQoKSk7Ci0gICAgaWYgKHVuaXN0cmluZy5sZW5ndGgoKSA+IDApCi0Jc3RybmNweSgoY2hhciopc3RyaW5nLCAoY29uc3QgY2hhciopdW5pc3RyaW5nLCB1bmlzdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0cmluZ1t1bmlzdHJpbmcubGVuZ3RoKCldID0gMDsKLSAgICBpbnQgbGVuID0gdW5pc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgYWRkX3RvX2lucHV0X2J1Zl9jc2koc3RyaW5nLCBsZW4pOwotICAgIGltX3ByZWVkaXRfY3Vyc29yID0gMDsKLSAgICBpbV9wcmVlZGl0X3RyYWlsaW5nID0gMDsKLSAgICBwcmVlZGl0X3N0YXJ0X2NvbCA9IE1BWENPTDsKLSAgICBwcmVlZGl0X2J1Zl9sZW4gPSAwOwotICAgIGlmIChkcmF3X2ZlZWRiYWNrKQotICAgIHsKLQlmcmVlKGRyYXdfZmVlZGJhY2spOwotCWRyYXdfZmVlZGJhY2sgPSBOVUxMOwotICAgIH0KLSAgICB4aWMgPSAwOwotICAgIGUtPmFjY2VwdCgpOwotfQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjppbUNvbXBvc2VFdmVudChRSU1FdmVudCAqZSkKLXsKLSAgICB1Y2hhciBzdHJpbmdbMjU2XTsKLSAgICBjaGFyX3UgYmFja2tleVtdID0ge0NTSSwgJ2snLCAnbCd9OwotCi0gICAgaW1fZGVsZXRlX3ByZWVkaXQoKTsKLQotICAgIGlmIChTdGF0ZSAmIE5PUk1BTCkKLSAgICB7Ci0JaW1fcHJlZWRpdF9jdXJzb3IgPSAwOwotCXJldHVybjsKLSAgICB9Ci0KLSAgICBRQ1N0cmluZyB1bmlzdHJpbmcgPSB2bXctPmNvZGVjLT5mcm9tVW5pY29kZShlLT50ZXh0KCkpOwotICAgIGlmICh1bmlzdHJpbmcubGVuZ3RoKCkgPiAwKQotCXN0cm5jcHkoKGNoYXIqKXN0cmluZywgKGNvbnN0IGNoYXIqKXVuaXN0cmluZyx1bmlzdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0cmluZ1t1bmlzdHJpbmcubGVuZ3RoKCldID0gMDsKLSAgICBpbnQgbGVuID0gdW5pc3RyaW5nLmxlbmd0aCgpOwotICAgIGFkZF90b19pbnB1dF9idWZfY3NpKHN0cmluZywgbGVuKTsKLQotICAgIHByZWVkaXRfYnVmX2xlbiA9IGUtPnRleHQoKS5sZW5ndGgoKTsKLSAgICBpZiAoZHJhd19mZWVkYmFjayA9PSBOVUxMKQotCWRyYXdfZmVlZGJhY2sgPSAoY2hhciAqKWFsbG9jKHByZWVkaXRfYnVmX2xlbik7Ci0gICAgZWxzZQotCWRyYXdfZmVlZGJhY2sgPSAoY2hhciAqKXJlYWxsb2MoZHJhd19mZWVkYmFjaywgcHJlZWRpdF9idWZfbGVuKTsKLSAgICBwcmVlZGl0X2VuZF9jb2wgPSBwcmVlZGl0X3N0YXJ0X2NvbDsKLQotICAgIGNoYXJfdSAqcCA9IHN0cmluZzsKLSAgICBmb3IgKGludCBuID0gMDsgbiA8IHByZWVkaXRfYnVmX2xlbjsgbisrKQotICAgIHsKLQlpZiAobiA8IGUtPmN1cnNvclBvcygpIHx8IG4gPj0gZS0+Y3Vyc29yUG9zKCkgKyBlLT5zZWxlY3Rpb25MZW5ndGgoKSkKLQkgICAgZHJhd19mZWVkYmFja1tuXSA9IFhJTVVuZGVybGluZTsKLQllbHNlCi0JICAgIGRyYXdfZmVlZGJhY2tbbl0gPSBYSU1SZXZlcnNlOwotCXByZWVkaXRfZW5kX2NvbCArPSAoKm1iX3B0cjJjZWxscykocCk7Ci0JcCArPSAoKm1iX3B0cjJsZW4pKHApOwotICAgIH0KLSAgICBpbV9wcmVlZGl0X2N1cnNvciA9IGUtPmN1cnNvclBvcygpOwotICAgIGltX3ByZWVkaXRfdHJhaWxpbmcgPSBwcmVlZGl0X2J1Zl9sZW4gLSBpbV9wcmVlZGl0X2N1cnNvcjsKLQotIyAgaWZkZWYgRkVBVF9SSUdIVExFRlQKLSAgICBpZiAoKFN0YXRlICYgQ01ETElORSkgPT0gMCAmJiBjdXJ3aW4gIT0gTlVMTCAmJiBjdXJ3aW4tPndfcF9ybCkKLQliYWNra2V5WzJdID0gJ3InOwotIyAgZW5kaWYKLSAgICBmb3IgKGludCBuID0gMDsgbiA8IGltX3ByZWVkaXRfdHJhaWxpbmc7IG4rKykKLQlhZGRfdG9faW5wdXRfYnVmKGJhY2trZXksIChpbnQpc2l6ZW9mKGJhY2trZXkpKTsKLQotICAgIGUtPmFjY2VwdCgpOwotfQotI2VuZGlmCi0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OmxvY2soKQotewotICAgIGxvY2tlZCA9IHRydWU7Ci19Ci0KLSAgICB2b2lkCi1WaW1NYWluV2luZG93Ojp1bmxvY2soKQotewotICAgIGxvY2tlZCA9IGZhbHNlOwotfQotCi0gICAgYm9vbAotVmltTWFpbldpbmRvdzo6aXNMb2NrZWQoKQotewotICAgIHJldHVybiBsb2NrZWQ7Ci19Ci0KLS8vIC0+cmVzaXplIFZpbVdpZGdldCBpZiBub3QgbG9ja2VkCi0vLwotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCAqZSkgLy97e3sKLXsKLSAgICBpZiAodm13LT5pc0xvY2tlZCgpKQotCXJldHVybjsKLSAgICAvL3JlbW92ZSB0b29sYmFyIGFuZCBtZW51YmFyIGhlaWdodAotICAgIGludCBoZWlnaHQgPSBlLT5zaXplKCkuaGVpZ2h0KCk7Ci0gICAgaW50IHdpZHRoID0gZS0+c2l6ZSgpLndpZHRoKCk7Ci0KLSAgICBpZiAodm13LT5tZW51QmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+bWVudUJhcigpLT5pc0VuYWJsZWQoKQotI2lmIFFUX1ZFUlNJT04+PTMwMAotCSAgICAmJiAhdm13LT5tZW51QmFyKCktPmlzVG9wTGV2ZWxNZW51KCkKLSNlbmRpZgotCSAgICApCi0JaGVpZ2h0IC09IHZtdy0+bWVudUJhcigpLT5oZWlnaHQoKTsKLSNpZmRlZiBGRUFUX1RPT0xCQVIKLSAgICBpZiAodm13LT50b29sQmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+dG9vbEJhcigpLT5pc0VuYWJsZWQoKQotCSAgICAmJiAodm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpUb3AKLQkJfHwgdm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpCb3R0b20pKQotCWhlaWdodCAtPSB2bXctPnRvb2xCYXIoKS0+aGVpZ2h0KCk7Ci0KLSAgICBpZiAodm13LT50b29sQmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+dG9vbEJhcigpLT5pc0VuYWJsZWQoKQotCSAgICAmJiAodm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpMZWZ0Ci0JCXx8IHZtdy0+dG9vbEJhcigpLT5iYXJQb3MoKSA9PSBLVG9vbEJhcjo6UmlnaHQpKQotCXdpZHRoIC09IHZtdy0+dG9vbEJhcigpLT53aWR0aCgpOwotI2VuZGlmCi0gICAgaGVpZ2h0ID0gKChpbnQpKGhlaWdodC9ndWkuY2hhcl9oZWlnaHQpKSpndWkuY2hhcl9oZWlnaHQ7Ci0gICAgaWYgKCF2bXctPmlzTG9ja2VkKCkpCi0JZ3VpX3Jlc2l6ZV9zaGVsbCh3aWR0aCwgaGVpZ2h0KTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0Ojpmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQgKmZlKSAvLyB7e3sKLXsKLSAgICBndWlfZm9jdXNfY2hhbmdlKHRydWUpOwotCi0gICAgaWYgKGJsaW5rX3N0YXRlID09IEJMSU5LX05PTkUpCi0JZ3VpX21jaF9zdGFydF9ibGluaygpOwotfSAvLyB9fX0KLQotICAgIHZvaWQKLVZpbVdpZGdldDo6Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCAqZmUpLy97e3sKLXsKLSAgICBndWlfZm9jdXNfY2hhbmdlKGZhbHNlKTsKLQotICAgIGlmIChibGlua19zdGF0ZSAhPSBCTElOS19OT05FKQotCWd1aV9tY2hfc3RvcF9ibGluaygpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OnNldF9ibGlua190aW1lKGxvbmcgd2FpdCwgbG9uZyBvbiwgbG9uZyBvZmYpLy97e3sKLXsKLSAgICBibGlua193YWl0X3RpbWUgPSB3YWl0OwotICAgIGJsaW5rX29uX3RpbWUgPSBvbjsKLSAgICBibGlua19vZmZfdGltZSA9IG9mZjsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpzdGFydF9jdXJzb3JfYmxpbmtpbmcoKS8ve3t7Ci17Ci0gICAgaWYgKGJsaW5rX3RpbWVyLmlzQWN0aXZlKCkpCi0JYmxpbmtfdGltZXIuc3RvcCgpOwotCi0gICAgLyogT25seSBzd2l0Y2ggYmxpbmtpbmcgb24gaWYgbm9uZSBvZiB0aGUgdGltZXMgaXMgemVybyAqLwotICAgIGlmIChibGlua193YWl0X3RpbWUgJiYgYmxpbmtfb25fdGltZSAmJiBibGlua19vZmZfdGltZSAmJiBndWkuaW5fZm9jdXMpCi0gICAgewotCWJsaW5rX3N0YXRlID0gQkxJTktfT047Ci0JZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwotCS8vIFRoZSBmaXJzdCBibGluayBhcHBlYXJzIGFmdGVyIHdhaXRfdGltZQotCWJsaW5rX3RpbWVyLnN0YXJ0KCBibGlua193YWl0X3RpbWUsIHRydWUpOwotICAgIH0KLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpibGlua19jdXJzb3IoKS8ve3t7Ci17Ci0gICAgaWYgKGJsaW5rX3N0YXRlID09IEJMSU5LX09OKQotICAgIHsKLQkvLyBzZXQgY3Vyc29yIG9mZgotCWd1aV91bmRyYXdfY3Vyc29yKCk7Ci0JYmxpbmtfc3RhdGUgPSBCTElOS19PRkY7Ci0JYmxpbmtfdGltZXIuc3RhcnQoIGJsaW5rX29mZl90aW1lLCB0cnVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLQkvLyBzZXQgY3Vyc29yIG9uCi0JZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwotCWJsaW5rX3N0YXRlID0gQkxJTktfT047Ci0JYmxpbmtfdGltZXIuc3RhcnQoIGJsaW5rX29uX3RpbWUsIHRydWUpOwotICAgIH0KLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjpzdG9wX2N1cnNvcl9ibGlua2luZygpLy97e3sKLXsKLSAgICBpZiAoYmxpbmtfdGltZXIuaXNBY3RpdmUoKSkKLQlibGlua190aW1lci5zdG9wKCk7Ci0KLSAgICBpZiAoYmxpbmtfc3RhdGUgPT0gQkxJTktfT0ZGKQotCWd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKLQotICAgIGJsaW5rX3N0YXRlID0gQkxJTktfTk9ORTsKLX0vL319fQotCi0jaWZkZWYgRkVBVF9NWlNDSEVNRQotICAgIHZvaWQKLVZpbVdpZGdldDo6dGltZXJFdmVudChRVGltZXJFdmVudCAqIGV2bnQpLy97e3sKLXsKLSAgICBpZiAoZXZudC0+dGltZXJJZCgpID09IG16c2NoZW1lX3RpbWVyX2lkKQotCXRpbWVyX3Byb2MoKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltV2lkZ2V0OjplbmFibGVfbXpzY2hlbWVfdGhyZWFkcygpLy97e3sKLXsKLSAgICBtenNjaGVtZV90aW1lcl9pZCA9IHN0YXJ0VGltZXIocF9tenEpOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1XaWRnZXQ6OmRpc2FibGVfbXpzY2hlbWVfdGhyZWFkcygpLy97e3sKLXsKLSAgICBraWxsVGltZXIobXpzY2hlbWVfdGltZXJfaWQpOwotfS8vfX19Ci0jZW5kaWYKLQotICAgIHZvaWQKLVZpbVdpZGdldDo6Zmxhc2goKS8ve3t7Ci17Ci0gICAgUVBhaW50ZXIgcCh0aGlzKTsKLQotICAgIHAuc2V0UmFzdGVyT3AoUXQ6OlhvclJPUCk7Ci0gICAgcC5maWxsUmVjdChnZW9tZXRyeSgpLCBRQ29sb3IoMHhGRiwgMHhGRiwgMHhGRikpOwotICAgIHAuZmx1c2goKTsKLSAgICAvL0ZJWE1FOiBNYWtlIHRoaXMgYSBsaXR0bGUgc21hcnRlci4gTWF5YmUgYWRkIGEgdGltZXIgb3Igc29tZXRoaW5nCi0gICAgdXNsZWVwKDE5MDAwKTsKLSAgICBwLmZpbGxSZWN0KGdlb21ldHJ5KCksIFFDb2xvcigweEZGLCAweEZGLCAweEZGKSk7Ci0gICAgcC5mbHVzaCgpOwotICAgIHAuZW5kKCk7Ci19Ly99fX0KLQotCi0vKgotICogIFRoZSBtYWluIFdpbmRvdwotICovCi1WaW1NYWluV2luZG93OjpWaW1NYWluV2luZG93KGNvbnN0IGNoYXIgKm5hbWUgLCBXRmxhZ3MgZikvL3t7ewotCTpLTWFpbldpbmRvdygwTCwgbmFtZSwgZikKLXsKLSNpZmRlZiBGRUFUX0NMSUVOVFNFUlZFUgotICAgIG9sZEZpbHRlciA9IHF0X3NldF94MTFfZXZlbnRfZmlsdGVyKGt2aW1feDExX2V2ZW50X2ZpbHRlcik7Ci0jZW5kaWYKLSAgICBpZiAoZWNob193aWRfYXJnID09IDEpCi0gICAgewotCWZwcmludGYoc3RkZXJyLCAiV0lEOiAlbGRcbiIsIChsb25nKXdpbklkKCkpOwotCWZmbHVzaChzdGRlcnIpOwotICAgIH0KLQotICAgIHcgPSBuZXcgVmltV2lkZ2V0KHRoaXMsICJtYWluIHZpbSB3aWRnZXQiKTsKLSAgICBndWkudyA9IHc7Ci0gICAgc2V0Rm9jdXNQcm94eSh3KTsKLSAgICB3LT5zZXRGb2N1cygpOwotICAgIGhhdmVfdGVhcm9mZiA9IDA7Ci0KLSAgICBmaW5kZGxnID0gbmV3IEtFZEZpbmQodGhpcywgMCwgZmFsc2UpOwotICAgIHJlcGxkbGcgPSBuZXcgS0VkUmVwbGFjZSh0aGlzLCAwLCBmYWxzZSk7Ci0gICAgUU9iamVjdDo6Y29ubmVjdChmaW5kZGxnLCBTSUdOQUwoc2VhcmNoKCkpLCB0aGlzLCBTTE9UKHNsb3RTZWFyY2goKSkpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QocmVwbGRsZywgU0lHTkFMKGZpbmQoKSksIHRoaXMsIFNMT1Qoc2xvdEZpbmQoKSkpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QocmVwbGRsZywgU0lHTkFMKHJlcGxhY2UoKSksIHRoaXMsIFNMT1Qoc2xvdFJlcGxhY2UoKSkpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QocmVwbGRsZywgU0lHTkFMKHJlcGxhY2VBbGwoKSksIHRoaXMsCi0JCQkJCQkgICAgICBTTE9UKHNsb3RSZXBsYWNlQWxsKCkpKTsKLQotI2lmZGVmIEZFQVRfVE9PTEJBUgotICAgIGNvbm5lY3QodG9vbEJhcigpLCBTSUdOQUwoY2xpY2tlZChpbnQpKSwgdGhpcywgU0xPVChtZW51X2FjdGl2YXRlZChpbnQpKSk7Ci0jZW5kaWYKLSNpZmRlZiBGRUFUX0NMSUVOVFNFUlZFUgotICAgIHctPnNlcnZlckFjdGl2YXRlKHdpbklkKCkpOwotCi0gICAgaWYgKHNlcnZlck5hbWUgIT0gTlVMTCkKLQlrYXBwLT5kY29wQ2xpZW50KCktPnJlZ2lzdGVyQXMoUUNTdHJpbmcoKGNvbnN0IGNoYXIqKXNlcnZlck5hbWUpLAotCQkJCQkJCQkgICAgICAgZmFsc2UpOwotICAgIGVsc2UgaWYgKHNlcnZlckRlbGF5ZWRTdGFydE5hbWUgIT0gTlVMTCkKLQlrYXBwLT5kY29wQ2xpZW50KCktPnJlZ2lzdGVyQXMoCi0JCQlRQ1N0cmluZygoY29uc3QgY2hhciopc2VydmVyRGVsYXllZFN0YXJ0TmFtZSksIGZhbHNlKTsKLSAgICBlbHNlIGlmIChhcmdTZXJ2ZXJOYW1lICE9IE5VTEwpCi0Ja2FwcC0+ZGNvcENsaWVudCgpLT5yZWdpc3RlckFzKGFyZ1NlcnZlck5hbWUtPnV0ZjgoKSwgZmFsc2UpOwotI2Vsc2UKLSAgICBpZiAoYXJnU2VydmVyTmFtZSAhPSBOVUxMKQotCWthcHAtPmRjb3BDbGllbnQoKS0+cmVnaXN0ZXJBcyhhcmdTZXJ2ZXJOYW1lLT51dGY4KCksIGZhbHNlKTsKLSNlbmRpZgotICAgIFFYRW1iZWQ6OmluaXRpYWxpemUoKTsKLQotfS8ve3t7Ci0KLSAgICBib29sCi1WaW1NYWluV2luZG93OjpxdWVyeUNsb3NlKCkvL3t7ewotewotICAgIGd1aV9zaGVsbF9jbG9zZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0vL319fQotCi0gICAgYm9vbAotVmltTWFpbldpbmRvdzo6cXVlcnlFeGl0KCkvL3t7ewotewotICAgIHJldHVybiB0cnVlOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1NYWluV2luZG93OjptZW51X2FjdGl2YXRlZChpbnQgZHgpLy97e3sKLXsKLSNpZmRlZiBGRUFUX01FTlUKLSAgICBpZiAoIWR4KQkvLyB0ZWFyb2ZmCi0JcmV0dXJuOwotICAgIGd1aV9tY2hfc2V0X2ZvcmVncm91bmQoKTsKLSAgICBndWlfbWVudV9jYigoVmltTWVudSAqKWR4KTsKLSNlbmRpZgotfS8vfX19Ci0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OmNsaXBib2FyZF9zZWxlY3Rpb25fdXBkYXRlKCkvL3t7ewotewotICAgIGlmIChrYXBwLT5jbGlwYm9hcmQoKS0+b3duc1NlbGVjdGlvbigpKQotCWNsaXBfb3duX3NlbGVjdGlvbigmY2xpcF9zdGFyKTsKLSAgICBlbHNlCi0JY2xpcF9sb3NlX3NlbGVjdGlvbigmY2xpcF9zdGFyKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltTWFpbldpbmRvdzo6Y2xpcGJvYXJkX2RhdGFfdXBkYXRlKCkvL3t7ewotewotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIGlmIChrYXBwLT5jbGlwYm9hcmQoKS0+b3duc0NsaXBib2FyZCgpKQotCWNsaXBfb3duX3NlbGVjdGlvbigmY2xpcF9wbHVzKTsKLSAgICBlbHNlCi0JY2xpcF9sb3NlX3NlbGVjdGlvbigmY2xpcF9wbHVzKTsKLSNlbHNlCi0gICAgaWYgKGthcHAtPmNsaXBib2FyZCgpLT5vd25zU2VsZWN0aW9uKCkpCi0JY2xpcF9vd25fc2VsZWN0aW9uKCZjbGlwX3N0YXIpOwotICAgIGVsc2UKLQljbGlwX2xvc2Vfc2VsZWN0aW9uKCZjbGlwX3N0YXIpOwotI2VuZGlmCi19Ly99fX0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNsb3RTZWFyY2goKS8ve3t7Ci17Ci0gICAgUVN0cmluZwlmaW5kX3RleHQ7Ci0gICAgYm9vbAlkaXJlY3Rpb25fZG93biA9IFRSVUU7Ci0gICAgYm9vbAljYXNlc2Vuc2l0aXZlID0gVFJVRTsKLSAgICBpbnQJCWZsYWdzID0gRlJEX0ZJTkRORVhUOwotCi0gICAgZmluZF90ZXh0ID0gZmluZGRsZy0+Z2V0VGV4dCgpOwotICAgIGRpcmVjdGlvbl9kb3duID0gIShmaW5kZGxnLT5nZXRfZGlyZWN0aW9uKCkpOwotICAgIGNhc2VzZW5zaXRpdmUgPSBmaW5kZGxnLT5jYXNlX3NlbnNpdGl2ZSgpOwotICAgIC8vICAgIGlmIChjYXNlc2Vuc2l0aXZlKSBmaW5kX3RleHQgPSAiXFxDIiArIGZpbmRfdGV4dDsKLSAgICAvLyAgICBlbHNlIGZpbmRfdGV4dCA9ICJcXGMiICsgZmluZF90ZXh0OwotICAgIGlmIChjYXNlc2Vuc2l0aXZlKQotCWZsYWdzIHw9IEZSRF9NQVRDSF9DQVNFOwotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGZpbmRfdGV4dCk7Ci0gICAgZ3VpX2RvX2ZpbmRyZXBsKGZsYWdzLCAoY2hhcl91ICopKGNvbnN0IGNoYXIgKil1bmlzdHJpbmcsIE5VTEwsCi0JCQkJCQkJIChpbnQpZGlyZWN0aW9uX2Rvd24pOwotfS8vfX19Ci0KLSAgICB2b2lkCi1WaW1NYWluV2luZG93OjpzbG90RmluZCgpLy97e3sKLXsKLSAgICBRU3RyaW5nCWZpbmRfdGV4dDsKLSAgICBib29sCWRpcmVjdGlvbl9kb3duID0gVFJVRTsKLSAgICBib29sCWNhc2VzZW5zaXRpdmUgPSBUUlVFOwotICAgIGludAkJZmxhZ3MgPSBGUkRfUl9GSU5ETkVYVDsKLQotICAgIGZpbmRfdGV4dCA9IHJlcGxkbGctPmdldFRleHQoKTsKLSAgICBkaXJlY3Rpb25fZG93biA9ICEocmVwbGRsZy0+Z2V0X2RpcmVjdGlvbigpKTsKLSAgICBjYXNlc2Vuc2l0aXZlID0gcmVwbGRsZy0+Y2FzZV9zZW5zaXRpdmUoKTsKLSAgICAvLyAgICBpZiAoY2FzZXNlbnNpdGl2ZSkgZmluZF90ZXh0ID0gIlxcQyIgKyBmaW5kX3RleHQ7Ci0gICAgLy8gICAgZWxzZSBmaW5kX3RleHQgPSAiXFxjIiArIGZpbmRfdGV4dDsKLSAgICBpZiAoY2FzZXNlbnNpdGl2ZSkgZmxhZ3MgfD0gRlJEX01BVENIX0NBU0U7Ci0KLSAgICBRQ1N0cmluZyB1bmlzdHJpbmcgPSB2bXctPmNvZGVjLT5mcm9tVW5pY29kZShmaW5kX3RleHQpOwotICAgIGd1aV9kb19maW5kcmVwbChmbGFncywgKGNoYXJfdSAqKShjb25zdCBjaGFyICopdW5pc3RyaW5nLCBOVUxMLAotCQkJCQkJCSAoaW50KWRpcmVjdGlvbl9kb3duKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltTWFpbldpbmRvdzo6c2xvdFJlcGxhY2UoKS8ve3t7Ci17Ci0gICAgUVN0cmluZwlmaW5kX3RleHQ7Ci0gICAgUVN0cmluZyAgICAgcmVwbF90ZXh0OwotICAgIGJvb2wJZGlyZWN0aW9uX2Rvd24gPSBUUlVFOwotICAgIGJvb2wJY2FzZXNlbnNpdGl2ZSA9IFRSVUU7Ci0gICAgaW50CQlmbGFncyA9IEZSRF9SRVBMQUNFOwotCi0gICAgZmluZF90ZXh0ID0gcmVwbGRsZy0+Z2V0VGV4dCgpOwotICAgIHJlcGxfdGV4dCA9IHJlcGxkbGctPmdldFJlcGxhY2VUZXh0KCk7Ci0gICAgZGlyZWN0aW9uX2Rvd24gPSAhKHJlcGxkbGctPmdldF9kaXJlY3Rpb24oKSk7Ci0gICAgLy9pZiAoY2FzZXNlbnNpdGl2ZSkgZmluZF90ZXh0ID0gIlxcQyIgKyBmaW5kX3RleHQ7Ci0gICAgLy9lbHNlIGZpbmRfdGV4dCA9ICJcXGMiICsgZmluZF90ZXh0OwotICAgIGlmIChjYXNlc2Vuc2l0aXZlKSBmbGFncyB8PSBGUkRfTUFUQ0hfQ0FTRTsKLQotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGZpbmRfdGV4dCk7Ci0gICAgUUNTdHJpbmcgdW5pc3RyaW5nMiA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKHJlcGxfdGV4dCk7Ci0gICAgZ3VpX2RvX2ZpbmRyZXBsKGZsYWdzLCAoY2hhcl91ICopKGNvbnN0IGNoYXIgKil1bmlzdHJpbmcsCi0JCSAgICAgIChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nMiwgKGludClkaXJlY3Rpb25fZG93bik7Ci19Ly99fX0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNsb3RSZXBsYWNlQWxsKCkvL3t7ewotewotICAgIFFTdHJpbmcJZmluZF90ZXh0OwotICAgIFFTdHJpbmcgICAgIHJlcGxfdGV4dDsKLSAgICBib29sCWRpcmVjdGlvbl9kb3duID0gVFJVRTsKLSAgICBib29sCWNhc2VzZW5zaXRpdmUgPSBUUlVFOwotICAgIGludAkJZmxhZ3MgPSBGUkRfUkVQTEFDRUFMTDsKLQotICAgIGZpbmRfdGV4dCA9IHJlcGxkbGctPmdldFRleHQoKTsKLSAgICByZXBsX3RleHQgPSByZXBsZGxnLT5nZXRSZXBsYWNlVGV4dCgpOwotICAgIGRpcmVjdGlvbl9kb3duID0gIShyZXBsZGxnLT5nZXRfZGlyZWN0aW9uKCkpOwotICAgIGNhc2VzZW5zaXRpdmUgPSByZXBsZGxnLT5jYXNlX3NlbnNpdGl2ZSgpOwotICAgIC8vICAgIGlmIChjYXNlc2Vuc2l0aXZlKSBmaW5kX3RleHQgPSAiXFxDIiArIGZpbmRfdGV4dDsKLSAgICAvLyAgICBlbHNlIGZpbmRfdGV4dCA9ICJcXGMiICsgZmluZF90ZXh0OwotICAgIGlmIChjYXNlc2Vuc2l0aXZlKQotCWZsYWdzIHw9IEZSRF9NQVRDSF9DQVNFOwotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKGZpbmRfdGV4dCk7Ci0gICAgUUNTdHJpbmcgdW5pc3RyaW5nMiA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKHJlcGxfdGV4dCk7Ci0gICAgZ3VpX2RvX2ZpbmRyZXBsKGZsYWdzLCAoY2hhcl91ICopKGNvbnN0IGNoYXIgKil1bmlzdHJpbmcsCi0JCSAgICAgIChjaGFyX3UgKikoY29uc3QgY2hhciopdW5pc3RyaW5nMiwgKGludClkaXJlY3Rpb25fZG93bik7Ci19Ly99fX0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNob3dBYm91dEtERSgpCi17Ci0gICAgS0Fib3V0S0RFICprZGUgPSBuZXcgS0Fib3V0S0RFKHRoaXMpOwotICAgIGtkZS0+c2hvdygpOwotfQotCi0gICAgdm9pZAotVmltTWFpbldpbmRvdzo6c2hvd0Fib3V0QXBwbGljYXRpb24oKS8ve3t7Ci17Ci0gICAgS0Fib3V0RGF0YSAqYWJvdXREYXRhID0gbmV3IEtBYm91dERhdGEoCi0JICAgICJrdmltIgotCSAgICAsIEkxOE5fTk9PUCgiS1ZpbSIpCi0JICAgICwgVklNX1ZFUlNJT05fU0hPUlQKLQkgICAgLCBJMThOX05PT1AoIlZpbSBpbiBhIEtERSBpbnRlcmZhY2UiKQotCSAgICAsIDAKLQkgICAgLCAiKGMpIFZpbSBUZWFtLCBcIjpoZWxwIGNyZWRpdHNcIiBmb3IgbW9yZSBpbmZvcy5cblR5cGUgXCI6aGVscCBpY2NmXCIgdG8gc2VlIGhvdyB5b3UgY2FuIGhlbHAgdGhlIGNoaWxkcmVuIGluIFVnYW5kYSIKLQkgICAgLCAwbAotCSAgICAsICJodHRwOi8vZnJlZWhhY2tlcnMub3JnL2t2aW0iCi0JICAgICwgImt2aW0tZGV2QGZyZWVudXgub3JnIgotCSAgICApOwotCi0gICAgYWJvdXREYXRhLT5hZGRBdXRob3IoIkJyYW0gTW9vbGVuYWFyIiwKLQkgICAgSTE4Tl9OT09QKCJNYWluIHZpbSBhdXRob3IiKSwKLQkgICAgIkJyYW1AdmltLm9yZyIsCi0JICAgICJodHRwOi8vd3d3LnZpbS5vcmcvIik7Ci0gICAgYWJvdXREYXRhLT5hZGRBdXRob3IoIlRob21hcyBDYXByaWNlbGxpIiwKLQkgICAgSTE4Tl9OT09QKCJLREUgcG9ydGluZyIpLAotCSAgICAib3J6ZWxAZnJlZWhhY2tlcnMub3JnIiwKLQkgICAgImh0dHA6Ly9vcnplbC5mcmVlaGFja2Vycy5vcmciKTsKLSAgICBhYm91dERhdGEtPmFkZEF1dGhvcigiUGhpbGlwcGUgRnJlbXkiLAotCSAgICBJMThOX05PT1AoIktERSBwb3J0aW5nIiksCi0JICAgICJwZnJlbXlAY2hlei5jb20iLAotCSAgICAiaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcva3ZpbSIpOwotICAgIGFib3V0RGF0YS0+YWRkQXV0aG9yKCJNYXJrIFdlc3Rjb3R0IiwKLQkgICAgSTE4Tl9OT09QKCJRdG9waWEgcG9ydGluZywgbWFpbnRhaW5lciBvZiB0aGUgUXRvcGlhIHBhcnQiKSwKLQkgICAgIm1hcmtAaG91c2VvZmZpc2gub3JnIiwKLQkgICAgImh0dHA6Ly9ob3VzZW9mZmlzaC5vcmciKTsKLSAgICBhYm91dERhdGEtPmFkZEF1dGhvcigiTWlja2FlbCBNYXJjaGFuZCIsCi0JICAgIEkxOE5fTk9PUCgiS0RFIHBvcnRpbmcsIG1haW50YWluZXIiKSwKLQkgICAgIm1hcmNoYW5kQGtkZS5vcmciLAotCSAgICAiaHR0cDovL2ZyZWVudXgub3JnIik7Ci0gICAgYWJvdXREYXRhLT5hZGRBdXRob3IoIk1hbnkgb3RoZXIgcGVvcGxlIiwKLQkgICAgSTE4Tl9OT09QKCJ0eXBlIDpoZWxwIGNyZWRpdHMgZm9yIG1vcmUgaW5mb3MiKQotCSAgICApOwotICAgIGFib3V0RGF0YS0+YWRkQ3JlZGl0KCJWaW5jZSBOZWdyaSIsCi0JICAgIEkxOE5fTk9PUCgiQW50aWFsaWFzaW5nIHN1cHBvcnQsIENvbG9yIGZpeGVzIiksCi0JICAgICJ2bmVncmlAYXNsLWVsZWN0cm9uaWNzLmNvLnVrIik7Ci0gICAgYWJvdXREYXRhLT5hZGRDcmVkaXQoIk1hbHRlIFN0YXJvc3RpayIsCi0JICAgIEkxOE5fTk9PUCgiUGF0Y2ggZm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IiksCi0JICAgICJtYWx0ZUBrZGUub3JnIik7Ci0gICAgYWJvdXREYXRhLT5hZGRDcmVkaXQoIk1hcmsgU3Rvc2JlcmciLAotCSAgICBJMThOX05PT1AoIlByb3ZpZGVkIGEgRnJlZUJTRCBib3ggdG8gZGVidWcgS1ZpbSBvbiBCU0QiKSwKLQkgICAgIm1hcmtAc3VtbWVyc2F1bHQuY29tIgotCSAgICApOwotICAgIGFib3V0RGF0YS0+YWRkQ3JlZGl0KCJIZW5yaWsgU2tvdHQiLAotCSAgICBJMThOX05PT1AoIkZvbnQgcGF0Y2ggd2hlbiBLREUgbm90IGNvbmZpZ3VyZWQiKSwKLQkgICAgImhlbnJpay5za290dEBoZW0udXRmb3JzLnNlIgotCSAgICApOwotICAgIGFib3V0RGF0YS0+YWRkQ3JlZGl0KCJLYWlsYXNoIFNldGh1cmFtYW4iLAotCSAgICBJMThOX05PT1AoIk5ldEJTRCBjb25maWd1cmUvY29tcGlsYXRpb24gZml4ZXMiKQotCSAgICApOwotICAgIGFib3V0RGF0YS0+c2V0TGljZW5zZVRleHQoCi0iS1ZpbSBhcyBhbiBleHRlbnNpb24gb2YgVmltIGZvbGxvd3MgVmltIGxpY2Vuc2UuXG5cCi1Zb3UgY2FuIHJlYWQgaXQgd2l0aCBcIjpoZWxwIGxpY2Vuc2VcIlxuXAotT3IgcmVhZCB0aGUgZmlsZSAkVklNUlVOVElNRS9kb2MvdWdhbmRhLnR4dC4iKTsKLQotICAgIEtBYm91dEFwcGxpY2F0aW9uICphYm91dCA9IG5ldyBLQWJvdXRBcHBsaWNhdGlvbihhYm91dERhdGEpOwotICAgIGFib3V0LT5zaG93KCk7Ci19Ly99fX0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNob3dUaXBPZlRoZURheSgpCi17Ci0jaWYgUVRfVkVSU0lPTj49MzAwCi0gICAgS1RpcERpYWxvZzo6c2hvd1RpcCh2bXcsIFFTdHJpbmc6Om51bGwsIHRydWUpOwotI2VuZGlmCi19Ci0KLSAgICB2b2lkCi1WaW1NYWluV2luZG93OjpidWZmZXJzVG9vbGJhcigpCi17Ci0KLX0KLQotICAgIHZvaWQKLVZpbU1haW5XaW5kb3c6OnNob3dCdWdSZXBvcnQoKQotewotICAgIEtCdWdSZXBvcnQgKmJ1Zz0gbmV3IEtCdWdSZXBvcnQodGhpcywgdHJ1ZSk7Ci0gICAgYnVnLT5zaG93KCk7Ci19Ci0KLS8qCi0gKiAgIFZpbSBEaWFsb2cKLSAqCi0gKiBSZXR1cm5zOgotICogIDA6IENhbmNlbAotICogIDEtIDogbmIgb2YgdGhlIHByZXNzZWQgYnV0dG9uCi0gKi8KLQotVmltRGlhbG9nOjpWaW1EaWFsb2coaW50IHR5cGUsCQkvKiB0eXBlIG9mIGRpYWxvZyAqLy8ve3t7Ci0JY2hhcl91ICogdGl0bGUsCQkvKiB0aXRsZSBvZiBkaWFsb2cgKi8KLQljaGFyX3UgKiBtZXNzYWdlLAkvKiBtZXNzYWdlIHRleHQgKi8KLQljaGFyX3UgKiBidXR0b25zLAkvKiBuYW1lcyBvZiBidXR0b25zICovCi0JaW50IGRlZl9idXQsCQkvKiBkZWZhdWx0IGJ1dHRvbiAqLwotCWNoYXJfdSAqdGV4dGZpZWxkKQkvKiBpbnB1dCBmaWVsZCAqLwotICAgIDpRRGlhbG9nKHZtdywgInZpbSBnZW5lcmljIGRpYWxvZyIsIHRydWUpLCAvLyB0cnVlIGlzIGZvciAibW9kYWwiCi0gICAgbWFwcGVyKHRoaXMsICJkaWFsb2cgc2lnbmFsIG1hcHBlciIpCi17Ci0gICAgLyoKLSAgICAgKiBDcmVhdGUgSWNvbgotICAgICAqLwotICAgIGNoYXIgKiogaWNvbl9kYXRhOwotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0JY2FzZSBWSU1fR0VORVJJQzoKLQkgICAgaWNvbl9kYXRhID0gZ2VuZXJpY194cG07Ci0JICAgIGJyZWFrOwotCWNhc2UgVklNX0VSUk9SOgotCSAgICBpY29uX2RhdGEgPSBlcnJvcl94cG07Ci0JICAgIGJyZWFrOwotCWNhc2UgVklNX1dBUk5JTkc6Ci0JICAgIGljb25fZGF0YSA9IGFsZXJ0X3hwbTsKLQkgICAgYnJlYWs7Ci0JY2FzZSBWSU1fSU5GTzoKLQkgICAgaWNvbl9kYXRhID0gaW5mb194cG07Ci0JICAgIGJyZWFrOwotCWNhc2UgVklNX1FVRVNUSU9OOgotCSAgICBpY29uX2RhdGEgPSBxdWVzdF94cG07Ci0JICAgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICAgIGljb25fZGF0YSA9IGdlbmVyaWNfeHBtOwotICAgIH07Ci0gICAgUUxhYmVsICogaWNvbiA9IG5ldyBRTGFiZWwodGhpcyk7Ci0gICAgaWNvbi0+c2V0UGl4bWFwKFFQaXhtYXAoKGNvbnN0IGNoYXIgKiopIGljb25fZGF0YSkpOwotICAgIGljb24tPnNldEZpeGVkU2l6ZShpY29uLT5zaXplSGludCgpKTsKLQotICAgIFFMYWJlbCAqIHRleHQgPSBuZXcgUUxhYmVsKFFTVFIobWVzc2FnZSksIHRoaXMpOwotICAgIHRleHQtPnNldEFsaWdubWVudChBbGlnbkhDZW50ZXIgfCBBbGlnblZDZW50ZXIgfCBFeHBhbmRUYWJzKTsKLQotICAgIFFTdHJpbmdMaXN0IGJ1dHRvblRleHQgPSBRU3RyaW5nTGlzdDo6c3BsaXQoRExHX0JVVFRPTl9TRVAsIFFTVFIoYnV0dG9ucykpOwotICAgIGludCBidXROYiA9IGJ1dHRvblRleHQuY291bnQoKTsKLQotICAgIC8qCi0gICAgICogIExheW91dAotICAgICAqLwotCi0gICAgUVZCb3hMYXlvdXQgKiB2bHkgPSBuZXcgUVZCb3hMYXlvdXQodGhpcywgNSwgNSk7Ci0gICAgUUhCb3hMYXlvdXQgKiBobHkxID0gbmV3IFFIQm94TGF5b3V0KHZseSwgNSk7Ci0gICAgaGx5MS0+YWRkV2lkZ2V0KGljb24pOwotICAgIGhseTEtPmFkZFdpZGdldCh0ZXh0KTsKLSAgICBRSEJveExheW91dCAqIGhseTMgPSBuZXcgUUhCb3hMYXlvdXQodmx5ICwgNSk7Ci0gICAgaWYgKHRleHRmaWVsZCAhPSBOVUxMKQotICAgIHsKLQllbnRyeSA9IG5ldyBRTGluZUVkaXQoUVNUUih0ZXh0ZmllbGQpLCB0aGlzKTsKLQllbnRyeS0+c2V0VGV4dChRU1RSKHRleHRmaWVsZCkpOwotCWhseTMtPmFkZFdpZGdldChlbnRyeSk7Ci0JcmV0ID0gdGV4dGZpZWxkOwotICAgIH0KLSAgICBlbHNlCi0JZW50cnkgPSBOVUxMOwotCi0gICAgUUhCb3hMYXlvdXQgKiBobHkyID0gbmV3IFFIQm94TGF5b3V0KHZseSwgMTUpOwotICAgIFFTdHJpbmcgczsKLSAgICBRUHVzaEJ1dHRvbiAqIHB1c2hCdXR0b24gPSAwTDsKLSAgICBmb3IgKGludCBpID0gMDsgaTxidXROYjsgaSsrKQotICAgIHsKLQlzID0gYnV0dG9uVGV4dFtpXTsKLQlwdXNoQnV0dG9uID0gbmV3IFFQdXNoQnV0dG9uKHMsIHRoaXMpOwotCWlmIChzLmZpbmQoJyYnKSAhPSAtMSkKLQkgICAgcHVzaEJ1dHRvbi0+c2V0QWNjZWwocy5hdChzLmZpbmQoJyYnKSArIDEpLmxhdGluMSgpKTsKLQotCWhseTItPmFkZFdpZGdldChwdXNoQnV0dG9uKTsKLQlpZiAoaSA9PSBkZWZfYnV0IC0gMSkKLQl7Ci0JICAgIHB1c2hCdXR0b24tPnNldERlZmF1bHQodHJ1ZSk7Ci0JICAgIHB1c2hCdXR0b24tPnNldEF1dG9EZWZhdWx0KHRydWUpOwotCSAgICBzZXRSZXN1bHQoaSArIDEpOwotCX0KLQljb25uZWN0KHB1c2hCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLCAmbWFwcGVyLCBTTE9UKG1hcCgpKSk7Ci0JbWFwcGVyLnNldE1hcHBpbmcocHVzaEJ1dHRvbiwgaSArIDEpOwotICAgIH0KLSAgICBjb25uZWN0KCZtYXBwZXIsIFNJR05BTChtYXBwZWQoaW50KSksIHRoaXMsIFNMT1QoZG9uZShpbnQpKSk7Ci0KLSAgICBzZXRDYXB0aW9uKFFTVFIodGl0bGUpKTsKLQotICAgIHZseS0+YWN0aXZhdGUoKTsKLX0vL319fQotCi0gICAgdm9pZAotVmltRGlhbG9nOjpkb25lKGludCByKQotewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgIHsKLQlpZiAocikKLQl7Ci0JICAgUUNTdHJpbmcgdW5pc3RyaW5nID0gdm13LT5jb2RlYy0+ZnJvbVVuaWNvZGUoZW50cnktPnRleHQoKSk7Ci0JICAgU1RSQ1BZKHJldCwgKGNvbnN0IGNoYXIqKXVuaXN0cmluZyk7Ci0JfQotCWVsc2UKLQkgICAgKnJldCA9IE5VTDsKLSAgICB9Ci0gICAgUURpYWxvZzo6ZG9uZShyKTsKLX0KLQotLyoKLSAqIFNjcm9sbEJhciBwb29sIGhhbmRsaW5nCi0gKi8KLVNCUG9vbDo6U0JQb29sKHZvaWQpLy97e3sKLSAgICA6bWFwcGVyKHRoaXMsICJTQlBvb2wgc2lnbmFsIG1hcHBlciIpCi17Ci0gICAgY29ubmVjdCgmbWFwcGVyLCBTSUdOQUwobWFwcGVkKGludCkpLCB0aGlzLCBTTE9UKHNiVXNlZChpbnQpKSk7Ci19Ly99fX0KLQotCi0gICAgdm9pZAotU0JQb29sOjpjcmVhdGUoR3VpU2Nyb2xsYmFyICogc2IsIGludCBvcmllbnQpLy97e3sKLXsKLSAgICBzd2l0Y2gob3JpZW50KQotICAgIHsKLQljYXNlIFNCQVJfSE9SSVo6Ci0JICAgIHNiLT53ID0gbmV3IFFTY3JvbGxCYXIoUVNjcm9sbEJhcjo6SG9yaXpvbnRhbCwgdm13KTsKLQkgICAgYnJlYWs7Ci0JY2FzZSBTQkFSX1ZFUlQ6Ci0JICAgIHNiLT53ID0gbmV3IFFTY3JvbGxCYXIoUVNjcm9sbEJhcjo6VmVydGljYWwsIHZtdyk7Ci0JICAgIGJyZWFrOwotCWRlZmF1bHQ6Ci0JICAgIHNiLT53ID0gMDsKLQkgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbm5lY3Qoc2ItPncsIFNJR05BTCh2YWx1ZUNoYW5nZWQoaW50KSksICZtYXBwZXIsIFNMT1QobWFwKCkpKTsKLSAgICBtYXBwZXIuc2V0TWFwcGluZyhzYi0+dywgKGxvbmcpc2IpOwotfS8vfX19Ci0KLQotICAgIHZvaWQKLVNCUG9vbDo6c2JVc2VkKGludCB3aG8pLy97e3sKLXsKLSAgICBHdWlTY3JvbGxiYXIgKnNiID0gKEd1aVNjcm9sbGJhciopd2hvOwotICAgIGd1aV9kcmFnX3Njcm9sbGJhcihzYiwgc2ItPnctPnZhbHVlKCksIEZBTFNFKTsKLX0vL319fQotCi0KLSAgICB2b2lkCi1TQlBvb2w6OmRlc3Ryb3koR3VpU2Nyb2xsYmFyICpzYikvL3t7ewotewotICAgIGlmICghc2ItPncpCi0JcmV0dXJuOwotCi0gICAgZGVsZXRlIHNiLT53OwotICAgIHNiLT53ID0gMDsKLX0vL319fQotCi0jaWZkZWYgRkVBVF9DTElFTlRTRVJWRVIKLSAgICBzdGF0aWMgaW50Ci1rdmltX3gxMV9ldmVudF9maWx0ZXIoWEV2ZW50KiBlKS8ve3t7Ci17Ci0gICAgaWYgKGUtPnhwcm9wZXJ0eS50eXBlID09IFByb3BlcnR5Tm90aWZ5Ci0JICAgICYmIGUtPnhwcm9wZXJ0eS5hdG9tID09IGNvbW1Qcm9wZXJ0eQotCSAgICAmJiBlLT54cHJvcGVydHkud2luZG93ID09IGNvbW1XaW5kb3cKLQkgICAgJiYgZS0+eHByb3BlcnR5LnN0YXRlID09IFByb3BlcnR5TmV3VmFsdWUpCi0Jc2VydmVyRXZlbnRQcm9jKHF0X3hkaXNwbGF5KCksIGUpOwotCi0gICAgaWYgKG9sZEZpbHRlcikKLQlyZXR1cm4gb2xkRmlsdGVyKCBlICk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfS8vfX19Ci0jZW5kaWYKLQotLy9hZGQgc29tZSBRVCAzIGZvbnRzIHVzZWZ1bGwgZnVuY3Rpb25zCi0jaWYgUVRfVkVSU0lPTjwzMDAKLSAgICBRU3RyaW5nCi1LVmltVXRpbHM6OnRvU3RyaW5nKFFGb250ICpmKQotewotICAgIFFTdHJpbmdMaXN0IGw7Ci0gICAgbC5hcHBlbmQoZi0+ZmFtaWx5KCkpOwotICAgIGwuYXBwZW5kKFFTdHJpbmc6Om51bWJlcihmLT5wb2ludFNpemUoKSkpOwotICAgIGwuYXBwZW5kKFFTdHJpbmc6Om51bWJlcihmLT5waXhlbFNpemUoKSkpOwotICAgIGwuYXBwZW5kKFFTdHJpbmc6Om51bWJlcigoaW50KWYtPnN0eWxlSGludCgpKSk7Ci0gICAgbC5hcHBlbmQoUVN0cmluZzo6bnVtYmVyKGYtPndlaWdodCgpKSk7Ci0gICAgbC5hcHBlbmQoUVN0cmluZzo6bnVtYmVyKChpbnQpZi0+aXRhbGljKCkpKTsKLSAgICBsLmFwcGVuZChRU3RyaW5nOjpudW1iZXIoKGludClmLT51bmRlcmxpbmUoKSkpOwotICAgIGwuYXBwZW5kKFFTdHJpbmc6Om51bWJlcigoaW50KWYtPnN0cmlrZU91dCgpKSk7Ci0gICAgbC5hcHBlbmQoUVN0cmluZzo6bnVtYmVyKChpbnQpZi0+Zml4ZWRQaXRjaCgpKSk7Ci0gICAgbC5hcHBlbmQoUVN0cmluZzo6bnVtYmVyKChpbnQpZi0+cmF3TW9kZSgpKSk7Ci0gICAgcmV0dXJuIGwuam9pbigiLCIpOwotfQotCi0gICAgYm9vbAotS1ZpbVV0aWxzOjpmcm9tU3RyaW5nKFFGb250ICpmLCBRU3RyaW5nIGRlc2NyaXApCi17Ci0gICBRU3RyaW5nTGlzdCBsKFFTdHJpbmdMaXN0OjpzcGxpdCgnLCcsIGRlc2NyaXApKTsKLQotICAgIGludCBjb3VudCA9IGwuY291bnQoKTsKLSAgICBpZiAoY291bnQgIT0gMTAgJiYgY291bnQgIT0gOSkKLQlyZXR1cm4gRkFMU0U7Ci0KLSAgICBmLT5zZXRGYW1pbHkobFswXSk7Ci0gICAgZi0+c2V0UG9pbnRTaXplKGxbMV0udG9JbnQoKSk7Ci0gICAgaWYgKGNvdW50ID09IDkpCi0gICAgewotCWYtPnNldFN0eWxlSGludCgoUUZvbnQ6OlN0eWxlSGludCkgbFsyXS50b0ludCgpKTsKLQlmLT5zZXRXZWlnaHQobFszXS50b0ludCgpKTsKLQlmLT5zZXRJdGFsaWMobFs0XS50b0ludCgpKTsKLQlmLT5zZXRVbmRlcmxpbmUobFs1XS50b0ludCgpKTsKLQlmLT5zZXRTdHJpa2VPdXQobFs2XS50b0ludCgpKTsKLQlmLT5zZXRGaXhlZFBpdGNoKGxbN10udG9JbnQoKSk7Ci0JZi0+c2V0UmF3TW9kZShsWzhdLnRvSW50KCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotCWYtPnNldFBpeGVsU2l6ZShsWzJdLnRvSW50KCkpOwotCWYtPnNldFN0eWxlSGludCgoUUZvbnQ6OlN0eWxlSGludCkgbFszXS50b0ludCgpKTsKLQlmLT5zZXRXZWlnaHQobFs0XS50b0ludCgpKTsKLQlmLT5zZXRJdGFsaWMobFs1XS50b0ludCgpKTsKLQlmLT5zZXRVbmRlcmxpbmUobFs2XS50b0ludCgpKTsKLQlmLT5zZXRTdHJpa2VPdXQobFs3XS50b0ludCgpKTsKLQlmLT5zZXRGaXhlZFBpdGNoKGxbOF0udG9JbnQoKSk7Ci0JZi0+c2V0UmF3TW9kZShsWzldLnRvSW50KCkpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLSNlbmRpZgotCi0gICAgUVN0cmluZwotS1ZpbVV0aWxzOjpjb252ZXJ0RW5jb2RpbmdOYW1lKFFTdHJpbmcgbmFtZSkKLXsKLSAgICBpZiAobmFtZS5zdGFydHNXaXRoKCJ1Y3MiKSB8fCBuYW1lLnN0YXJ0c1dpdGgoInV0Zi0xNiIpKQotCXJldHVybiBRU3RyaW5nKCJ1dGYxNiIpOwotICAgIGlmIChuYW1lID09ICJjcDk1MCIpCi0JcmV0dXJuIFFTdHJpbmcoIkJpZzUiKTsKLSAgICByZXR1cm4gUVN0cmluZygpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9rZGVfd2lkLmggYi9zcmMvZ3VpX2tkZV93aWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGViNjdiZS4uMDAwMDAwMAotLS0gYS9zcmMvZ3VpX2tkZV93aWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vKiB2aTpzZXQgdHM9OCBzdHM9MCBzdz04OgotICoKLSAqIFZJTSAtIFZpIElNcHJvdmVkCQlieSBCcmFtIE1vb2xlbmFhcgotICoKLSAqIERvICI6aGVscCB1Z2FuZGEiICBpbiBWaW0gdG8gcmVhZCBjb3B5aW5nIGFuZCB1c2FnZSBjb25kaXRpb25zLgotICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCi0gKi8KLQotLyoKLSAqIFBvcnRpbmcgdG8gS0RFKDIpIHdhcyBkb25lIGJ5Ci0gKgotICogIChDKSAyMDAwIGJ5IFRob21hcyBDYXByaWNlbGxpIDxvcnplbEBmcmVlaGFja2Vycy5vcmc+Ci0gKgotICogIFBsZWFzZSB2aXNpdCBodHRwOi8vZnJlZWhhY2tlcnMub3JnL2t2aW0gZm9yIG90aGVyIHZpbS0gb3IKLSAqICBrZGUtcmVsYXRlZCBjb2RpbmcuCi0gKgotICogICRJZCQKLSAqCi0gKi8KLQotI2lmbmRlZiBHVUlfS0RFX1dJREdFVAotI2RlZmluZSBHVUlfS0RFX1dJREdFVAotCi0jaWYgMQotI2RlZmluZSBkYmYoIGZvcm1hdCwgYXJncy4uLiApIHsgcHJpbnRmKCAiJXMiICIgOiAiIGZvcm1hdCAiXG4iICwgX19GVU5DVElPTl9fICwgIyMgYXJncyApOyBmZmx1c2goc3Rkb3V0KTsgfQotI2RlZmluZSBkYigpICAgICAgIHsgcHJpbnRmKCAiJXNcbiIsIF9fRlVOQ1RJT05fXyApO2ZmbHVzaChzdGRvdXQpOyB9Ci0jZWxzZQotI2RlZmluZSBkYmYoZm9ybWF0LCBhcmdzLi4uICkKLSNkZWZpbmUgZGIoKQotI2VuZGlmCi0KLSNkZWZpbmUgVU5JWAkgICAgLy8gcHJldmVudCBhIHdhcm5pbmcgOiBhIHN5bWJvbCBpcyBkZWZpbmVkIHR3aWNlIGluIFggYW5kIFF0Ci0KLSNpbmNsdWRlIDxxZGlhbG9nLmg+Ci0jaW5jbHVkZSA8cWxhYmVsLmg+Ci0jaW5jbHVkZSA8cXNpZ25hbG1hcHBlci5oPgotI2luY2x1ZGUgPHF0aW1lci5oPgotI2luY2x1ZGUgPHFtYWlud2luZG93Lmg+Ci0jaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+Ci0jaW5jbHVkZSA8cWV2ZW50Lmg+Ci0jaW5jbHVkZSA8cWxpbmVlZGl0Lmg+Ci0jaW5jbHVkZSA8cXBhaW50ZXIuaD4KLSNpbmNsdWRlIDxxd2lkZ2V0Lmg+Ci0jaW5jbHVkZSA8cXBvcHVwbWVudS5oPgotI2luY2x1ZGUgPGtsb2NhbGUuaD4KLSNpbmNsdWRlIDxrYXBwLmg+Ci0jaW5jbHVkZSA8a2NtZGxpbmVhcmdzLmg+Ci0jaW5jbHVkZSA8a2Fib3V0ZGF0YS5oPgotI2luY2x1ZGUgPGtlZGl0Y2wuaD4KLSNpbmNsdWRlIDxrYWJvdXRkYXRhLmg+Ci0jaWYgKEtERV9WRVJTSU9OPj0yOTApCi0jaW5jbHVkZSA8a21haW53aW5kb3cuaD4KLSNlbHNlCi0jaW5jbHVkZSA8a3RtYWlud2luZG93Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxrcGFydHMvcGFydC5oPgotI2luY2x1ZGUgPGt1cmwuaD4KLSNpbmNsdWRlICJrdmltX2lmYWNlLmgiCi0KLSN1bmRlZiBVTklYCSAgICAvLyBwcmV2ZW50IGEgd2FybmluZwotZXh0ZXJuICJDIiB7Ci0jaW5jbHVkZSAidmltLmgiCi19Ci0KLWNsYXNzIFFQdXNoQnV0dG9uOwotY2xhc3MgUURpYWxvZzsKLWNsYXNzIFFMaW5lRWRpdDsKLWNsYXNzIFFTaWduYWxNYXBwZXI7Ci1jbGFzcyBRUGFpbnRFdmVudDsKLQotZW51bSBCbGlua1N0YXRlCi17Ci0JQkxJTktfTk9ORSwKLQlCTElOS19PTiwKLQlCTElOS19PRkYKLX07Ci0KLWNsYXNzIFZpbVdpZGdldCA6IHB1YmxpYyBRV2lkZ2V0LCB2aXJ0dWFsIHB1YmxpYyBLVmltCi17Ci0JUV9PQkpFQ1QKLQotcHVibGljOgotCVZpbVdpZGdldChRV2lkZ2V0ICpwYXJlbnQgPSAwLCBjb25zdCBjaGFyICpuYW1lID0gMCwgV0ZsYWdzIGYgPSAwKTsKLQl2aXJ0dWFsIHZvaWQgcGFpbnRFdmVudChRUGFpbnRFdmVudCAqKTsKLQl2b2lkCWRyYXdfc3RyaW5nKGludCB4LCBpbnQgeSwgUVN0cmluZyBzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwotCi0JLyoqIEluaXQgdGhlIGJsaW5raW5nIHRpbWUgKi8KLQl2b2lkIHNldF9ibGlua190aW1lKGxvbmcsIGxvbmcsIGxvbmcpOwotCXZvaWQgc3RhcnRfY3Vyc29yX2JsaW5raW5nKCk7Ci0Jdm9pZCBzdG9wX2N1cnNvcl9ibGlua2luZygpOwotCXZvaWQgd2FpdChsb25nKTsKLSNpZmRlZiBGRUFUX0NMSUVOVFNFUlZFUgotCXZvaWQgc2VydmVyQWN0aXZhdGUoV0lkIGlkKTsKLSNlbmRpZgotI2lmZGVmIEZFQVRfTVpTQ0hFTUUKLQl2b2lkIGVuYWJsZV9tenNjaGVtZV90aHJlYWRzKCk7Ci0Jdm9pZCBkaXNhYmxlX216c2NoZW1lX3RocmVhZHMoKTsKLSNlbmRpZgotCXZvaWQgZmxhc2goKTsKLQotCS8qKiBEQ09QICovCi0Jdm9pZCBleGVjTm9ybWFsKFFTdHJpbmcgY29tbWFuZCk7Ci0Jdm9pZCBleGVjSW5zZXJ0KFFTdHJpbmcgY29tbWFuZCk7Ci0Jdm9pZCBleGVjUmF3KFFTdHJpbmcgY29tbWFuZCk7Ci0Jdm9pZCBleGVjQ21kKFFTdHJpbmcgY29tbWFuZCk7Ci0JUVN0cmluZyBldmFsKFFTdHJpbmcgZXhwcik7Ci0KLQlib29sIHdhaXRfZG9uZTsKLQlCbGlua1N0YXRlIGJsaW5rX3N0YXRlOwotCVFQYWludGVyICpwYWludGVyOwotCVFQb3B1cE1lbnUgKm1lbnU7Ci0JdmlydHVhbCB2b2lkIHNldE1pY3JvRm9jdXNIaW50KGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBib29sIHRleHQ9VFJVRSwgUUZvbnQgKmYgPSAwKQotCXsKLQkgICAgUVdpZGdldDo6c2V0TWljcm9Gb2N1c0hpbnQoeCwgeSwgdywgaCwgdGV4dCwgZik7Ci0JfQotCi1wcm90ZWN0ZWQ6Ci0JdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50ICopOwotCXZpcnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKik7Ci0JdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCAqKTsKLQl2aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQgKik7Ci0JdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50ICopOwotCXZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQgKik7Ci0JdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQgKik7Ci0JdmlydHVhbCB2b2lkIGRyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVudCAqKTsKLQl2aXJ0dWFsIHZvaWQgZHJvcEV2ZW50KFFEcm9wRXZlbnQgKik7Ci0jaWZkZWYgRkVBVF9YSU0KLQl2aXJ0dWFsIHZvaWQgaW1TdGFydEV2ZW50KFFJTUV2ZW50ICopOwotCXZpcnR1YWwgdm9pZCBpbUVuZEV2ZW50KFFJTUV2ZW50ICopOwotCXZpcnR1YWwgdm9pZCBpbUNvbXBvc2VFdmVudChRSU1FdmVudCAqKTsKLSNlbmRpZgotI2lmZGVmIEZFQVRfTVpTQ0hFTUUKLQl2aXJ0dWFsIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCAqKTsKLSNlbmRpZgotCi0JLyogY3Vyc29yIGJsaW5raW5nIHN0dWZmICovCi0JUVRpbWVyIGJsaW5rX3RpbWVyOwotCWxvbmcgYmxpbmtfd2FpdF90aW1lLCBibGlua19vbl90aW1lLCBibGlua19vZmZfdGltZTsKLQotCS8qIHdhaXQgZm9yIGlucHV0ICovCi0JUVRpbWVyCXdhaXRfdGltZXI7Ci0KLSNpZmRlZiBGRUFUX01aU0NIRU1FCi0JaW50CW16c2NoZW1lX3RpbWVyX2lkOwotI2VuZGlmCi0KLXB1YmxpYyBzbG90czoKLQl2b2lkICAgIGJsaW5rX2N1cnNvcigpOwotCXZvaWQJd2FpdF90aW1lb3V0KCk7Ci19OwotCi1jbGFzcyBWaW1NYWluV2luZG93IDogcHVibGljIEtNYWluV2luZG93Ci17Ci0JUV9PQkpFQ1QKLQotcHVibGljOgotCVZpbU1haW5XaW5kb3coY29uc3QgY2hhciAqbmFtZSA9IDBMLCBXRmxhZ3MgZiA9IFdEZXN0cnVjdGl2ZUNsb3NlKTsKLQotCS8qKiBjYWxsZWQgd2hlbiB0aGUgd2lkZ2V0IGNsb3NlcyAqLwotLy8JYm9vbCBjbG9zZShib29sIGFsc29EZWxldGUpOwotCVZpbVdpZGdldAkqdzsKLQlLRWRGaW5kCQkqZmluZGRsZzsKLQlLRWRSZXBsYWNlICAgICAgKnJlcGxkbGc7Ci0JaW50CQloYXZlX3RlYXJvZmY7Ci0JUVRleHRDb2RlYyAgICAgICpjb2RlYzsKLQotcHVibGljIHNsb3RzOgotCXZvaWQgICAgbWVudV9hY3RpdmF0ZWQoaW50IGR4KTsKLQl2b2lkCWNsaXBib2FyZF9zZWxlY3Rpb25fdXBkYXRlKCk7Ci0Jdm9pZAljbGlwYm9hcmRfZGF0YV91cGRhdGUoKTsKLQl2b2lkICAgIHNsb3RTZWFyY2goKTsKLQl2b2lkICAgIHNsb3RGaW5kKCk7Ci0Jdm9pZCAgICBzbG90UmVwbGFjZSgpOwotCXZvaWQgICAgc2xvdFJlcGxhY2VBbGwoKTsKLQl2b2lkICAgIHNob3dBYm91dEFwcGxpY2F0aW9uKCk7Ci0Jdm9pZCAgICBzaG93QWJvdXRLREUoKTsKLQl2b2lkICAgIHNob3dCdWdSZXBvcnQoKTsKLQl2b2lkICAgIHNob3dUaXBPZlRoZURheSgpOwotCXZvaWQgICAgYnVmZmVyc1Rvb2xiYXIoKTsKLQlib29sICAgIGlzTG9ja2VkKCk7Ci0Jdm9pZCAgICBsb2NrKCk7Ci0Jdm9pZCAgICB1bmxvY2soKTsKLQotcHJvdGVjdGVkOgotCXZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFXaGVlbEV2ZW50ICopOwotCXZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQgKmUpOwotCi0jaWYgZGVmaW5lZChGRUFUX1NFU1NJT04pCi0Jdm9pZCBzYXZlR2xvYmFsUHJvcGVydGllcyhLQ29uZmlnICpjb25mKTsKLQl2b2lkIHJlYWRHbG9iYWxQcm9wZXJ0aWVzKEtDb25maWcgKmNvbmYpOwotI2VuZGlmCi0JYm9vbCBxdWVyeUNsb3NlKCk7Ci0JYm9vbCBxdWVyeUV4aXQoKTsKLQlib29sIGxvY2tlZDsKLX07Ci0KLQotY2xhc3MgVmltRGlhbG9nIDogcHVibGljIFFEaWFsb2cKLXsKLQlRX09CSkVDVAotcHVibGljOgotCVZpbURpYWxvZyhpbnQgdHlwZSwJCS8qIHR5cGUgb2YgZGlhbG9nICovCi0JICAgICAgIHVuc2lnbmVkIGNoYXIgKnRpdGxlLAkJLyogdGl0bGUgb2YgZGlhbG9nICovCi0JICAgICAgIHVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UsCS8qIG1lc3NhZ2UgdGV4dCAqLwotCSAgICAgICB1bnNpZ25lZCBjaGFyICpidXR0b25zLAkvKiBuYW1lcyBvZiBidXR0b25zICovCi0JICAgICAgIGludCBkZWZfYnV0LAkJLyogZGVmYXVsdCBidXR0b24gKi8KLQkgICAgICAgY2hhcl91ICp0ZXh0ZmllbGQpOwkJLyogaW5wdXQgdGV4dCAqLwotcHJpdmF0ZToKLQlRU2lnbmFsTWFwcGVyCW1hcHBlcjsKLQlRTGluZUVkaXQJKmVudHJ5OwotCWNoYXJfdQkJKnJldDsKLQlpbnQJCWJ1dE5iOwotCi1wcm90ZWN0ZWQgc2xvdHM6Ci0Jdm9pZCBkb25lKGludCk7Ci19OwotCi0KLS8qCi0gKiBRU2Nyb2xsQmFyICBwb29sCi0gKi8KLXN0cnVjdCBHdWlTY3JvbGxiYXI7Ci0KLWNsYXNzIFNCUG9vbCA6IHB1YmxpYyBRT2JqZWN0Ci17Ci0JUV9PQkpFQ1QKLXB1YmxpYzoKLQlTQlBvb2wodm9pZCk7Ci0Jdm9pZCBjcmVhdGUoR3VpU2Nyb2xsYmFyICogc2IsIGludCBvcmllbnQpOwotCXZvaWQgZGVzdHJveShHdWlTY3JvbGxiYXIgKiBzYik7Ci1wdWJsaWMgc2xvdHM6Ci0Jdm9pZCBzYlVzZWQoaW50IHdobyk7Ci1wcml2YXRlOgotCVFTaWduYWxNYXBwZXIgbWFwcGVyOwotfTsKLQotY2xhc3MgS1ZpbVV0aWxzCi17Ci1wdWJsaWM6Ci0Jc3RhdGljIFFTdHJpbmcgY29udmVydEVuY29kaW5nTmFtZShRU3RyaW5nKTsKLSNpZiBRVF9WRVJTSU9OPDMwMAotCXN0YXRpYyBib29sIGZyb21TdHJpbmcoUUZvbnQqLFFTdHJpbmcpOwotCXN0YXRpYyBRU3RyaW5nIHRvU3RyaW5nKFFGb250Kik7Ci0jZW5kaWYKLX07Ci0KLWV4dGVybiBWaW1NYWluV2luZG93CSp2bXc7Ci1leHRlcm4gU0JQb29sCQkqc2Jwb29sOwotZXh0ZXJuIFFTdHJpbmcJCSphcmdTZXJ2ZXJOYW1lOwotCi0jZGVmaW5lIFFTVFIoeCkJXAotCShoYXNfbWJ5dGUgPyBcCi0JCShlbmNfdXRmOCA/IFwKLQkJCVFTdHJpbmc6OmZyb21VdGY4KChjb25zdCBjaGFyICopeCkgOiBcCi0JCQlRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KChjb25zdCBjaGFyICopeCkpIDogXAotCQlRU3RyaW5nKChjb25zdCBjaGFyICopeCkpCi0KLSNlbmRpZiAvLyBHVUlfS0RFX1dJREdFVApkaWZmIC0tZ2l0IGEvc3JjL2d1aV9rZGVfeDExLmNjIGIvc3JjL2d1aV9rZGVfeDExLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTFkOTlhLi4wMDAwMDAwCi0tLSBhL3NyYy9ndWlfa2RlX3gxMS5jYworKysgL2Rldi9udWxsCkBAIC0xLDE0MzQgKzAsMCBAQAotLyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKLSAqCi0gKiBWSU0gLSBWaSBJTXByb3ZlZAkJYnkgQnJhbSBNb29sZW5hYXIKLSAqCi0gKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KLSAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgotICovCi0KLS8qCi0gKiBQb3J0aW5nIHRvIEtERSgyKSB3YXMgZG9uZSBieQotICoKLSAqICAoQykgMjAwMCBieSBUaG9tYXMgQ2FwcmljZWxsaSA8b3J6ZWxAZnJlZWhhY2tlcnMub3JnPgotICoKLSAqICBQbGVhc2UgdmlzaXQgaHR0cDovL2ZyZWVoYWNrZXJzLm9yZy9rdmltIGZvciBvdGhlciB2aW0tIG9yCi0gKiAga2RlLXJlbGF0ZWQgY29kaW5nLgotICoKLSAqICAkSWQkCi0gKgotICovCi0KLSNpbmNsdWRlIDxxc2Nyb2xsYmFyLmg+Ci0jaW5jbHVkZSA8cWNzdHJpbmcuaD4KLSNpbmNsdWRlIDxxZGF0ZXRpbWUuaD4KLSNpbmNsdWRlIDxxY3Vyc29yLmg+Ci0jaW5jbHVkZSA8cWZvbnRtZXRyaWNzLmg+Ci0jaW5jbHVkZSA8cXBhaW50ZGV2aWNlLmg+Ci0jaW5jbHVkZSA8cWNsaXBib2FyZC5oPgotI2luY2x1ZGUgPHFyZWdleHAuaD4KLSNpbmNsdWRlIDxrYWJvdXRrZGUuaD4KLSNpbmNsdWRlIDxraWNvbmxvYWRlci5oPgotI2luY2x1ZGUgPGtmb250ZGlhbG9nLmg+Ci0jaW5jbHVkZSA8a21lc3NhZ2Vib3guaD4KLSNpbmNsdWRlIDxkY29wY2xpZW50Lmg+Ci0jaW5jbHVkZSA8a3dpbi5oPgotI2luY2x1ZGUgPGttZW51YmFyLmg+Ci0jaW5jbHVkZSA8a2NvbmZpZy5oPgotI2lmIChRVF9WRVJTSU9OPj0zMDApCi0jaW5jbHVkZSA8cW5hbWVzcGFjZS5oPgotI2luY2x1ZGUgPGt0aXAuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHFwb3B1cG1lbnUuaD4KLSNpbmNsdWRlIDxxcGFpbnRlci5oPgotI2luY2x1ZGUgPHF0ZXh0Y29kZWMuaD4KLSNpbmNsdWRlIDxxZm9udG1ldHJpY3MuaD4KLSNpbmNsdWRlIDxxZm9udC5oPgotCi0KLSNpbmNsdWRlICJndWlfa2RlX3dpZC5oIgotCi0KLWV4dGVybiAiQyIgewotI2luY2x1ZGUgInZpbS5oIgotI2luY2x1ZGUgInZlcnNpb24uaCIKLX0KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qCi0gKiBnbG9iYWwgdmFyaWFibGUgZm9yIEtERSwgd2UgY2FuJ3QgcHV0IHRoZW0gaW4gR3VpLCBjYXVzZSB0aGVyZSBhcmUgQysrIHR5cGVzCi0gKi8KLVZpbU1haW5XaW5kb3cJKnZtdyA9IDA7Ci1TQlBvb2wJCSpzYnBvb2wgPSAwOwotUVN0cmluZwkJKmFyZ1NlcnZlck5hbWUgPSAwOwotCi0jaWZkZWYgRkVBVF9NT1VTRVNIQVBFCi0vKiBUaGUgbGFzdCBzZXQgbW91c2UgcG9pbnRlciBzaGFwZSBpcyByZW1lbWJlcmVkLCB0byBiZSB1c2VkIHdoZW4gaXQgZ29lcwotICogZnJvbSBoaWRkZW4gdG8gbm90IGhpZGRlbi4gKi8KLXN0YXRpYyBpbnQgbGFzdF9zaGFwZSA9IDA7Ci0jZW5kaWYKLQotLyoKLSAqIEFyZ3VtZW50cyBoYW5kbGVkIGJ5IEtERSBpbnRlcm5hbGx5LgotICovCi0KLSNpZiBRVF9WRVJTSU9OPj0zMDAKLXN0YXRpYyBpbnQJdGlwID0gMDsgICAgLy8gMSBubyBkaWFsb2csIDAgdXNlIGl0IGlmIGVuYWJsZWQgaW4gY29uZiwKLQkJCSAgICAvLyAyIGZvcmNlIHRoZSB0aXAKLSNlbmRpZgotc3RhdGljIGludAlyZXZlcnNlID0gMDsgLy8gMCBiZyA6IHdoaXRlLCAxIDogYmcgOiBibGFjawotUVN0cmluZwkJKnN0YXJ0Zm9udDsKLVFTaXplCQkqc3RhcnRzaXplOwotc3RhdGljIGludAlndWlfYXJnYyA9IDA7Ci1zdGF0aWMgY2hhcgkqKmd1aV9hcmd2ID0gTlVMTDsKLQotLyoKLSAqIFBhcnNlIHRoZSBHVUkgcmVsYXRlZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLiAgQW55IGFyZ3VtZW50cyB1c2VkIGFyZQotICogZGVsZXRlZCBmcm9tIGFyZ3YsIGFuZCAqYXJnYyBpcyBkZWNyZW1lbnRlZCBhY2NvcmRpbmdseS4gIFRoaXMgaXMgY2FsbGVkCi0gKiB3aGVuIHZpbSBpcyBzdGFydGVkLCB3aGV0aGVyIG9yIG5vdCB0aGUgR1VJIGhhcyBiZWVuIHN0YXJ0ZWQuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3ByZXBhcmUoaW50ICphcmdjLCBjaGFyICoqYXJndikvLyB7e3sKLXsKLSAgICAvLyBjb3B5IGFyZ3MgZm9yIEtERS9RdAotICAgIGd1aV9hcmdjID0gMDsKLQotICAgIC8vIHRoaXMgb25lIGlzIG5vdCByZWFsbHkgZ29vZCBhcyBhbGwgb3B0aW9ucyBhcmUgbm90IGZvciBLREUvUXQgLi4uCi0gICAgZ3VpX2FyZ3YgPSAoY2hhciAqKilsYWxsb2MoKGxvbmdfdSkoKmFyZ2MgKiBzaXplb2YoY2hhciAqKSksIEZBTFNFKTsKLSAgICBpZiAoZ3VpX2FyZ3YgPT0gTlVMTCkKLQlyZXR1cm47Ci0gICAgZ3VpX2FyZ3ZbZ3VpX2FyZ2MrK10gPSBhcmd2WzBdOwotCi0gICAgaW50IGZvdW5kID0gMDsKLSAgICBmb3IgKGludCBpID0gMTsgaSA8ICphcmdjIDsgaSsrKQotICAgIHsKLQlpZiAoZm91bmQgIT0gMikKLQkgICAgZm91bmQgPSAwOwotCWVsc2UKLQl7Ci0JICAgIGZvdW5kID0gMDsKLQkgICAgLy8gcmVtb3ZlIGZyb20gdGhlIGxpc3Qgb2YgYXJndgotCSAgICBpZiAoLS0qYXJnYyA+IGkpCi0JICAgIHsKLQkJbWNoX21lbW1vdmUoJmFyZ3ZbaV0sICZhcmd2W2kgKyAxXSwKLQkJCSgqYXJnYyAtIGkpICogc2l6ZW9mKGNoYXIgKikpOwotCSAgICB9Ci0JICAgIGktLTsKLQkgICAgY29udGludWU7Ci0JfQotCi0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLS1zZXJ2ZXJuYW1lIikgPT0gMCkKLQl7Ci0JICAgIGFyZ1NlcnZlck5hbWUgPSBuZXcgUVN0cmluZyhhcmd2W2krMV0pOyAvLyB0byBnZXQgdGhlIHNlcnZlck5hbWUgbm93Ci0JfQotI2lmIFFUX1ZFUlNJT04+KzMwMAotCWlmIChzdHJjbXAoYXJndltpXSwgIi10aXAiKSA9PSAwICkKLQl7Ci0JICAgIHRpcCA9IDI7Ci0JICAgIGZvdW5kID0gMTsKLQl9Ci0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLW5vdGlwIikgPT0gMCApCi0JewotCSAgICB0aXAgPSAxOwotCSAgICBmb3VuZCA9IDE7Ci0JfQotI2VuZGlmCi0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLWJsYWNrIikgPT0gMCApCi0JewotCSAgICByZXZlcnNlID0gMTsKLQkgICAgZm91bmQgPSAxOwotCX0KLQkvKiByZXBsYWNlZCBieSAtYmxhY2sgKi8KLQkvKgkJaWYgKHN0cmNtcChhcmd2W2ldLCAiLXJ2IikgPT0gMCApCi0JICoJCXsKLQkgcmV2ZXJzZSA9IDE7Ci0JIGZvdW5kID0gMTsKLQkgfSovCi0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLWZvbnQiKSA9PSAwIHx8IHN0cmNtcChhcmd2W2ldLCAiLWZuIikgPT0gMCkKLQl7Ci0JICAgIHN0YXJ0Zm9udCA9IG5ldyBRU3RyaW5nKGFyZ3ZbaSsxXSk7Ci0JICAgIGZvdW5kID0gMjsKLQl9Ci0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLWdlb21ldHJ5IikgPT0gMCB8fCBzdHJjbXAoYXJndltpXSwgIi1nZW9tIikgPT0gMCkKLQl7Ci0JICAgIGZvdW5kID0gMjsKLQkgICAgUVN0cmluZyB0ZXh0KGFyZ3ZbaSArIDFdKTsKLQkgICAgUVN0cmluZ0xpc3QgbGlzdCA9IFFTdHJpbmdMaXN0OjpzcGxpdChRQ2hhcigneCcpLCB0ZXh0KTsKLQkgICAgc3RhcnRzaXplID0gbmV3IFFTaXplKGxpc3RbMF0udG9JbnQoKSwgbGlzdFsxXS50b0ludCgpKTsKLQl9Ci0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLWRpc3BsYXkiKSA9PSAwKSAvL1hYWDogdGhpcyBkb2VzIG5vdCB3b3JrLAotCSAgICAvLyB0b28gbWFueSAtZGlzcGxheSBvcHRpb25zIGluIG1haW4uYyAhCi0JICAgIC8vIGFzayBCcmFtIC4uLgotCSAgICB7Ci0JCWd1aV9hcmd2W2d1aV9hcmdjKytdID0gc3RyZHVwKCItLWRpc3BsYXkiKTsKLQkJZ3VpX2FyZ3ZbZ3VpX2FyZ2MrK10gPSBhcmd2W2krMV07Ci0JCWZvdW5kID0gMDsKLQkgICAgfQotCWlmIChzdHJjbXAoYXJndltpXSwgIi0tZGlzcGxheSIpID09IDAgKQotCXsKLQkgICAgZ3VpX2FyZ3ZbZ3VpX2FyZ2MrK10gPSBhcmd2W2ldOwotCSAgICBndWlfYXJndltndWlfYXJnYysrXSA9IGFyZ3ZbaSsxXTsKLQkgICAgZm91bmQgPSAyOwotCX0KLQkvL0tERS9RdCBvcHRpb25zIHdpdGggbm8gYXJncwotCWlmIChzdHJjbXAoYXJndltpXSwgIi0taGVscC1rZGUiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1oZWxwLXF0IikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0taGVscC1hbGwiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1yZXZlcnNlIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tYXV0aG9yIikgPT0gMAotCQkvLwl8fCBzdHJjbXAoYXJndltpXSwgIi0tdmVyc2lvbiIpID09IDAgLy9kaXNhYmxlZCB3ZSBuZWVkIHRoZXNlIGZvciBrY212aW0KLQkJLy8JfHwgc3RyY21wKGFyZ3ZbaV0sICItdiIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWxpY2Vuc2UiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1jbWFwIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tbm9ncmFiIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tZG9ncmFiIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tc3luYyIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLW5veGltIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tbm9jcmFzaGhhbmRsZXIiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS13YWl0Zm9yd20iKSA9PSAwCi0JICAgKQotCXsKLQkgICAgZ3VpX2FyZ3ZbZ3VpX2FyZ2MrK10gPSBhcmd2W2ldOwotCSAgICBmb3VuZCA9IDE7Ci0JfQotCS8vdGhpcyBvdXRwdXRzIEtERSBhbmQgVmltIHZlcnNpb25zIDopCi0JaWYgKHN0cmNtcChhcmd2W2ldLCAiLS12ZXJzaW9uIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi12IikgPT0gMCkKLQl7Ci0JICAgIGd1aV9hcmd2W2d1aV9hcmdjKytdID0gYXJndltpXTsKLQl9Ci0KLQotCS8vIEtERS9RdCBvcHRpb25zIHdpdGggb25lIGFyZwotCWlmIChzdHJjbXAoYXJndltpXSwgIi0tc2Vzc2lvbiIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLW5jb2xzIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tYmciKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1iYWNrZ3JvdW5kIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tZmciKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1mb3JlZ3JvdW5kIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tYnRuIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tbmFtZSIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLXRpdGxlIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0taW5wdXRzdHlsZSIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWltIikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tY2FwdGlvbiIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWljb24iKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1taW5paWNvbiIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWNvbmZpZyIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWRjb3BzZXJ2ZXIiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLS1zdHlsZSIpID09IDAKLQkJfHwgc3RyY21wKGFyZ3ZbaV0sICItLWdlb21ldHJ5IikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi0tc21rZXkiKSA9PSAwCi0JCXx8IHN0cmNtcChhcmd2W2ldLCAiLXNta2V5IikgPT0gMAotCQl8fCBzdHJjbXAoYXJndltpXSwgIi1zZXNzaW9uIikgPT0gMAotCSAgICkKLQl7Ci0JICAgIGd1aV9hcmd2W2d1aV9hcmdjKytdID0gYXJndltpXTsKLQkgICAgZ3VpX2FyZ3ZbZ3VpX2FyZ2MrK10gPSBhcmd2W2kgKyAxXTsKLQkgICAgZm91bmQgPSAyOwotCX0KLQotCS8vIHJlbW92ZSBmcm9tIHRoZSBsaXN0IG9mIGFyZ3YKLQlpZiAoZm91bmQgPj0gMSAmJiAtLSphcmdjID4gaSkKLQl7Ci0JICAgIG1jaF9tZW1tb3ZlKCZhcmd2W2ldLCAmYXJndltpICsgMV0sICgqYXJnYyAtIGkpICogc2l6ZW9mKGNoYXIgKikpOwotCSAgICBpLS07Ci0JfQotICAgIH0KLSAgICBLQ21kTGluZUFyZ3M6OmluaXQoZ3VpX2FyZ2MsIGd1aV9hcmd2LCBhcmd2WzBdLCBJMThOX05PT1AoIktWaW0iKSwKLQkJCSAgICAgIEkxOE5fTk9PUCgiVmltIGluc2lkZSBLREUiKSwgVklNX1ZFUlNJT05fU0hPUlQpOwotfS8vIH19fQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRm9jdXMgaGFuZGxlcnM6Ci0gKi8KLQotLyoKLSAqIEluaXRpYWxpc2VzIHRpbWUgaW50ZXJ2YWxzIGZvciB0aGUgY3Vyc29yIGJsaW5raW5nCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3NldF9ibGlua2luZyhsb25nIHdhaXR0aW1lLCBsb25nIG9uLCBsb25nIG9mZikvL3t7ewotewotICAgIGd1aS53LT5zZXRfYmxpbmtfdGltZSh3YWl0dGltZSwgb24sIG9mZik7Ci19Ly99fX0KLQotLyoKLSAqIFN0b3AgdGhlIGN1cnNvciBibGlua2luZy4gIFNob3cgdGhlIGN1cnNvciBpZiBpdCB3YXNuJ3Qgc2hvd24uCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3N0b3BfYmxpbmsoKS8ve3t7Ci17Ci0gICAgZ3VpLnctPnN0b3BfY3Vyc29yX2JsaW5raW5nKCk7Ci19Ly99fX0KLQotLyoKLSAqIFN0YXJ0IHRoZSBjdXJzb3IgYmxpbmtpbmcuICBJZiBpdCB3YXMgYWxyZWFkeSBibGlua2luZywgdGhpcyByZXN0YXJ0cyB0aGUKLSAqIHdhaXRpbmcgdGltZSBhbmQgc2hvd3MgdGhlIGN1cnNvci4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfc3RhcnRfYmxpbmsoKS8ve3t7Ci17Ci0gICAgZ3VpLnctPnN0YXJ0X2N1cnNvcl9ibGlua2luZygpOwotfS8vfX19Ci0KLSNpZmRlZiBGRUFUX01aU0NIRU1FCi0gICAgdm9pZAotbXpzY2hlbWVfa2RlX3N0YXJ0X3RpbWVyKCkvL3t7ewotewotICAgIGd1aS53LT5lbmFibGVfbXpzY2hlbWVfdGhyZWFkcygpOwotfS8vfX19Ci0gICAgdm9pZAotbXpzY2hlbWVfa2RlX3N0b3BfdGltZXIoKS8ve3t7Ci17Ci0gICAgZ3VpLnctPmRpc2FibGVfbXpzY2hlbWVfdGhyZWFkcygpOwotfS8vfX19Ci0jZW5kaWYKLQotLyoKLSAqIENoZWNrIGlmIHRoZSBHVUkgY2FuIGJlIHN0YXJ0ZWQuICBDYWxsZWQgYmVmb3JlIGd2aW1yYyBpcyBzb3VyY2VkLgotICogUmV0dXJuIE9LIG9yIEZBSUwuCi0gKi8KLSAgICBpbnQKLWd1aV9tY2hfaW5pdF9jaGVjayh2b2lkKS8ve3t7Ci17Ci0gICAgZ3VpLmRweSA9IHF0X3hkaXNwbGF5KCk7Ci0gICAgcmV0dXJuIE9LOwotfS8vfX19Ci0KLS8qCi0gKiBJbml0aWFsaXNlIHRoZSBYIEdVSS4gIENyZWF0ZSBhbGwgdGhlIHdpbmRvd3MsIHNldCB1cCBhbGwgdGhlIGNhbGwtYmFja3MgZXRjLgotICogUmV0dXJucyBPSyBmb3Igc3VjY2VzcywgRkFJTCB3aGVuIHRoZSBHVUkgY2FuJ3QgYmUgc3RhcnRlZC4KLSAqLwotICAgIGludAotZ3VpX21jaF9pbml0KCkvL3t7ewotewotICAgICh2b2lkKSBuZXcgS0FwcGxpY2F0aW9uKCk7Ci0gICAgS0FwcGxpY2F0aW9uOjprQXBwbGljYXRpb24oKS0+ZGNvcENsaWVudCgpLT5yZWdpc3RlckFzKAotCQkJCSBLQXBwbGljYXRpb246OmtBcHBsaWNhdGlvbigpLT5uYW1lKCksIGZhbHNlKTsKLSAgICAvLyAgICBkYmYoIiVzICVzIiwgS0dsb2JhbDo6bG9jYWxlKCktPmxhbmd1YWdlKCkubGF0aW4xKCksIEtMb2NhbGU6OmRlZmF1bHRMYW5ndWFnZSgpLmxhdGluMSgpKTsKLQotICAgIHZtdyA9IG5ldyBWaW1NYWluV2luZG93KCJLVmltIiwgMCk7Ci0gICAgdm13LT5zZXRGcmFtZUJvcmRlcldpZHRoKDApOwotICAgIGthcHAtPnNldE1haW5XaWRnZXQodm13KTsKLSAgICBrYXBwLT5zZXRUb3BXaWRnZXQodm13KTsKLQotICAgIHNicG9vbCA9IG5ldyBTQlBvb2w7Ci0KLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICB2bXctPmNvbm5lY3Qoa2FwcC0+Y2xpcGJvYXJkKCksIFNJR05BTChzZWxlY3Rpb25DaGFuZ2VkKCkpLAotCQkJCSAgICAgdm13LCBTTE9UKGNsaXBib2FyZF9zZWxlY3Rpb25fdXBkYXRlKCkpKTsKLSNlbmRpZgotICAgIHZtdy0+Y29ubmVjdChrYXBwLT5jbGlwYm9hcmQoKSwgU0lHTkFMKGRhdGFDaGFuZ2VkKCkpLAotCQkJCQkgIHZtdywgU0xPVChjbGlwYm9hcmRfZGF0YV91cGRhdGUoKSkpOwotICAgIGNsaXBfbG9zZV9zZWxlY3Rpb24oJmNsaXBfcGx1cyk7Ci0gICAgY2xpcF9sb3NlX3NlbGVjdGlvbigmY2xpcF9zdGFyKTsKLQotICAgIGd1aS5pbl9mb2N1cyA9IEZBTFNFOyAvLyB3aWxsIGJlIHVwZGF0ZWQKLQotICAgIGlmIChyZXZlcnNlKQotICAgIHsKLQlndWkuZGVmX25vcm1fcGl4ZWwgPSBndWlfZ2V0X2NvbG9yKChjaGFyX3UgKikiV2hpdGUiKTsKLQlndWkuZGVmX2JhY2tfcGl4ZWwgPSBndWlfZ2V0X2NvbG9yKChjaGFyX3UgKikiQmxhY2siKTsKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLQlndWkudy0+c2V0RXJhc2VDb2xvcihRQ29sb3IoUXQ6OmJsYWNrKSk7Ci0jZWxzZQotCWd1aS53LT5zZXRCYWNrZ3JvdW5kQ29sb3IoUUNvbG9yKFF0OjpibGFjaykpOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JZ3VpLmRlZl9ub3JtX3BpeGVsID0gZ3VpX2dldF9jb2xvcigoY2hhcl91ICopIkJsYWNrIik7Ci0JZ3VpLmRlZl9iYWNrX3BpeGVsID0gZ3VpX2dldF9jb2xvcigoY2hhcl91ICopIldoaXRlIik7Ci0jaWYgUVRfVkVSU0lPTj49MzAwCi0JZ3VpLnctPnNldEVyYXNlQ29sb3IoUUNvbG9yKFF0Ojp3aGl0ZSkpOwotI2Vsc2UKLQlndWkudy0+c2V0QmFja2dyb3VuZENvbG9yKFFDb2xvcihRdDo6d2hpdGUpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIGd1aS5ub3JtX3BpeGVsID0gZ3VpLmRlZl9ub3JtX3BpeGVsOwotICAgIGd1aS5iYWNrX3BpeGVsID0gZ3VpLmRlZl9iYWNrX3BpeGVsOwotCi0gICAgZ3VpLmJvcmRlcl93aWR0aCAgPSAxOwotICAgIGd1aS5ib3JkZXJfb2Zmc2V0ID0gMTsvL2d1aS5ib3JkZXJfd2lkdGg7Ci0gICAgZ3VpLnNjcm9sbGJhcl93aWR0aCA9IFNCX0RFRkFVTFRfV0lEVEg7Ci0gICAgZ3VpLnNjcm9sbGJhcl9oZWlnaHQgPSBTQl9ERUZBVUxUX1dJRFRIOwotCi0gICAgLy9ndWkubWVudV9oZWlnaHQgPSB2bXctPm1lbnVCYXIoKS0+aGVpZ2h0KCkrMTsKLSAgICAvL2d1aS50b29sYmFyX2hlaWdodCA9IHZtdy0+dG9vbEJhcigpLT5oZWlnaHQoKTsKLQotICAgIHJldHVybiBPSzsKLX0vL319fQotCi0KLS8qCi0gKiBDYWxsZWQgd2hlbiB0aGUgZm9yZWdyb3VuZCBvciBiYWNrZ3JvdW5kIGNvbG9yIGhhcyBiZWVuIGNoYW5nZWQuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX25ld19jb2xvcnMoKS8ve3t7Ci17Ci0gICAgUUNvbG9yIHJnYjsKLSAgICByZ2Iuc2V0UmdiKGd1aS5iYWNrX3BpeGVsKTsKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICBndWkudy0+c2V0RXJhc2VDb2xvcihyZ2IpOwotI2Vsc2UKLSAgICBndWkudy0+c2V0QmFja2dyb3VuZENvbG9yKHJnYik7Ci0jZW5kaWYKLX0vL319fQotCi0vKgotICogT3BlbiB0aGUgR1VJIHdpbmRvdyB3aGljaCB3YXMgY3JlYXRlZCBieSBhIGNhbGwgdG8gZ3VpX21jaF9pbml0KCkuCi0gKi8KLSAgICBpbnQKLWd1aV9tY2hfb3BlbigpLy97e3sKLXsKLSAgICBndWkuZHB5ID0gcXRfeGRpc3BsYXkoKTsKLSAgICBzZXRfbm9ybWFsX2NvbG9ycygpOwotCi0gICAgLyogQ2hlY2sgdGhhdCBub25lIG9mIHRoZSBjb2xvcnMgYXJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yICovCi0gICAgZ3VpX2NoZWNrX2NvbG9ycygpOwotCi0gICAgLyogR2V0IHRoZSBjb2xvcnMgZm9yIHRoZSBoaWdobGlnaHQgZ3JvdXBzIChndWlfY2hlY2tfY29sb3JzKCkgbWlnaHQgaGF2ZQotICAgICAqIGNoYW5nZWQgdGhlbSkuCi0gICAgICovCi0gICAgaGlnaGxpZ2h0X2d1aV9zdGFydGVkKCk7ICAgIC8qIHJlLWluaXQgY29sb3JzIGFuZCBmb250cyAqLwotI2lmZGVmIEZFQVRfTUVOVQotICAgIHZtdy0+dy0+bWVudSA9IG5ldyBRUG9wdXBNZW51KHZtdyk7Ci0KLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICB2bXctPnctPm1lbnUtPmluc2VydEl0ZW0oU21hbGxJY29uKCJrdGlwIiksIGkxOG4oIiZUaXAgb2YgdGhlIGRheS4uLiIpLAotCQkJCQkJdm13LCBTTE9UKHNob3dUaXBPZlRoZURheSgpKSk7Ci0gICAgdm13LT53LT5tZW51LT5pbnNlcnRTZXBhcmF0b3IoKTsKLSNlbmRpZgotICAgIGlmICh2bXctPmhhdmVfdGVhcm9mZikKLQl2bXctPnctPm1lbnUtPmluc2VydFRlYXJPZmZIYW5kbGUoMCwgMCk7Ci0gICAgdm13LT53LT5tZW51LT5pbnNlcnRJdGVtKGkxOG4oIiZSZXBvcnQgQnVnIC4uLiIpLAotCQkJCQkJICB2bXcsIFNMT1Qoc2hvd0J1Z1JlcG9ydCgpKSk7Ci0gICAgdm13LT53LT5tZW51LT5pbnNlcnRTZXBhcmF0b3IoKTsKLSAgICB2bXctPnctPm1lbnUtPmluc2VydEl0ZW0oU21hbGxJY29uKCJrdmltIiksIGkxOG4oIiZBYm91dCBLVmltLi4uIiksCi0JCQkJCSAgIHZtdywgU0xPVChzaG93QWJvdXRBcHBsaWNhdGlvbigpKSk7Ci0gICAgdm13LT53LT5tZW51LT5pbnNlcnRJdGVtKFNtYWxsSWNvbigiYWJvdXRfa2RlIiksIGkxOG4oIkFib3V0ICZLREUuLi4iKSwKLQkJCQkJCSAgIHZtdywgU0xPVChzaG93QWJvdXRLREUoKSkpOwotICAgIHZtdy0+bWVudUJhcigpLT5pbnNlcnRJdGVtKCImS1ZpbSIsIHZtdy0+dy0+bWVudSk7Ci0jZW5kaWYKLSAgICBpZiAoc3RhcnRmb250ICE9IE5VTEwpCi0JZ3VpX21jaF9pbml0X2ZvbnQoKGNoYXJfdSopc3RhcnRmb250LT5sYXRpbjEoKSwgRkFMU0UpOwotCi0gICAgaWYgKHN0YXJ0c2l6ZSAhPSBOVUxMKQotCXZtdy0+cmVzaXplKHN0YXJ0c2l6ZS0+d2lkdGgoKSwgc3RhcnRzaXplLT5oZWlnaHQoKSk7Ci0KLSAgICBndWlfbWNoX3VwZGF0ZV9jb2RlYygpOwotCi0gICAgaWYgKGthcHAtPmlzUmVzdG9yZWQoKSkKLQlpZiAoS01haW5XaW5kb3c6OmNhbkJlUmVzdG9yZWQoMSkpCi0JICAgIHZtdy0+cmVzdG9yZSgxKTsKLQotICAgIHZtdy0+c2hvdygpOwotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIGlmICh0aXAgPT0gMikKLQlLVGlwRGlhbG9nOjpzaG93VGlwKHZtdywgUVN0cmluZzo6bnVsbCwgdHJ1ZSk7Ci0gICAgZWxzZSBpZiAodGlwID09IDApCi0JS1RpcERpYWxvZzo6c2hvd1RpcCh2bXcpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gT0s7Ci19Ly99fX0KLQotICAgIHZvaWQKLWd1aV9tY2hfZXhpdChpbnQgcmMpLy97e3sKLXsKLSAgICBrYXBwLT5xdWl0KCk7Ci19Ly99fX0KLQotLyoKLSAqIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgd2luZG93LgotICovCi0gICAgaW50Ci1ndWlfbWNoX2dldF93aW5wb3MoaW50ICp4LCBpbnQgKnkpLy97e3sKLXsKLSAgICAqeCA9IHZtdy0+eCgpOwotICAgICp5ID0gdm13LT55KCk7Ci0gICAgcmV0dXJuIE9LOwotfS8vfX19Ci0KLS8qCi0gKiBTZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHdpbmRvdyB0byB0aGUgZ2l2ZW4KLSAqIGNvb3JkaW5hdGVzLgotICovCi0gICAgdm9pZAotZ3VpX21jaF9zZXRfd2lucG9zKGludCB4LCBpbnQgeSkvL3t7ewotewotICAgIHZtdy0+bW92ZSh4LCB5KTsKLX0vL319fQotCi0vKgotICogU2V0IHRoZSB3aW5kb3dzIHNpemUuCi0gKiAtPnJlc2l6ZSBWaW1XaWRnZXQKLSAqIC0+cmVzaXplIHZtdyAoYmxvY2sgYW55IGV2ZW50cyBnZW5lcmF0ZWQgZnJvbSBoZXJlKQotICovCi0gICAgdm9pZAotZ3VpX21jaF9zZXRfc2hlbGxzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCwvL3t7ewotCQlpbnQgbWluX3dpZHRoLCBpbnQgbWluX2hlaWdodCwKLQkJaW50IGJhc2Vfd2lkdGgsIGludCBiYXNlX2hlaWdodCkKLXsKLSAgICAvL3Jlc2l6ZSBWaW1XaWRnZXQKLSAgICB2bXctPnctPnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLQotICAgIC8vcmVzaXplIHZtdwotICAgIGludCB2aGVpZ2h0LCB2d2lkdGg7Ci0gICAgdmhlaWdodCA9IGhlaWdodDsKLSAgICB2d2lkdGggPSB3aWR0aDsKLQotICAgIGlmIChndWkud2hpY2hfc2Nyb2xsYmFyc1tTQkFSX0xFRlRdKQotCXZ3aWR0aCArPSBndWkuc2Nyb2xsYmFyX3dpZHRoOwotICAgIGlmIChndWkud2hpY2hfc2Nyb2xsYmFyc1tTQkFSX1JJR0hUXSkKLQl2d2lkdGggKz0gZ3VpLnNjcm9sbGJhcl93aWR0aDsKLSAgICBpZiAoZ3VpLndoaWNoX3Njcm9sbGJhcnNbU0JBUl9CT1RUT01dKQotCXZoZWlnaHQgKz0gZ3VpLnNjcm9sbGJhcl9oZWlnaHQ7Ci0KLSAgICBpZiAodm13LT5tZW51QmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+bWVudUJhcigpLT5pc0VuYWJsZWQoKQotI2lmIFFUX1ZFUlNJT04+PTMwMAotCSAgICAmJiAhdm13LT5tZW51QmFyKCktPmlzVG9wTGV2ZWxNZW51KCkKLSNlbmRpZgotICAgICAgICkKLQl2aGVpZ2h0ICs9IHZtdy0+bWVudUJhcigpLT5oZWlnaHQoKTsKLSNpZmRlZiBGRUFUX1RPT0xCQVIKLSAgICBpZiAodm13LT50b29sQmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+dG9vbEJhcigpLT5pc0VuYWJsZWQoKQotCSAgICAmJiAodm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpUb3AKLQkJfHwgdm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpCb3R0b20pKQotCXZoZWlnaHQgKz0gdm13LT50b29sQmFyKCktPmhlaWdodCgpOwotCi0gICAgaWYgKHZtdy0+dG9vbEJhcigpLT5pc1Zpc2libGUoKSAmJiB2bXctPnRvb2xCYXIoKS0+aXNFbmFibGVkKCkKLQkgICAgJiYgKHZtdy0+dG9vbEJhcigpLT5iYXJQb3MoKSA9PSBLVG9vbEJhcjo6TGVmdAotCQl8fCB2bXctPnRvb2xCYXIoKS0+YmFyUG9zKCkgPT0gS1Rvb2xCYXI6OlJpZ2h0KSkKLQl2d2lkdGggKz0gdm13LT50b29sQmFyKCktPndpZHRoKCk7Ci0jZW5kaWYKLSAgICB2bXctPmxvY2soKTsKLSAgICB2bXctPnJlc2l6ZSh2d2lkdGgsIHZoZWlnaHQpOwotICAgIGd1aV9tY2hfdXBkYXRlKCk7Ci0gICAgLy9zaXplIHNob3VsZCBiZSBuZWFybHkgcGVyZmVjdCwgdXBkYXRlIGJhc2VTaXplIGFuZCBzaXplSW5jcmVtZW50Ci0gICAgdm13LT5zZXRCYXNlU2l6ZShiYXNlX3dpZHRoLCB2bXctPm1lbnVCYXIoKS0+aGVpZ2h0KCkgKyAxCi0JCQkgICAgKyB2bXctPnRvb2xCYXIoKS0+aGVpZ2h0KCkgKyBndWkuY2hhcl9oZWlnaHQgKiAyKTsKLSAgICB2bXctPnNldFNpemVJbmNyZW1lbnQoKCggaW50ICkoZ3VpLmNoYXJfd2lkdGggLyAyKSAqIDIpLCBndWkuY2hhcl9oZWlnaHQpOwotICAgIHZtdy0+dW5sb2NrKCk7Ci19Ly99fX0KLQotCi0vKgotICogVGhlIHNjcmVlbiBzaXplIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSBpbml0aWFsIHdpbmRvdyBkb2Vzbid0IGdldCBiaWdnZXIKLSAqIHRoZW4gdGhlIHNjcmVlbi4gIFRoaXMgc3VidHJhY3RzIHNvbWUgcm9vbSBmb3IgbWVudWJhciwgdG9vbGJhciBhbmQgd2luZG93Ci0gKiBkZWNvcmF0aW9ucy4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfZ2V0X3NjcmVlbl9kaW1lbnNpb25zKGludCAqc2NyZWVuX3csIGludCAqc2NyZWVuX2gpLy97e3sKLXsKLSAgICAqc2NyZWVuX3cgPSBrYXBwLT5kZXNrdG9wKCktPndpZHRoKCk7Ci0gICAgKnNjcmVlbl9oID0ga2FwcC0+ZGVza3RvcCgpLT5oZWlnaHQoKTsKLX0vL319fQotCi0jaWYgZGVmaW5lZChGRUFUX01FTlUpIHx8IGRlZmluZWQoUFJPVE8pCi0gICAgdm9pZAotZ3VpX21jaF9lbmFibGVfbWVudShpbnQgc2hvd2l0KS8ve3t7Ci17Ci0gICAgaWYgKHNob3dpdCkKLQl2bXctPm1lbnVCYXIoKS0+c2hvdygpOwotICAgIGVsc2UKLQl2bXctPm1lbnVCYXIoKS0+aGlkZSgpOwotICAgIHZtdy0+cmVzaXplKHZtdy0+d2lkdGgoKSwgdm13LT5oZWlnaHQoKSk7Ci19Ly99fX0KLSNlbmRpZgotCi0KLSNpZiBkZWZpbmVkKEZFQVRfVE9PTEJBUikgfHwgZGVmaW5lZChQUk9UTykKLSAgICB2b2lkCi1ndWlfbWNoX3Nob3dfdG9vbGJhcihpbnQgc2hvd2l0KS8ve3t7Ci17Ci0gICAgaWYgKHNob3dpdCkKLQl2bXctPnRvb2xCYXIoKS0+c2hvdygpOwotICAgIGVsc2UKLQl2bXctPnRvb2xCYXIoKS0+aGlkZSgpOwotICAgIHZtdy0+cmVzaXplKHZtdy0+d2lkdGgoKSwgdm13LT5oZWlnaHQoKSk7Ci19Ly99fX0KLSNlbmRpZgotCi0vKgotICogUHV0IHVwIGEgZm9udCBkaWFsb2cgYW5kIHJldHVybiB0aGUgc2VsZWN0ZWQgZm9udCBuYW1lIGluIGFsbG9jYXRlZCBtZW1vcnkuCi0gKiAib2xkdmFsIiBpcyB0aGUgcHJldmlvdXMgdmFsdWUuCi0gKiBSZXR1cm4gTlVMTCB3aGVuIGNhbmNlbGxlZC4KLSAqLwotCi0gICAgY2hhcl91ICoKLWd1aV9tY2hfZm9udF9kaWFsb2coY2hhcl91ICpvbGR2YWwpLy97e3sKLXsKLSAgICBRRm9udCBteUZvbnQodm13LT53LT5mb250KCkpOwotICAgIGlmIChndWkuZm9udG5hbWUpCi0JZ3VpLmZvbnRuYW1lID0gTlVMTDsKLQotICAgIGludCByZXN1bHQgPSBLRm9udERpYWxvZzo6Z2V0Rm9udChteUZvbnQsIHRydWUpOwotICAgIGlmIChyZXN1bHQgIT0gS0ZvbnREaWFsb2c6OkFjY2VwdGVkKQotCXJldHVybiBOVUxMOwotCi0gICAgLy8JbXlGb250LnNldEZpeGVkUGl0Y2godHJ1ZSk7Ci0jaWYgUVRfVkVSU0lPTj49MzAwCi0gICAgUVN0cmluZyBuID0gbXlGb250LnRvU3RyaW5nKCk7Ci0jZWxzZQotICAgIFFTdHJpbmcgbiA9IEtWaW1VdGlsczo6dG9TdHJpbmcoJm15Rm9udCk7Ci0jZW5kaWYKLSAgICBuLnJlcGxhY2UoUVJlZ0V4cCgiLCIpLCAiLyIpOwotICAgIGd1aS5mb250bmFtZSA9IChjaGFyX3UgKilzdHJkdXAoKGNvbnN0IGNoYXIgKiluKTsKLSAgICBuLnJlcGxhY2UoUVJlZ0V4cCgiICIpLCAiXFwgIik7Ci0gICAgbiA9IFFTdHJpbmcoIlRvIHNldCB0aGlzIGZvbnQgYXMgeW91ciBkZWZhdWx0IGZvbnQgZm9yIEtWaW0sIGVkaXQgeW91ciB+Ly5ndmltcmMgZmlsZSBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgOiBcbmlmIGhhcyhcImd1aV9rZGVcIilcbnNldCBndWlmb250PSIpK24rUVN0cmluZygiXG5lbmRpZiIpOy8vIFxuIE9SIFxuIHVzZSB0aGUgY29udHJvbCBjZW50ZXIgb2YgS0RFIGFuZCBjaG9vc2UgdGhlIGNvcnJlY3QgZml4ZWQgZm9udCIpOwotCi0gICAgLy9kaXNwbGF5IGEgbWVzc2FnZSBib3ggd2hpY2ggZXhwbGFpbnMgaG93IHRvIHNhdmUgeW91ciBmb250IHNldHRpbmdzCi0gICAgS01lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKHZtdywgbiwgIkZvbnQgU2VsZWN0aW9uIiwgImt2aW1zZWxlY3Rmb250Iik7Ci0KLSAgICByZXR1cm4gdmltX3N0cnNhdmUoZ3VpLmZvbnRuYW1lKTsKLX0vL319fQotCi0vKgotICogSW5pdGlhbGlzZSB2aW0gdG8gdXNlIHRoZSBmb250IHdpdGggdGhlIGdpdmVuIG5hbWUuCi0gKiBSZXR1cm4gRkFJTCBpZiB0aGUgZm9udCBjb3VsZCBub3QgYmUgbG9hZGVkLCBPSyBvdGhlcndpc2UuCi0gKi8KLSAgICBpbnQKLWd1aV9tY2hfaW5pdF9mb250KGNoYXJfdSAqIGZvbnRfbmFtZSwgaW50IGZvbnRzZXQpLy97e3sKLXsKLSAgICBRU3RyaW5nIGZvbnRuYW1lOwotICAgIEd1aUZvbnQgZm9udCA9IE5VTEw7Ci0KLSAgICBpZiAoZm9udF9uYW1lID09IE5VTEwpCi0gICAgewotI2lmIDAKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLQlLQ29uZmlnICpiYXNlID0gS0dsb2JhbDo6Y29uZmlnKCk7Ci0jZWxzZQotCUtDb25maWdCYXNlICpiYXNlID0gS0dsb2JhbDo6Y29uZmlnKCk7Ci0jZW5kaWYKLQliYXNlLT5zZXRHcm91cCgiR2VuZXJhbCIpOwotCWlmICghYmFzZS0+aGFzS2V5KCJmaXhlZCIpKQotCXsKLQkgICAgS01lc3NhZ2VCb3g6OmVycm9yKEtBcHBsaWNhdGlvbjo6a0FwcGxpY2F0aW9uKCktPm1haW5XaWRnZXQoKSwiQ2Fubm90IGxvYWQgZGVmYXVsdCBmaXhlZCBmb250XG5cbkNvbmZpZ3VyZSBmb250cyBpbiBLREUgQ29udHJvbCBDZW50ZXIuXG4oSnVzdCBjbGljayAnQ2hvb3NlLi4uJywgJ09LJyBhbmQgdGhlbiAnQXBwbHknKSIpOwotCSAgICByZXR1cm4gRkFJTDsKLQl9Ci0jaWYgUVRfVkVSU0lPTj49MzAwCi0JUVN0cmluZyBmID0gYmFzZS0+cmVhZEVudHJ5KCJmaXhlZCIpOwotI2Vsc2UKLQlRRm9udCBmdCA9IGJhc2UtPnJlYWRGb250RW50cnkoImZpeGVkIiwgTlVMTCk7Ci0JUVN0cmluZyBmID0gS1ZpbVV0aWxzOjp0b1N0cmluZygmZnQpOwotI2VuZGlmCi0JZm9udF9uYW1lID0gKGNoYXJfdSopc3RyZHVwKGYubGF0aW4xKCkpOyAvL2xhdGluMSA/Ci0jZWxzZQotCWZvbnRfbmFtZSA9IChjaGFyX3UqKXN0cmR1cCgibWlzYy1maXhlZC8xMC8tMS81LzUwLzAvMC8wLzEvMCIpOwotI2VuZGlmCi0gICAgfQotICAgIGZvbnRuYW1lID0gKGNvbnN0IGNoYXIgKilmb250X25hbWU7Ci0gICAgLyoJZm9udG5hbWUucmVwbGFjZShRUmVnRXhwKCIvIiksICIsIik7Ci0JZm9udCA9IG5ldyBRRm9udCgpOwotCWZvbnQtPmZyb21TdHJpbmcoIGZvbnRuYW1lICk7Ci0JKi8KLSNpZmRlZiBGRUFUX1hGT05UU0VUCi0gICAgaWYgKGZvbnRzZXQpCi0JZm9udCA9IGd1aV9tY2hfZ2V0X2ZvbnRzZXQoZm9udF9uYW1lLCBUUlVFLCBUUlVFKTsKLSAgICBpZiAoZm9udCA9PSBOVUxMKQotI2VuZGlmCi0JZm9udCA9IGd1aV9tY2hfZ2V0X2ZvbnQoZm9udF9uYW1lLCBGQUxTRSk7Ci0KLSAgICBpZiAoZm9udCA9PSBOVUxMKQotCXJldHVybiBGQUlMOwotICAgIGlmIChmb250bmFtZS5jb250YWlucygnKicpICYmIGZvbnRuYW1lLmNvbnRhaW5zKCctJykpCi0JcmV0dXJuIEZBSUw7Ci0KLSAgICBndWlfbWNoX2ZyZWVfZm9udChndWkubm9ybV9mb250KTsKLSNpZmRlZiBGRUFUX1hGT05UU0VUCi0gICAgZ3VpX21jaF9mcmVlX2ZvbnRzZXQoZ3VpLmZvbnRzZXQpOwotICAgIGd1aS5mb250c2V0ID0gTk9GT05UU0VUOwotICAgIGlmIChmb250c2V0KQotICAgIHsKLQlndWkuZm9udHNldCA9IGZvbnQ7Ci0JZ3VpLm5vcm1fZm9udCA9IE5PRk9OVDsKLSAgICB9Ci0gICAgZWxzZQotI2VuZGlmCi0JZ3VpLm5vcm1fZm9udCA9IGZvbnQ7Ci0KLSAgICAvKiBDb21wdXRlIHRoZSB3aWR0aCBvZiB0aGUgY2hhcmFjdGVyIGNlbGwuICBTb21lIGZvbnRzIGluY2x1ZGUKLSAgICAgKiBkb3VibGUtd2lkdGggY2hhcmFjdGVycy4gIFVzZSB0aGUgd2lkdGggb2YgQVNDSUkgY2hhcmFjdGVycyB0byBmaW5kCi0gICAgICogb3V0IGlmIHRoaXMgaXMgc28uICovCi0gICAgUUZvbnRNZXRyaWNzIGYoKmZvbnQpOwotICAgIGludCB3aWR0aF9tYXggPSAwOwotICAgIGZvciAoY2hhciBjID0gMzI7IGMgPCAxMjc7IGMrKykKLQlpZiAod2lkdGhfbWF4IDwgZi53aWR0aCgoUUNoYXIpYykpCi0JICAgIHdpZHRoX21heCA9IGYud2lkdGgoKFFDaGFyKWMpOwotICAgIGlmICh3aWR0aF9tYXggPD0gZi5tYXhXaWR0aCgpIC8gMikKLQl3aWR0aF9tYXggPSBmLm1heFdpZHRoKCkgLyAyOwotICAgIGd1aS5jaGFyX3dpZHRoICA9IHdpZHRoX21heDsKLSAgICBndWkuY2hhcl9oZWlnaHQgPSBmLmhlaWdodCgpICsgcF9saW5lc3BhY2U7Ci0gICAgZ3VpLmNoYXJfYXNjZW50ID0gZi5hc2NlbnQoKSArIHBfbGluZXNwYWNlOwotCi0gICAgLy9jaGVjayB2YWx1ZXMsIGp1c3QgdG8gbWFrZSBzdXJlIGFuZCBhdm9pZCBhIGNyYXNoCi0gICAgaWYgKGd1aS5jaGFyX3dpZHRoIDw9IDApCi0JZ3VpLmNoYXJfd2lkdGggPSA4OwotICAgIGlmIChndWkuY2hhcl9oZWlnaHQgPD0gMCkKLQlndWkuY2hhcl9oZWlnaHQgPSAxOwotCi0gICAgaGxfc2V0X2ZvbnRfbmFtZShmb250X25hbWUpOwotCi0gICAgdm13LT53LT5zZXRGb250KCpmb250KTsKLQotICAgIHJldHVybiBPSzsKLX0vL319fQotCi0gICAgR3VpRm9udAotZ3VpX21jaF9nZXRfZm9udChjaGFyX3UgKiBuYW1lLCBpbnQgcmVwb3J0X2Vycm9yKS8ve3t7Ci17Ci0gICAgUVN0cmluZyBmb250bmFtZSgoY29uc3QgY2hhciAqKW5hbWUpOwotICAgIGlmICghZ3VpLmluX3VzZSB8fCBuYW1lID09IE5VTEwpCi0JcmV0dXJuIE5PRk9OVDsKLSAgICBpZiAoZm9udG5hbWUuY29udGFpbnMoJyonKSAmJiBmb250bmFtZS5jb250YWlucygnLScpKQotCXJldHVybiBOT0ZPTlQ7IC8vIFhGTEQgbmFtZXMgbm90IGFsbG93ZWQgYW55bW9yZQotICAgIFFGb250ICpteUZvbnQgPSBuZXcgUUZvbnQoKTsKLSAgICBmb250bmFtZS5yZXBsYWNlKFFSZWdFeHAoIi8iKSwgIiwiKTsKLSAgICAvLwlteUZvbnQtPnNldFJhd01vZGUoVFJVRSk7Ci0KLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICBteUZvbnQtPmZyb21TdHJpbmcoZm9udG5hbWUpOwotI2Vsc2UKLSAgICBLVmltVXRpbHM6OmZyb21TdHJpbmcobXlGb250LCBmb250bmFtZSk7Ci0jZW5kaWYKLSAgICBteUZvbnQtPnNldEZpeGVkUGl0Y2godHJ1ZSk7Ci0gICAgaWYgKCFteUZvbnQtPmZpeGVkUGl0Y2goKSkKLQlkYmYoIk5vbiBmaXhlZC13aWR0aCBmb250Iik7Ci0gICAgcmV0dXJuIChHdWlGb250KSBteUZvbnQ7Ci19Ly99fX0KLQotI2lmIGRlZmluZWQoRkVBVF9FVkFMKSB8fCBkZWZpbmVkKFBST1RPKQotLyoKLSAqIFJldHVybiB0aGUgbmFtZSBvZiBmb250ICJmb250IiBpbiBhbGxvY2F0ZWQgbWVtb3J5LgotICogRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBhY3R1YWwgbmFtZSwgdGh1cyB1c2UgdGhlIHByb3ZpZGVkIG5hbWUuCi0gKi8KLSAgICBjaGFyX3UgKgotZ3VpX21jaF9nZXRfZm9udG5hbWUoR3VpRm9udCBmb250LCBjaGFyX3UgKm5hbWUpLy97e3sKLXsKLSAgICBpZiAobmFtZSA9PSBOVUxMKQotCXJldHVybiBOVUxMOwotICAgIHJldHVybiB2aW1fc3Ryc2F2ZShuYW1lKTsKLX0vL319fQotI2VuZGlmCi0KLS8qCi0gKiBTZXQgdGhlIGN1cnJlbnQgdGV4dCBmb250LgotICogU2luY2Ugd2UgY3JlYXRlIGFsbCBHQyBvbiBkZW1hbmQsIHdlIHVzZSBqdXN0IGd1aS5jdXJyZW50X2ZvbnQgdG8KLSAqIGluZGljYXRlIHRoZSBkZXNpcmVkIGN1cnJlbnQgZm9udC4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfc2V0X2ZvbnQoR3VpRm9udCBmb250KS8ve3t7Ci17Ci0gICAgZ3VpLmN1cnJlbnRfZm9udCA9IGZvbnQ7Ci0gICAgZ3VpLnctPnBhaW50ZXItPnNldEZvbnQoKihndWkuY3VycmVudF9mb250KSk7Ci19Ly99fX0KLQotLyoKLSAqIElmIGEgZm9udCBpcyBub3QgZ29pbmcgdG8gYmUgdXNlZCwgZnJlZSBpdHMgc3RydWN0dXJlLgotICovCi0gICAgdm9pZAotZ3VpX21jaF9mcmVlX2ZvbnQoR3VpRm9udCBmb250KS8ve3t7Ci17Ci0gICAgaWYgKGZvbnQpCi0JZGVsZXRlIGZvbnQ7IC8vIHRoaXMgaXMgYSBRRm9udCAsIHdlIGNhbiBkZWxldGUgaXQgOikKLX0vL319fQotCi0gICAgR3VpRm9udHNldAotZ3VpX21jaF9nZXRfZm9udHNldChjaGFyX3UgKm5hbWUsIGludCByZXBvcnRfZXJyb3IsIGludCBmaXhlZF93aWR0aCkKLXsKLSAgICByZXR1cm4gKEd1aUZvbnRzZXQpZ3VpX21jaF9nZXRfZm9udChuYW1lLCByZXBvcnRfZXJyb3IpOwotfQotCi0gICAgdm9pZAotZ3VpX21jaF9zZXRfZm9udHNldChHdWlGb250c2V0IGZvbnRzZXQpCi17Ci0gICAgZ3VpX21jaF9zZXRfZm9udCgoR3VpRm9udClmb250c2V0KTsKLX0KLQotICAgIHZvaWQKLWd1aV9tY2hfZnJlZV9mb250c2V0KEd1aUZvbnRzZXQgZm9udHNldCkKLXsKLSAgICBpZiAoZm9udHNldCkKLQlkZWxldGUgZm9udHNldDsKLX0KLQotICAgIHZvaWQKLWd1aV9tY2hfc2V0dGl0bGUoY2hhcl91ICp0aXRsZSwgY2hhcl91ICppY29uKS8ve3t7Ci17Ci0gICAgaWYgKCFndWkuaW5fdXNlKQkJLyogY2FuJ3QgZG8gdGhpcyB3aGVuIEdVSSBub3QgcnVubmluZyAqLwotCXJldHVybjsKLSAgICB2bXctPnNldFBsYWluQ2FwdGlvbigoY29uc3QgY2hhciAqKXRpdGxlKTsKLSAgICBRUGl4bWFwIHAoKGNvbnN0IGNoYXIgKilpY29uKTsKLSAgICB2bXctPnNldEljb24ocCk7IC8vRklYTUUKLX0vL319fQotCi0vKgotICogUmV0dXJuIHRoZSBQaXhlbCB2YWx1ZSAoY29sb3IpIGZvciB0aGUgZ2l2ZW4gY29sb3IgbmFtZS4gIFRoaXMgcm91dGluZSB3YXMKLSAqIHByZXR0eSBtdWNoIHRha2VuIGZyb20gZXhhbXBsZSBjb2RlIGluIHRoZSBTaWxpY29uIEdyYXBoaWNzIE9TRi9Nb3RpZgotICogUHJvZ3JhbW1lcidzIEd1aWRlLgotICogUmV0dXJuIC0xIGZvciBlcnJvci4KLSAqLwotICAgIGd1aWNvbG9yX1QKLWd1aV9tY2hfZ2V0X2NvbG9yKGNoYXJfdSAqIG5hbWUpLy97e3sKLXsKLSAgICBpbnQgaTsKLSAgICBzdGF0aWMgY2hhciAqKHZpbW5hbWVzW11bMl0pID0KLSAgICB7Ci0JLyogQSBudW1iZXIgb2YgY29sb3JzIHRoYXQgc29tZSBYMTEgc3lzdGVtcyBkb24ndCBoYXZlICovCi0JeyJMaWdodFJlZCIsICIjRkZBMEEwIn0sCi0JeyJMaWdodEdyZWVuIiwgIiM4MEZGODAifSwKLQl7IkxpZ2h0TWFnZW50YSIsICIjRkZBMEZGIn0sCi0JeyJEYXJrQ3lhbiIsICIjMDA4MDgwIn0sCi0JeyJEYXJrQmx1ZSIsICIjMDAwMEMwIn0sCi0JeyJEYXJrUmVkIiwgIiNDMDAwMDAifSwKLQl7IkRhcmtNYWdlbnRhIiwgIiNDMDAwQzAifSwKLQl7IkRhcmtHcmV5IiwgIiNDMEMwQzAifSwKLQl7TlVMTCwgTlVMTH0KLSAgICB9OwotCi0gICAgaWYgKCFndWkuaW5fdXNlKQkJLyogY2FuJ3QgZG8gdGhpcyB3aGVuIEdVSSBub3QgcnVubmluZyAqLwotCXJldHVybiAoZ3VpY29sb3JfVCkoLTEpOwotCi0gICAgUUNvbG9yIF9jb2xvcigoY29uc3QgY2hhciAqKW5hbWUpOwotCi0gICAgaWYgKF9jb2xvci5pc1ZhbGlkKCkpCi0gICAgewotCS8vIHJldHVybiAoX2NvbG9yLnJlZCgpIDw8IDE2KSArICgoX2NvbG9yLmdyZWVuKCkgPDwgOCkpCi0JCQkJCQkJIC8vICsgKF9jb2xvci5ibHVlKCkpOwotCXJldHVybiBfY29sb3IucmdiKCk7Ci0JLy8gcmV0dXJuIChndWljb2xvcl9UKSBfY29sb3IucGl4ZWwoKTsKLSAgICB9Ci0KLSAgICAvKiBhZGQgYSBmZXcgYnVpbHRpbiBuYW1lcyAqLwotICAgIGZvciAoaSA9IDA7OyArK2kpCi0gICAgewotCWlmICh2aW1uYW1lc1tpXVswXSA9PSBOVUxMKQotCSAgICByZXR1cm4gKGd1aWNvbG9yX1QpKC0xKTsKLQlpZiAoU1RSSUNNUChuYW1lLCB2aW1uYW1lc1tpXVswXSkgPT0gMCkKLQl7Ci0JICAgIG5hbWUgPSAoY2hhcl91ICopIHZpbW5hbWVzW2ldWzFdOwotCSAgICByZXR1cm4gZ3VpX21jaF9nZXRfY29sb3IobmFtZSk7Ci0JfQotICAgIH0KLQotICAgIHJldHVybiAoZ3VpY29sb3JfVCkoLTEpOyAvLyBkZWFkIGNvZGUsIHNob3VsZCBub3QgYmUgcmVhY2hlZC4uCi19Ly99fX0KLQotLyoKLSAqIFNldCB0aGUgY3VycmVudCB0ZXh0IGZvcmVncm91bmQgY29sb3IuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3NldF9mZ19jb2xvcihndWljb2xvcl9UIGNvbG9yKS8ve3t7Ci17Ci0gICAgUUNvbG9yIHJnYjsKLSAgICByZ2Iuc2V0UmdiKGNvbG9yKTsKLSAgICBndWkudy0+cGFpbnRlci0+c2V0UGVuKHJnYik7Ci19Ly99fX0KLQotLyoKLSAqIFNldCB0aGUgY3VycmVudCB0ZXh0IGJhY2tncm91bmQgY29sb3IuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3NldF9iZ19jb2xvcihndWljb2xvcl9UIGNvbG9yKS8ve3t7Ci17Ci0gICAgUUNvbG9yIHJnYjsKLSAgICByZ2Iuc2V0UmdiKGNvbG9yKTsKLSAgICBndWkudy0+cGFpbnRlci0+c2V0QmFja2dyb3VuZENvbG9yKHJnYik7Ci19Ly99fX0KLQotLyoKLSAqIFNldCB0aGUgY3VycmVudCB0ZXh0IHNwZWNpYWwgY29sb3IuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX3NldF9zcF9jb2xvcihndWljb2xvcl9UIGNvbG9yKS8ve3t7Ci17Ci0gICAgLyogVE9ETyAqLwotfS8vfX19Ci0KLS8qCi0gKiBVc2UgdGhlIGJsYW5rIG1vdXNlIHBvaW50ZXIgb3Igbm90LgotICoKLSAqIGhpZGU6IFRSVUUgPSB1c2UgYmxhbmsgcHRyLCBGQUxTRSA9IHVzZSBwYXJlbnQgcHRyCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX21vdXNlaGlkZShpbnQgaGlkZSkvL3t7ewotewotICAgIGlmIChoaWRlID09IGd1aS5wb2ludGVyX2hpZGRlbikKLQlyZXR1cm47Ci0gICAgLy8jaWZkZWYgRkVBVF9NT1VTRVNIQVBFCi0gICAgLy8JaWYgKCFoaWRlKSBtY2hfc2V0X21vdXNlX3NoYXBlKGxhc3Rfc2hhcGUpOwotICAgIC8vI2Vsc2UKLSMgaWYgKFFUX1ZFUlNJT048MzAwKQotICAgIGd1aS53LT5zZXRDdXJzb3IoKGhpZGUpP0JsYW5rQ3Vyc29yOkFycm93Q3Vyc29yKTsKLSMgZWxzZQotICAgIGd1aS53LT5zZXRDdXJzb3IoKGhpZGUpP1F0OjpCbGFua0N1cnNvcjpRdDo6QXJyb3dDdXJzb3IpOwotIyBlbmRpZgotICAgIC8vI2VuZGlmCi0gICAgZ3VpLnBvaW50ZXJfaGlkZGVuID0gaGlkZTsKLX0vL319fQotCi0gICAgdm9pZAotZ3VpX21jaF91cGRhdGVfY29kZWMoKQotewotI2lmZGVmIEZFQVRfTUJZVEUKLSAgICBpZiAoIWd1aS5pbl91c2UpCi0JcmV0dXJuOwotICAgIHZtdy0+Y29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoKGNvbnN0IGNoYXIgKilwX2VuYyk7Ci0gICAgaWYgKHZtdy0+Y29kZWMgPT0gTlVMTCkKLQl2bXctPmNvZGVjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKAotCQlLVmltVXRpbHM6OmNvbnZlcnRFbmNvZGluZ05hbWUoUVN0cmluZygoY29uc3QgY2hhciopcF9lbmMpKSk7Ci0gICAgaWYgKHZtdy0+Y29kZWMgPT0gTlVMTCkKLQl2bXctPmNvZGVjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JMb2NhbGUoKTsKLSNlbHNlCi0gICAgdm13LT5jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTG9jYWxlKCk7Ci0jZW5kaWYKLSAgICBpZiAodm13LT5jb2RlYyA9PSBOVUxMKQotCXZtdy0+Y29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIklTTy04ODU5LTEiKTsgLy9mYWxsYmFjawotfQotCi0gICAgdm9pZAotZ3VpX21jaF9kcmF3X3N0cmluZyhpbnQgcm93LCBpbnQgY29sLCBjaGFyX3UgKiBzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpLy97e3sKLXsKLSAgICBRU3RyaW5nIHRleHQgPSB2bXctPmNvZGVjLT50b1VuaWNvZGUoKGNvbnN0IGNoYXIgKilzLCBsZW4pOwotICAgIGd1aS53LT5kcmF3X3N0cmluZyhURVhUX1goY29sKSwgVEVYVF9ZKHJvdyksIHRleHQsIHRleHQubGVuZ3RoKCksIGZsYWdzKTsKLX0vL319fQotCi0jaWYgZGVmaW5lZChGRUFUX1RJVExFKSB8fCBkZWZpbmVkKFBST1RPKQotLyoKLSAqIFJldHVybiB0aGUgdGV4dCB3aW5kb3ctaWQgYW5kIGRpc3BsYXkuICBPbmx5IHJlcXVpcmVkIGZvciBYLWJhc2VkIEdVSSdzCi0gKi8KLSAgICBpbnQKLWd1aV9nZXRfeDExX3dpbmRpcyhXaW5kb3cgKiB3aW4sIERpc3BsYXkgKiogZGlzKS8ve3t7Ci17Ci0gICAgKndpbiA9IC8qdm13Ki9ndWkudy0+d2luSWQoKTsKLSAgICAqZGlzID0gcXRfeGRpc3BsYXkoKTsKLSAgICByZXR1cm4gT0s7Ci19Ly99fX0KLSNlbmRpZgotCi0gICAgdm9pZAotZ3VpX21jaF9iZWVwKCkvL3t7ewotewotICAgIGthcHAtPmJlZXAoKTsKLX0vL319fQotCi0gICAgdm9pZAotZ3VpX21jaF9mbGFzaChpbnQgbXNlYykvL3t7ewotewotICAgIGd1aS53LT5mbGFzaCgpOwotfS8vfX19Ci0KLS8qCi0gKiBJbnZlcnQgYSByZWN0YW5nbGUgZnJvbSByb3cgciwgY29sdW1uIGMsIGZvciBuciByb3dzIGFuZCBuYyBjb2x1bW5zLgotICovCi0gICAgdm9pZAotZ3VpX21jaF9pbnZlcnRfcmVjdGFuZ2xlKGludCByLCBpbnQgYywgaW50IG5yLCBpbnQgbmMpLy97e3sKLXsKLSAgICBiaXRCbHQoZ3VpLncsCi0JICAgIEZJTExfWChjKSwgRklMTF9ZKHIpLAotCSAgICBndWkudywKLQkgICAgRklMTF9YKGMpLCBGSUxMX1kociksCi0JICAgIChuYykgKiBndWkuY2hhcl93aWR0aCwKLQkgICAgKG5yKSAqIGd1aS5jaGFyX2hlaWdodCwKLQkgICAgUXQ6Ok5vdFJPUCwJCS8vIHJhc3RlciBPcGVyYXRpb24KLQkgICAgdHJ1ZSk7CQkvLyBpZ25vcmVNYXNrCi19Ly99fX0KLQotLyoKLSAqIEljb25pZnkgdGhlIEdVSSB3aW5kb3cuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX2ljb25pZnkoKS8ve3t7Ci17Ci0gICAgdm13LT5zaG93TWluaW1pemVkKCk7Ci19Ly99fX0KLQotLyoKLSAqIERyYXcgYSBjdXJzb3Igd2l0aG91dCBmb2N1cy4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfZHJhd19ob2xsb3dfY3Vyc29yKGd1aWNvbG9yX1QgY29sb3IpLy97e3sKLXsKLSAgICBRUGFpbnRlciBwKGd1aS53KTsKLSAgICBwLnNldFBlbihjb2xvcik7Ci0KLSAgICBwLmRyYXdSZWN0KEZJTExfWChndWkuY29sKSwgRklMTF9ZKGd1aS5yb3cpLCBndWkuY2hhcl93aWR0aCAtIDEsCi0JCQkJCQkJIGd1aS5jaGFyX2hlaWdodCAtIDEpOwotICAgIHAuZW5kKCk7Ci19Ly99fX0KLQotLyoKLSAqIERyYXcgcGFydCBvZiBhIGN1cnNvciwgInciIHBpeGVscyB3aWRlLCBhbmQgImgiIHBpeGVscyBoaWdoLCB1c2luZwotICogY29sb3IgImNvbG9yIi4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfZHJhd19wYXJ0X2N1cnNvcihpbnQgdywgaW50IGgsIGd1aWNvbG9yX1QgY29sb3IpLy97e3sKLXsKLSAgICBRUGFpbnRlciBwKGd1aS53KTsKLSAgICBwLnNldFBlbihjb2xvcik7Ci0gICAgcC5maWxsUmVjdCgKLSNpZmRlZiBGRUFUX1JJR0hUTEVGVAotCSAgICAvKiB2ZXJ0aWNhbCBsaW5lIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgb2YgY3VycmVudCBwb2ludCAqLwotCSAgICBDVVJTT1JfQkFSX1JJR0hUID8gRklMTF9YKGd1aS5jb2wgKyAxKSAtIHcgOgotI2VuZGlmCi0JICAgIEZJTExfWChndWkuY29sKSwKLQkgICAgRklMTF9ZKGd1aS5yb3cpICsgZ3VpLmNoYXJfaGVpZ2h0IC0gaCArIDEsCi0JICAgIHcsIGggLSAyLCBRQ29sb3IoIGNvbG9yLCBjb2xvcikpOwotICAgIHAuZHJhd1JlY3QoCi0jaWZkZWYgRkVBVF9SSUdIVExFRlQKLQkgICAgLyogdmVydGljYWwgbGluZSBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IG9mIGN1cnJlbnQgcG9pbnQgKi8KLQkgICAgQ1VSU09SX0JBUl9SSUdIVCA/IEZJTExfWChndWkuY29sICsgMSkgLSB3IDoKLSNlbmRpZgotCSAgICBGSUxMX1goZ3VpLmNvbCksCi0JICAgIEZJTExfWShndWkucm93KSArIGd1aS5jaGFyX2hlaWdodCAtIGgKLQkJCQkJCSAgICAgICArIChpbnQpcF9saW5lc3BhY2UgLyAyLAotCSAgICB3LCBoIC0gKGludClwX2xpbmVzcGFjZSk7Ci19Ly99fX0KLQotCi0vKgotICogQ2F0Y2ggdXAgd2l0aCBhbnkgcXVldWVkIFgxMSBldmVudHMuICBUaGlzIG1heSBwdXQga2V5Ym9hcmQgaW5wdXQgaW50byB0aGUKLSAqIGlucHV0IGJ1ZmZlciwgY2FsbCByZXNpemUgY2FsbC1iYWNrcywgdHJpZ2dlciB0aW1lcnMgZXRjLiAgSWYgdGhlcmUgaXMKLSAqIG5vdGhpbmcgaW4gdGhlIFgxMSBldmVudCBxdWV1ZSAoJiBubyB0aW1lcnMgcGVuZGluZyksIHRoZW4gd2UgcmV0dXJuCi0gKiBpbW1lZGlhdGVseS4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfdXBkYXRlKCkvL3t7ewotewotICAgIGthcHAtPnByb2Nlc3NFdmVudHMoKTsKLX0vL319fQotCi0KLS8qCi0gKiBHVUkgaW5wdXQgcm91dGluZSBjYWxsZWQgYnkgZ3VpX3dhaXRfZm9yX2NoYXJzKCkuICBXYWl0cyBmb3IgYSBjaGFyYWN0ZXIKLSAqIGZyb20gdGhlIGtleWJvYXJkLgotICogIHd0aW1lID09IC0xICAgICBXYWl0IGZvcmV2ZXIuCi0gKiAgd3RpbWUgPT0gMCAgICAgIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KLSAqICB3dGltZSA+IDAgICAgICAgV2FpdCB3dGltZSBtaWxsaXNlY29uZHMgZm9yIGEgY2hhcmFjdGVyLgotICogUmV0dXJucyBPSyBpZiBhIGNoYXJhY3RlciB3YXMgZm91bmQgdG8gYmUgYXZhaWxhYmxlIHdpdGhpbiB0aGUgZ2l2ZW4gdGltZSwKLSAqIG9yIEZBSUwgb3RoZXJ3aXNlLgotICovCi0gICAgaW50Ci1ndWlfbWNoX3dhaXRfZm9yX2NoYXJzKGxvbmcgd3RpbWUpLy97e3sKLXsKLSAgICAvLyBtYWx0ZUBrZGUub3JnJ3MgIGdpZnQgdG8gS1ZpbSA7KSwgdGhhbmtzIHRvIGhpbSA6KSBmb3IgdGhpcyBoYXJkIHRvIGZpbmQgYnVnCi0gICAgaWYgKHd0aW1lID4gMCkKLSAgICB7Ci0JZ3VpLnctPndhaXQod3RpbWUpOwotCXdoaWxlICh2aW1faXNfaW5wdXRfYnVmX2VtcHR5KCkgJiYgIWd1aS53LT53YWl0X2RvbmUpCi0JICAgIGthcHAtPnByb2Nlc3NPbmVFdmVudCgpOwotCXJldHVybiB2aW1faXNfaW5wdXRfYnVmX2VtcHR5KCkgPyBGQUlMIDogT0s7Ci0gICAgfQotICAgIGVsc2UKLQl3aGlsZSAodmltX2lzX2lucHV0X2J1Zl9lbXB0eSgpKQotCSAgICBrYXBwLT5wcm9jZXNzT25lRXZlbnQoKTsKLQotICAgIHJldHVybiBPSzsKLX0vL319fQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBPdXRwdXQgZHJhd2luZyByb3V0aW5lcy4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qIEZsdXNoIGFueSBvdXRwdXQgdG8gdGhlIHNjcmVlbiAqLwotICAgIHZvaWQKLWd1aV9tY2hfZmx1c2goKS8ve3t7Ci17Ci0gICAga2FwcC0+Zmx1c2hYKCk7Ci19Ly99fX0KLQotLyoKLSAqIENsZWFyIGEgcmVjdGFuZ3VsYXIgcmVnaW9uIG9mIHRoZSBzY3JlZW4gZnJvbSB0ZXh0IHBvcyAocm93MSwgY29sMSkgdG8KLSAqIChyb3cyLCBjb2wyKSBpbmNsdXNpdmUuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX2NsZWFyX2Jsb2NrKGludCByb3cxLCBpbnQgY29sMSwgaW50IHJvdzIsIGludCBjb2wyKS8ve3t7Ci17Ci0gICAgZ3VpLnctPmVyYXNlKEZJTExfWChjb2wxKSwgRklMTF9ZKHJvdzEpLAotCSAgICAoY29sMiAtIGNvbDEgKyAxKSAqIGd1aS5jaGFyX3dpZHRoICsgKGNvbDIgPT0gQ29sdW1ucyAtIDEpLAotCSAgICAocm93MiAtIHJvdzEgKyAxKSAqIGd1aS5jaGFyX2hlaWdodCk7Ci19Ly99fX0KLQotICAgIHZvaWQKLWd1aV9tY2hfY2xlYXJfYWxsKHZvaWQpLy97e3sKLXsKLSAgICBndWkudy0+ZXJhc2UoKTsKLX0vL319fQotCi0KLS8qCi0gKiBEZWxldGUgdGhlIGdpdmVuIG51bWJlciBvZiBsaW5lcyBmcm9tIHRoZSBnaXZlbiByb3csIHNjcm9sbGluZyB1cCBhbnkKLSAqIHRleHQgZnVydGhlciBkb3duIHdpdGhpbiB0aGUgc2Nyb2xsIHJlZ2lvbi4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfZGVsZXRlX2xpbmVzKGludCByb3csIGludCBudW1fbGluZXMpLy97e3sKLXsKLSAgICBpZiAobnVtX2xpbmVzIDw9IDApCi0JcmV0dXJuOwotCi0gICAgaWYgKHJvdyArIG51bV9saW5lcyA+IGd1aS5zY3JvbGxfcmVnaW9uX2JvdCkKLSAgICB7Ci0JLyogU2Nyb2xsZWQgb3V0IG9mIHJlZ2lvbiwganVzdCBibGFuayB0aGUgbGluZXMgb3V0ICovCi0JZ3VpX2NsZWFyX2Jsb2NrKHJvdywgZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCwgZ3VpLnNjcm9sbF9yZWdpb25fYm90LAotCQkJCQkJICAgICBndWkuc2Nyb2xsX3JlZ2lvbl9yaWdodCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JYml0Qmx0KGd1aS53LAotCQlGSUxMX1goZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCksIEZJTExfWShyb3cpLAotCQlndWkudywKLQkJRklMTF9YKGd1aS5zY3JvbGxfcmVnaW9uX2xlZnQpLCBGSUxMX1kocm93ICsgbnVtX2xpbmVzKSwKLQkJZ3VpLmNoYXJfd2lkdGggKiAoZ3VpLnNjcm9sbF9yZWdpb25fcmlnaHQKLQkJCQkJICAgIC0gZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCArIDEpICsgMSwKLQkJZ3VpLmNoYXJfaGVpZ2h0ICogKGd1aS5zY3JvbGxfcmVnaW9uX2JvdCAtIHJvdyAtIG51bV9saW5lcyArIDEpLAotCQlRdDo6Q29weVJPUCwJICAgIC8vIHJhc3RlciBPcGVyYXRpb24KLQkJdHJ1ZSk7CQkgICAgLy8gaWdub3JlTWFzawotCi0JLyogVXBkYXRlIGd1aS5jdXJzb3Jfcm93IGlmIHRoZSBjdXJzb3Igc2Nyb2xsZWQgb3IgY29waWVkIG92ZXIgKi8KLQlpZiAoZ3VpLmN1cnNvcl9yb3cgPj0gcm93KQotCXsKLQkgICAgaWYgKGd1aS5jdXJzb3Jfcm93IDwgcm93ICsgbnVtX2xpbmVzKQotCQlndWkuY3Vyc29yX2lzX3ZhbGlkID0gRkFMU0U7Ci0JICAgIGVsc2UgaWYgKGd1aS5jdXJzb3Jfcm93IDw9IGd1aS5zY3JvbGxfcmVnaW9uX2JvdCkKLQkJZ3VpLmN1cnNvcl9yb3cgLT0gbnVtX2xpbmVzOwotCX0KLQotCWd1aV9jbGVhcl9ibG9jayhndWkuc2Nyb2xsX3JlZ2lvbl9ib3QgLSBudW1fbGluZXMgKyAxLAotCQlndWkuc2Nyb2xsX3JlZ2lvbl9sZWZ0LAotCQlndWkuc2Nyb2xsX3JlZ2lvbl9ib3QsIGd1aS5zY3JvbGxfcmVnaW9uX3JpZ2h0KTsKLSAgICB9Ci19Ly99fX0KLQotLyoKLSAqIEluc2VydCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGxpbmVzIGJlZm9yZSB0aGUgZ2l2ZW4gcm93LCBzY3JvbGxpbmcgZG93biBhbnkKLSAqIGZvbGxvd2luZyB0ZXh0IHdpdGhpbiB0aGUgc2Nyb2xsIHJlZ2lvbi4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfaW5zZXJ0X2xpbmVzKGludCByb3csIGludCBudW1fbGluZXMpLy97e3sKLXsKLSAgICBpZiAobnVtX2xpbmVzIDw9IDApCi0JcmV0dXJuOwotCi0gICAgaWYgKHJvdyArIG51bV9saW5lcyA+IGd1aS5zY3JvbGxfcmVnaW9uX2JvdCkKLSAgICB7Ci0JLyogU2Nyb2xsZWQgb3V0IG9mIHJlZ2lvbiwganVzdCBibGFuayB0aGUgbGluZXMgb3V0ICovCi0JZ3VpX2NsZWFyX2Jsb2NrKHJvdywgZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCwgZ3VpLnNjcm9sbF9yZWdpb25fYm90LAotCQkJCQkJIGd1aS5zY3JvbGxfcmVnaW9uX3JpZ2h0IC0gMSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JYml0Qmx0KGd1aS53LAotCQlGSUxMX1goZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCksIEZJTExfWShyb3cgKyBudW1fbGluZXMpLAotCQlndWkudywKLQkJRklMTF9YKGd1aS5zY3JvbGxfcmVnaW9uX2xlZnQpLCBGSUxMX1kocm93KSwKLQkJZ3VpLmNoYXJfd2lkdGggKiAoIGd1aS5zY3JvbGxfcmVnaW9uX3JpZ2h0Ci0JCQkJCSAgIC0gZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCArIDEgKSArIDEsCi0JCWd1aS5jaGFyX2hlaWdodCAqIChndWkuc2Nyb2xsX3JlZ2lvbl9ib3QgLSByb3cgLSBudW1fbGluZXMgKyAxKSwKLQkJUXQ6OkNvcHlST1AsCSAgICAvLyByYXN0ZXIgT3BlcmF0aW9uCi0JCXRydWUpOwkJICAgIC8vIGlnbm9yZU1hc2sKLQotCS8qIFVwZGF0ZSBndWkuY3Vyc29yX3JvdyBpZiB0aGUgY3Vyc29yIHNjcm9sbGVkIG9yIGNvcGllZCBvdmVyICovCi0JaWYgKGd1aS5jdXJzb3Jfcm93ID49IGd1aS5yb3cpCi0JewotCSAgICBpZiAoZ3VpLmN1cnNvcl9yb3cgPD0gZ3VpLnNjcm9sbF9yZWdpb25fYm90IC0gbnVtX2xpbmVzKQotCQlndWkuY3Vyc29yX3JvdyArPSBudW1fbGluZXM7Ci0JICAgIGVsc2UgaWYgKGd1aS5jdXJzb3Jfcm93IDw9IGd1aS5zY3JvbGxfcmVnaW9uX2JvdCkKLQkJZ3VpLmN1cnNvcl9pc192YWxpZCA9IEZBTFNFOwotCX0KLQotCWd1aV9jbGVhcl9ibG9jayhyb3csIGd1aS5zY3JvbGxfcmVnaW9uX2xlZnQsIHJvdyArIG51bV9saW5lcyAtIDEsCi0JCQkJCQkgICAgIGd1aS5zY3JvbGxfcmVnaW9uX3JpZ2h0KTsKLSAgICB9Ci19Ly99fX0KLQotLyoKLSAqIFggU2VsZWN0aW9uIHN0dWZmLCBmb3IgY3V0dGluZyBhbmQgcGFzdGluZyB0ZXh0IHRvIG90aGVyIHdpbmRvd3MuCi0gKi8KLSAgICB2b2lkCi1jbGlwX21jaF9yZXF1ZXN0X3NlbGVjdGlvbihWaW1DbGlwYm9hcmQgKmNiZCkvL3t7ewotewotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIGlmIChjYmQgPT0gJmNsaXBfc3RhcikKLQlrYXBwLT5jbGlwYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSNlbmRpZgotICAgIFFTdHJpbmcgc2VsZWN0aW9uID0ga2FwcC0+Y2xpcGJvYXJkKCktPnRleHQoKTsKLQotICAgIFFDU3RyaW5nIHVuaXN0cmluZyA9IHZtdy0+Y29kZWMtPmZyb21Vbmljb2RlKHNlbGVjdGlvbik7Ci0gICAgY2xpcF95YW5rX3NlbGVjdGlvbihNQ0hBUiwgKGNoYXJfdSAqKShjb25zdCBjaGFyKil1bmlzdHJpbmcsCi0JCQkJCSAgICAgIChsb25nKXVuaXN0cmluZy5sZW5ndGgoKSwgY2JkKTsKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICBpZiAoY2JkID09ICZjbGlwX3N0YXIpCi0Ja2FwcC0+Y2xpcGJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUoZmFsc2UpOwotI2VuZGlmCi19Ly99fX0KLQotICAgIHZvaWQKLWNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uKFZpbUNsaXBib2FyZCAqY2JkKS8ve3t7Ci17Ci0gICAgLy8gRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlCi0gICAgZ3VpX21jaF91cGRhdGUoKTsKLX0vL319fQotCi0vKgotICogQ2hlY2sgd2hhdGV2ZXIgd2UgYWxscmVhZHkgb3duIHRoZSBzZWxlY3Rpb24uCi0gKi8KLSAgICBpbnQKLWNsaXBfbWNoX293bl9zZWxlY3Rpb24oVmltQ2xpcGJvYXJkICpjYmQpLy97e3sKLXsKLSAgICBpZiAoa2FwcC0+Y2xpcGJvYXJkKCktPm93bnNTZWxlY3Rpb24oKSkKLQlyZXR1cm4gT0s7Ci0gICAgZWxzZQotICAgIHsKLSNpZiBRVF9WRVJTSU9OPj0zMDAKLQlrYXBwLT5jbGlwYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSNlbmRpZgotCXJldHVybiBPSzsKLSAgICB9Ci19Ly99fX0KLQotLyoKLSAqIFNlbmQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIHRoZSBjbGlwYm9hcmQuCi0gKi8KLSAgICB2b2lkCi1jbGlwX21jaF9zZXRfc2VsZWN0aW9uKFZpbUNsaXBib2FyZCAqY2JkKS8ve3t7Ci17Ci0gICAgY2hhcl91ICpkYXRhOwotICAgIGxvbmdfdSBsZW5ndGg7Ci0KLSAgICBjbGlwX2dldF9zZWxlY3Rpb24oY2JkKTsKLSAgICBpZiAoY2xpcF9jb252ZXJ0X3NlbGVjdGlvbigmZGF0YSwgJmxlbmd0aCwgY2JkKSA8IDApCi0JcmV0dXJuOwotCi0gICAgUVN0cmluZyBzZWxlY3Rpb24oKGNvbnN0IGNoYXIgKilkYXRhKTsKLSAgICAvLyBXZSBtdXN0IHR1cm5jYXRlIHRoZSBzdHJpbmcgYmVjYXVzZSBpdCBpcyBub3QKLSAgICAvLyBudWxsIHRlcm1pbmF0ZWQKLSAgICBzZWxlY3Rpb24udHJ1bmNhdGUoKHVpbnQpIGxlbmd0aCk7Ci0KLSNpZiBRVF9WRVJTSU9OPj0zMDAKLSAgICBpZiAoY2JkID09ICZjbGlwX3N0YXIpCi0Ja2FwcC0+Y2xpcGJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUodHJ1ZSk7Ci0jZW5kaWYKLSAgICBrYXBwLT5jbGlwYm9hcmQoKS0+c2V0VGV4dChzZWxlY3Rpb24pOwotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIGthcHAtPmNsaXBib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKGZhbHNlKTsKLSNlbmRpZgotfS8vfX19Ci0KLQotI2lmIGRlZmluZWQoRkVBVF9NRU5VKSB8fCBkZWZpbmVkKFBST1RPKQotLyoKLSAqIE1ha2UgYSBtZW51IGl0ZW0gYXBwZWFyIGVpdGhlciBhY3RpdmUgb3Igbm90IGFjdGl2ZSAoZ3JleSBvciBub3QgZ3JleSkuCi0gKi8KLSAgICB2b2lkCi1ndWlfbWNoX21lbnVfZ3JleSh2aW1tZW51X1QgKiBtZW51LCBpbnQgZ3JleSkvL3t7ewotewotICAgIGlmICghbWVudSB8fCAhbWVudS0+cGFyZW50IHx8ICFtZW51LT5wYXJlbnQtPndpZGdldCkKLQlyZXR1cm47Ci0gICAgbWVudS0+cGFyZW50LT53aWRnZXQtPnNldEl0ZW1FbmFibGVkKChsb25nKW1lbnUsICFncmV5KTsKLSAgICBndWlfbWNoX3VwZGF0ZSgpOwotfS8vfX19Ci0KLS8qCi0gKiBNYWtlIG1lbnUgaXRlbSBoaWRkZW4gb3Igbm90IGhpZGRlbi4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfbWVudV9oaWRkZW4odmltbWVudV9UICogbWVudSwgaW50IGhpZGRlbikvL3t7ewotewotICAgIC8vIEZJWE1FOiBjYW5ub3QgYmUgZml4ZWQgQUZBSUsKLSAgICAvLyBpdCdzIGhhcmQgdG8gcmVtb3ZlIGFuIGl0ZW0gaW4gYSBRUG9wdXBNZW51Ci0gICAgZ3VpX21jaF9tZW51X2dyZXkobWVudSwgaGlkZGVuKTsKLX0vL319fQotCi0vKgotICogVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgc2V0dGluZyBhbGwgdGhlIG1lbnVzIHRvIGdyZXkvaGlkZGVuIG9yIG5vdC4KLSAqLwotICAgIHZvaWQKLWd1aV9tY2hfZHJhd19tZW51YmFyKCkvL3t7ewotewotICAgIC8vIG5vdGhpbmcgdG8gZG8gdW5kZXIga2RlCi19Ly99fX0KLSNlbmRpZgotCi0vKgotICogU2Nyb2xsYmFyIHN0dWZmLgotICovCi0gICAgdm9pZAotZ3VpX21jaF9lbmFibGVfc2Nyb2xsYmFyKHNjcm9sbGJhcl9UICpzYiwgaW50IGZsYWcpLy97e3sKLXsKLSAgICBpZiAoIXNiLT53KQotCXJldHVybjsKLSAgICBpbnQgd2lkdGggPSBndWkudy0+d2lkdGgoKTsKLSAgICBpbnQgaGVpZ2h0ID0gZ3VpLnctPmhlaWdodCgpOwotICAgIGludCBuZXd3ID0gdm13LT53aWR0aCgpOwotICAgIGludCBuZXdoID0gdm13LT5oZWlnaHQoKTsKLQotICAgIGlmIChndWkud2hpY2hfc2Nyb2xsYmFyc1tTQkFSX0xFRlRdKQotCXdpZHRoICs9IGd1aS5zY3JvbGxiYXJfd2lkdGg7Ci0gICAgaWYgKGd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfUklHSFRdKQotCXdpZHRoICs9IGd1aS5zY3JvbGxiYXJfd2lkdGg7Ci0gICAgaWYgKGd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfQk9UVE9NXSkKLQloZWlnaHQgKz0gZ3VpLnNjcm9sbGJhcl9oZWlnaHQ7Ci0KLSAgICBpZiAodm13LT5tZW51QmFyKCktPmlzVmlzaWJsZSgpICYmIHZtdy0+bWVudUJhcigpLT5pc0VuYWJsZWQoKQotI2lmIFFUX1ZFUlNJT04+PTMwMAotCSAgICAmJiAhdm13LT5tZW51QmFyKCktPmlzVG9wTGV2ZWxNZW51KCkKLSNlbmRpZgotICAgICAgICkKLQloZWlnaHQgKz0gdm13LT5tZW51QmFyKCktPmhlaWdodCgpOwotI2lmZGVmIEZFQVRfVE9PTEJBUgotICAgIGlmICh2bXctPnRvb2xCYXIoKS0+aXNWaXNpYmxlKCkgJiYgdm13LT50b29sQmFyKCktPmlzRW5hYmxlZCgpCi0JICAgICYmICh2bXctPnRvb2xCYXIoKS0+YmFyUG9zKCkgPT0gS1Rvb2xCYXI6OlRvcAotCQl8fCB2bXctPnRvb2xCYXIoKS0+YmFyUG9zKCkgPT0gS1Rvb2xCYXI6OkJvdHRvbSkpCi0JaGVpZ2h0ICs9IHZtdy0+dG9vbEJhcigpLT5oZWlnaHQoKTsKLQotICAgIGlmICh2bXctPnRvb2xCYXIoKS0+aXNWaXNpYmxlKCkgJiYgdm13LT50b29sQmFyKCktPmlzRW5hYmxlZCgpCi0JICAgICYmICh2bXctPnRvb2xCYXIoKS0+YmFyUG9zKCkgPT0gS1Rvb2xCYXI6OkxlZnQKLQkJfHwgdm13LT50b29sQmFyKCktPmJhclBvcygpID09IEtUb29sQmFyOjpSaWdodCkpCi0Jd2lkdGggKz0gdm13LT50b29sQmFyKCktPndpZHRoKCk7Ci0jZW5kaWYKLSAgICBpZiAoYWJzKHZtdy0+d2lkdGgoKSAtIHdpZHRoKSA+IDUKLQkJCSAmJiAoc2ItPnR5cGUgPT0gU0JBUl9MRUZUIHx8IHNiLT50eXBlID09IFNCQVJfUklHSFQpKQotCW5ld3cgPSB3aWR0aDsKLSAgICBpZiAoYWJzKHZtdy0+aGVpZ2h0KCkgLSBoZWlnaHQpID4gNSAmJiAoc2ItPnR5cGUgPT0gU0JBUl9CT1RUT00pKQotCW5ld2ggPSBoZWlnaHQ7Ci0KLSAgICBpZiAoZmxhZykKLQlzYi0+dy0+c2hvdygpOwotICAgIGVsc2UKLQlzYi0+dy0+aGlkZSgpOwotICAgIGd1aV9tY2hfdXBkYXRlKCk7Ci0gICAgdm13LT5sb2NrKCk7Ci0gICAgdm13LT5yZXNpemUobmV3dywgbmV3aCk7Ci0gICAgdm13LT51bmxvY2soKTsKLSAgICBndWlfbWNoX3VwZGF0ZSgpOwotfS8vfX19Ci0KLS8qCi0gKiBSZXR1cm4gdGhlIFJHQiB2YWx1ZSBvZiBhIHBpeGVsIGFzICIjUlJHR0JCIi4KLSAqLwotICAgIGxvbmdfdQotZ3VpX21jaF9nZXRfcmdiKGd1aWNvbG9yX1QgcGl4ZWwpLy97e3sKLXsKLSAgICAvLwlRQ29sb3IgYyhwaXhlbCwgcGl4ZWwpOwotICAgIC8vCXJldHVybiAoYy5yZWQoKSA8PCAxNikgKyAgKChjLmdyZWVuKCkgPDwgOCkpICsgKGMuYmx1ZSgpKTsKLSAgICByZXR1cm4gcGl4ZWw7Ci0gICAgLy8gZnVubnkgbm8gPyBpdCBsb29rcyBsaWtlIHdpdGggUXQgd2UgY2FuIGFsd2F5cyB1c2UgZGlyZWN0bHkgdGhlIHJnYgotICAgIC8vIHZhbHVlIChpIGhvcGUgaSBkb24ndCBicmVhayBjb2xvcnMgYWdhaW4gO3ApCi19Ly99fX0KLQotLyoKLSAqIEdldCBjdXJyZW50IG1vdXNlIGNvb3JkaW5hdGVzIGluIHRleHQgd2luZG93LgotICovCi0gICAgdm9pZAotZ3VpX21jaF9nZXRtb3VzZShpbnQgKngsIGludCAqeSkvL3t7ewotewotICAgICp4ID0gdm13LT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKS54KCk7Ci0gICAgKnkgPSB2bXctPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLnkoKTsKLX0vL319fQotCi0gICAgdm9pZAotZ3VpX21jaF9zZXRtb3VzZShpbnQgeCwgaW50IHkpLy97e3sKLXsKLSAgICBRQ3Vyc29yOjpzZXRQb3Modm13LT5tYXBUb0dsb2JhbChRUG9pbnQoeCwgeSkpKTsKLX0vL319fQotCi0jaWYgZGVmaW5lZChGRUFUX01PVVNFU0hBUEUpIHx8IGRlZmluZWQoUFJPVE8pCi0jaWYgUVRfVkVSU0lPTj49MzAwCi1zdGF0aWMgaW50IG1zaGFwZV9pZHNbXSA9IHsvL3t7ewotCVF0OjpBcnJvd0N1cnNvciwJCS8qIGFycm93ICovCi0JUXQ6OkJsYW5rQ3Vyc29yLAkJLyogYmxhbmsgKi8KLQlRdDo6SWJlYW1DdXJzb3IsCQkvKiBiZWFtICovCi0JUXQ6OlNpemVWZXJDdXJzb3IsCQkvKiB1cGRvd24gKi8KLQlRdDo6U3BsaXRIQ3Vyc29yLAkJLyogdWRzaXppbmcgKi8KLQlRdDo6U2l6ZUhvckN1cnNvciwJCS8qIGxlZnRyaWdodCAqLwotCVF0OjpTaXplSG9yQ3Vyc29yLAkJLyogbHJzaXppbmcgKi8KLQlRdDo6V2FpdEN1cnNvciwJCQkvKiBidXN5ICovCi0JUXQ6OkZvcmJpZGRlbkN1cnNvciwJCS8qIG5vICovCi0JUXQ6OkNyb3NzQ3Vyc29yLAkJLyogY3Jvc3NoYWlyICovCi0JUXQ6OlBvaW50aW5nSGFuZEN1cnNvciwJCS8qIGhhbmQxICovCi0JUXQ6OlBvaW50aW5nSGFuZEN1cnNvciwJCS8qIGhhbmQyICovCi0JUXQ6OkFycm93Q3Vyc29yLAkJLyogcGVuY2lsICovCi0JUXQ6OldoYXRzVGhpc0N1cnNvciwJCS8qIHF1ZXN0aW9uICovCi0JUXQ6OkFycm93Q3Vyc29yLAkJLyogcmlnaHQtYXJyb3cgKi8KLQlRdDo6VXBBcnJvd0N1cnNvciwJCS8qIHVwLWFycm93ICovCi0JUXQ6OkFycm93Q3Vyc29yCQkJLyogbGFzdCBvbmUgKi8KLX07Ly99fX0KLSNlbHNlCi1zdGF0aWMgaW50IG1zaGFwZV9pZHNbXSA9IHsvL3t7ewotCUFycm93Q3Vyc29yLAkJLyogYXJyb3cgKi8KLQlCbGFua0N1cnNvciwJCS8qIGJsYW5rICovCi0JSWJlYW1DdXJzb3IsCQkvKiBiZWFtICovCi0JU2l6ZVZlckN1cnNvciwJCS8qIHVwZG93biAqLwotCVNwbGl0SEN1cnNvciwJCS8qIHVkc2l6aW5nICovCi0JU2l6ZUhvckN1cnNvciwJCS8qIGxlZnRyaWdodCAqLwotCVNpemVIb3JDdXJzb3IsCQkvKiBscnNpemluZyAqLwotCVdhaXRDdXJzb3IsCQkvKiBidXN5ICovCi0JRm9yYmlkZGVuQ3Vyc29yLAkvKiBubyAqLwotCUNyb3NzQ3Vyc29yLAkJLyogY3Jvc3NoYWlyICovCi0JUG9pbnRpbmdIYW5kQ3Vyc29yLAkvKiBoYW5kMSAqLwotCVBvaW50aW5nSGFuZEN1cnNvciwJLyogaGFuZDIgKi8KLQlBcnJvd0N1cnNvciwJCS8qIHBlbmNpbCAqLwotCUFycm93Q3Vyc29yLAkJLyogcXVlc3Rpb24gKi8KLQlBcnJvd0N1cnNvciwJCS8qIHJpZ2h0LWFycm93ICovCi0JVXBBcnJvd0N1cnNvciwJCS8qIHVwLWFycm93ICovCi0JQXJyb3dDdXJzb3IJCS8qIGxhc3Qgb25lICovCi19Oy8vfX19Ci0jZW5kaWYKLQotICAgIHZvaWQKLW1jaF9zZXRfbW91c2Vfc2hhcGUgKGludCBzaGFwZSkvL3t7ewotewotICAgIGludAkJICAgaWQ7Ci0KLSAgICBpZiAoc2hhcGUgPT0gTVNIQVBFX0hJREUgfHwgZ3VpLnBvaW50ZXJfaGlkZGVuKQotI2lmIFFUX1ZFUlNJT04+PTMwMAotCWd1aS53LT5zZXRDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKTsKLSNlbHNlCi0JZ3VpLnctPnNldEN1cnNvcihCbGFua0N1cnNvcik7Ci0jZW5kaWYKLSAgICBlbHNlCi0gICAgewotCWlmIChzaGFwZSA+PSBNU0hBUEVfTlVNQkVSRUQpCi0JewotCSAgICBpZCA9IHNoYXBlIC0gTVNIQVBFX05VTUJFUkVEOwotCSAgICAvKgkJaWYgKGlkID49IEdES19OVU1fR0xZUEhTKQotCQkJaWQgPSBHREtfTEVGVF9QVFI7Ci0JCQllbHNlCi0JCQlpZCAmPSB+MTsqLwkvKiB0aGV5IGFyZSBhbHdheXMgZXZlbiAod2h5PykgKi8KLQkgICAgaWQgJj0gLTE7Ci0JfQotCWVsc2UKLQkgICAgaWQgPSBtc2hhcGVfaWRzW3NoYXBlXTsKLQotCWd1aS53LT5zZXRDdXJzb3IoaWQpOwotICAgIH0KLSAgICBpZiAoc2hhcGUgIT0gTVNIQVBFX0hJREUpCi0JbGFzdF9zaGFwZSA9IHNoYXBlOwotfS8vfX19Ci0jZW5kaWYKLQotLyoKLSAqIEFkanVzdCBndWkuY2hhcl9oZWlnaHQgKGFmdGVyICdsaW5lc3BhY2UnIHdhcyBjaGFuZ2VkKS4KLSAqLwotICAgIGludAotZ3VpX21jaF9hZGp1c3RfY2hhcmhlaWdodCAoKS8ve3t7Ci17Ci0gICAgUUZvbnQgZigqKGd1aS5jdXJyZW50X2ZvbnQpKTsKLSAgICBRRm9udE1ldHJpY3MgZm0oZik7Ci0gICAgZ3VpLmNoYXJfaGVpZ2h0ID0gZm0uaGVpZ2h0KCkgKyBwX2xpbmVzcGFjZTsKLSAgICAvL2d1aS5jaGFyX2hlaWdodCA9IGZtLmFzY2VudCgpICsgZm0uZGVzY2VudCgpICsgcF9saW5lc3BhY2U7Ci0gICAgZ3VpLmNoYXJfYXNjZW50ID0gZm0uYXNjZW50KCkgKyBwX2xpbmVzcGFjZSAvIDI7Ci0KLSAgICByZXR1cm4gT0s7Ci19Ly99fX0KLQotICAgIHZvaWQKLWd1aV9tY2hfc2V0X2ZvcmVncm91bmQgKCkvL3t7ewotewotICAgIEtXaW46OmFjdGl2YXRlV2luZG93KHZtdy0+d2luSWQoKSk7Ci19Ly99fX0KZGlmZiAtLWdpdCBhL3NyYy9ndWlfbWFjLnIgYi9zcmMvZ3VpX21hYy5yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE5MTZiLi4wMDAwMDAwCi0tLSBhL3NyYy9ndWlfbWFjLnIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKiB2aTpzZXQgdHM9OCBzdHM9NCBzdz00OgotICoKLSAqIFZJTSAtIFZpIElNcHJvdmVkCWJ5IEJyYW0gTW9vbGVuYWFyCi0gKgotICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgotICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCi0gKi8KLQotI2lmZGVmIGVudmlyb25fb3NfbWFjIC8qIG9yIDEgZm9yIENhcmJvbiwgMCBmb3Igbm9uLUNhcmJvbiAqLwotIyBpbmNsdWRlIDxDYXJib24vQ2FyYm9uLnI+Ci0jZWxzZQotIyBpbmNsdWRlIDxTeXNUeXBlcy5yPgotIyBpbmNsdWRlIDxUeXBlcy5yPgotI2VuZGlmCi0jaW5jbHVkZSAidmVyc2lvbi5oIgotCi0vKiBVc2VkIGFzIGFwcGxpY2F0aW9uIHZlcnNpb24gKi8KLXJlc291cmNlICd2ZXJzJyAoMSkgewotCVZJTV9WRVJTSU9OX01BSk9SLCBWSU1fVkVSU0lPTl9CVUlMRF9CQ0QsIFZJTV9WRVJTSU9OX1JFTEVBU0UsIFZJTV9WRVJTSU9OX1BBVENITEVWRUwsCi0JdmVyVVMsCi0JVklNX1ZFUlNJT05fTUVESVVNLAotCVZJTV9WRVJTSU9OX0xPTkdfREFURSAkJGRhdGUgIiAiICQkdGltZSAiKSIKLX07Ci0KLS8qIFVzZWQgYXMgYXBwbGljYXRpb24gZ3JvdXAgdmVyc2lvbiAqLwotcmVzb3VyY2UgJ3ZlcnMnICgyKSB7Ci0JVklNX1ZFUlNJT05fTUFKT1IsIFZJTV9WRVJTSU9OX0JVSUxEX0JDRCwgVklNX1ZFUlNJT05fUkVMRUFTRSwgVklNX1ZFUlNJT05fUEFUQ0hMRVZFTCwKLQl2ZXJVUywKLQlWSU1fVkVSU0lPTl9NRURJVU0sCi0JVklNX1ZFUlNJT05fTE9ORwotfTsKLQotLyogVE9ETzogU21hbGwgQWJvdXQgYm94IHdpdGggY29tcGlsZSB0aW1lICovCmRpZmYgLS1naXQgYS9zcmMvaWZfbXpzY2guYyBiL3NyYy9pZl9tenNjaC5jCmluZGV4IDE4NmVlNjYuLjk0MGM5OTEgMTAwNjQ0Ci0tLSBhL3NyYy9pZl9tenNjaC5jCisrKyBiL3NyYy9pZl9tenNjaC5jCkBAIC02MjEsOCArNjIxLDYgQEAKIHBhc2NhbCB2b2lkIHRpbWVyX3Byb2MoRXZlbnRMb29wVGltZXJSZWYsIHZvaWQgKik7CiBzdGF0aWMgRXZlbnRMb29wVGltZXJSZWYgdGltZXJfaWQgPSBOVUxMOwogc3RhdGljIEV2ZW50TG9vcFRpbWVyVVBQIHRpbWVyVVBQOwotI2VsaWYgZGVmaW5lZChGRUFUX0dVSV9LREUpCi1zdGF0aWMgaW50IHRpbWVyX2lkID0gMDsKICNlbmRpZgogCiAjaWZuZGVmIEZFQVRfR1VJX1czMiAvKiBXaW4zMiBjb25zb2xlIGFuZCBVbml4ICovCkBAIC02NjQsOSArNjYyLDYgQEAKICMgZWxpZiBkZWZpbmVkKEZFQVRfR1VJX01BQykKICAgICBwYXNjYWwgdm9pZAogdGltZXJfcHJvYyhFdmVudExvb3BUaW1lclJlZiB0aGVUaW1lciwgdm9pZCAqdXNlckRhdGEpCi0jZWxpZiBkZWZpbmVkKEZFQVRfR1VJX0tERSkKLSAgICB2b2lkCi10aW1lcl9wcm9jKHZvaWQpCiAjIGVuZGlmCiB7CiAgICAgc2NoZW1lX2NoZWNrX3RocmVhZHMoKTsKQEAgLTY5Myw5ICs2ODgsNiBAQAogICAgIHRpbWVyVVBQID0gTmV3RXZlbnRMb29wVGltZXJVUFAodGltZXJfcHJvYyk7CiAgICAgSW5zdGFsbEV2ZW50TG9vcFRpbWVyKEdldE1haW5FdmVudExvb3AoKSwgcF9tenEgKiBrRXZlbnREdXJhdGlvbk1pbGxpc2Vjb25kLAogCQlwX216cSAqIGtFdmVudER1cmF0aW9uTWlsbGlzZWNvbmQsIHRpbWVyVVBQLCBOVUxMLCAmdGltZXJfaWQpOwotI2VsaWYgZGVmaW5lZChGRUFUX0dVSV9LREUpCi0gICAgbXpzY2hlbWVfa2RlX3N0YXJ0X3RpbWVyKCk7Ci0gICAgdGltZXJfaWQgPSAxOyAgIC8qIGp1c3Qgc2lnbmFsIHRoYXQgdGltZXIgd2FzIHN0YXJ0ZWQgKi8KICMgZW5kaWYKIH0KIApAQCAtNzExLDggKzcwMyw2IEBACiAjIGVsaWYgZGVmaW5lZChGRUFUX0dVSV9NQUMpCiAgICAgUmVtb3ZlRXZlbnRMb29wVGltZXIodGltZXJfaWQpOwogICAgIERpc3Bvc2VFdmVudExvb3BUaW1lclVQUCh0aW1lclVQUCk7Ci0jZWxpZiBkZWZpbmVkKEZFQVRfR1VJX0tERSkKLSAgICBtenNjaGVtZV9rZGVfc3RvcF90aW1lcigpOwogIyBlbmRpZgogICAgIHRpbWVyX2lkID0gMDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9rdmltX2lmYWNlLmggYi9zcmMva3ZpbV9pZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDg0YmMyLi4wMDAwMDAwCi0tLSBhL3NyYy9rdmltX2lmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jaWZuZGVmIEtWSU1fSUZBQ0UKLSNkZWZpbmUgS1ZJTV9JRkFDRQotCi0jaW5jbHVkZSA8ZGNvcG9iamVjdC5oPgotCi1jbGFzcyBLVmltIDogdmlydHVhbCBwdWJsaWMgRENPUE9iamVjdAotewotCUtfRENPUAotcHVibGljOgotCi1rX2Rjb3A6Ci0JdmlydHVhbCB2b2lkIGV4ZWNJbnNlcnQoUVN0cmluZyBjb21tYW5kKT0wOwotCXZpcnR1YWwgdm9pZCBleGVjTm9ybWFsKFFTdHJpbmcgY29tbWFuZCk9MDsKLQl2aXJ0dWFsIHZvaWQgZXhlY1JhdyhRU3RyaW5nIGNvbW1hbmQpPTA7Ci0JdmlydHVhbCB2b2lkIGV4ZWNDbWQoUVN0cmluZyBjb21tYW5kKT0wOwotCXZpcnR1YWwgUVN0cmluZyBldmFsKFFTdHJpbmcgZXhwcik9MDsKLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKaW5kZXggZWM3NDY5My4uNjU4ZjRlMSAxMDA2NDQKLS0tIGEvc3JjL21haW4uYworKysgYi9zcmMvbWFpbi5jCkBAIC0zNDksNyArMzQ5LDcgQEAKICNpZmRlZiBBTFdBWVNfVVNFX0dVSQogICAgIGd1aS5zdGFydGluZyA9IFRSVUU7CiAjZWxzZQotIyBpZiBkZWZpbmVkKEZFQVRfR1VJX1gxMSkgfHwgZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfS0RFKQorIyBpZiBkZWZpbmVkKEZFQVRfR1VJX1gxMSkgfHwgZGVmaW5lZChGRUFUX0dVSV9HVEspCiAgICAgLyoKICAgICAgKiBDaGVjayBpZiB0aGUgR1VJIGNhbiBiZSBzdGFydGVkLiAgUmVzZXQgZ3VpLnN0YXJ0aW5nIGlmIG5vdC4KICAgICAgKiBEb24ndCBrbm93IGFib3V0IG90aGVyIHN5c3RlbXMsIHN0YXkgb24gdGhlIHNhZmUgc2lkZSBhbmQgZG9uJ3QgY2hlY2suCkBAIC00MzMsNyArNDMzLDcgQEAKICAgICAgKiBGb3IgR1RLIHdlIGNhbid0IGJlIHN1cmUsIGJ1dCB3aGVuIHN0YXJ0ZWQgZnJvbSB0aGUgZGVza3RvcCBpdCBkb2Vzbid0CiAgICAgICogbWFrZSBzZW5zZSB0byB0cnkgdXNpbmcgYSB0ZXJtaW5hbC4KICAgICAgKi8KLSNpZiBkZWZpbmVkKEFMV0FZU19VU0VfR1VJKSB8fCBkZWZpbmVkKEZFQVRfR1VJX1gxMSkgfHwgZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfS0RFKQorI2lmIGRlZmluZWQoQUxXQVlTX1VTRV9HVUkpIHx8IGRlZmluZWQoRkVBVF9HVUlfWDExKSB8fCBkZWZpbmVkKEZFQVRfR1VJX0dUSykKICAgICBpZiAoZ3VpLnN0YXJ0aW5nCiAjIGlmZGVmIEZFQVRfR1VJX0dUSwogCSAgICAmJiAhaXNhdHR5KDIpCkBAIC0xMzg0LDcgKzEzODQsNyBAQAogCSAgICBicmVhazsKICMgaWZkZWYgRkVBVF9YQ0xJUEJPQVJECiAJZWxzZSBpZiAoU1RSSUNNUChhcmd2W2ldLCAiLWRpc3BsYXkiKSA9PSAwCi0jICBpZiBkZWZpbmVkKEZFQVRfR1VJX0dUSykgfHwgZGVmaW5lZChGRUFUX0dVSV9LREUpCisjICBpZiBkZWZpbmVkKEZFQVRfR1VJX0dUSykKIAkJfHwgU1RSSUNNUChhcmd2W2ldLCAiLS1kaXNwbGF5IikgPT0gMAogIyAgZW5kaWYKIAkJKQpAQCAtMjg1OSwxNyArMjg1OSw2IEBACiAjIGVuZGlmCiAgICAgbWFpbl9tc2coXygiLS1zb2NrZXRpZCA8eGlkPlx0T3BlbiBWaW0gaW5zaWRlIGFub3RoZXIgR1RLIHdpZGdldCIpKTsKICNlbmRpZgotI2lmZGVmIEZFQVRfR1VJX0tERQotICAgIG1jaF9tc2coXygiXG5Bcmd1bWVudHMgcmVjb2duaXNlZCBieSBrdmltIChLREUgdmVyc2lvbik6XG4iKSk7Ci0gICAgbWFpbl9tc2coXygiLWJsYWNrXHRcdFVzZSByZXZlcnNlIHZpZGVvIikpOwotI2lmIFFUX1ZFUlNJT04+PTMwMAotICAgIG1haW5fbXNnKF8oIi10aXBcdFx0XHREaXNwbGF5IHRoZSB0aXAgZGlhbG9nIG9uIHN0YXJ0dXAiKSk7Ci0gICAgbWFpbl9tc2coXygiLW5vdGlwXHRcdERpc2FibGUgdGhlIHRpcCBkaWFsb2ciKSk7Ci0jZW5kaWYKLSAgICBtYWluX21zZyhfKCItZm9udCA8Zm9udD5cdFx0VXNlIDxmb250PiBmb3Igbm9ybWFsIHRleHQgKGFsc286IC1mbikiKSk7Ci0gICAgbWFpbl9tc2coXygiLWdlb21ldHJ5IDxnZW9tPlx0VXNlIDxnZW9tPiBmb3IgaW5pdGlhbCBnZW9tZXRyeSAoYWxzbzogLWdlb20pIikpOwotICAgIG1haW5fbXNnKF8oIi0tZGlzcGxheSA8ZGlzcGxheT5cdFJ1biB2aW0gb24gPGRpc3BsYXk+IikpOwotI2VuZGlmCiAjaWZkZWYgRkVBVF9HVUlfVzMyCiAgICAgbWFpbl9tc2coXygiLVAgPHBhcmVudCB0aXRsZT5cdE9wZW4gVmltIGluc2lkZSBwYXJlbnQgYXBwbGljYXRpb24iKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9tZW51LmMgYi9zcmMvbWVudS5jCmluZGV4IDRlMjIwYzcuLjIwODMyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9tZW51LmMKKysrIGIvc3JjL21lbnUuYwpAQCAtOTYsNyArOTYsNyBAQAogICAgIGNoYXJfdQkqYXJnOwogICAgIGNoYXJfdQkqcDsKICAgICBpbnQJCWk7Ci0jaWYgZGVmaW5lZChGRUFUX0dVSSkgJiYgIWRlZmluZWQoRkVBVF9HVUlfR1RLKSAmJiAhZGVmaW5lZChGRUFUX0dVSV9LREUpCisjaWYgZGVmaW5lZChGRUFUX0dVSSkgJiYgIWRlZmluZWQoRkVBVF9HVUlfR1RLKQogICAgIGludAkJb2xkX21lbnVfaGVpZ2h0OwogIyBpZiBkZWZpbmVkKEZFQVRfVE9PTEJBUikgJiYgIWRlZmluZWQoRkVBVF9HVUlfVzMyKSAmJiAhZGVmaW5lZChGRUFUX0dVSV9XMTYpCiAgICAgaW50CQlvbGRfdG9vbGJhcl9oZWlnaHQ7CkBAIC0zMTUsNyArMzE1LDcgQEAKIAlFTVNHKF8oZV90cmFpbGluZykpOwogCWdvdG8gdGhlZW5kOwogICAgIH0KLSNpZiBkZWZpbmVkKEZFQVRfR1VJKSAmJiAhKGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkKEZFQVRfR1VJX0tERSkgfHwgZGVmaW5lZChGRUFUX0dVSV9QSE9UT04pKQorI2lmIGRlZmluZWQoRkVBVF9HVUkpICYmICEoZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfUEhPVE9OKSkKICAgICBvbGRfbWVudV9oZWlnaHQgPSBndWkubWVudV9oZWlnaHQ7CiAjIGlmIGRlZmluZWQoRkVBVF9UT09MQkFSKSAmJiAhZGVmaW5lZChGRUFUX0dVSV9XMzIpICYmICFkZWZpbmVkKEZFQVRfR1VJX1cxNikKICAgICBvbGRfdG9vbGJhcl9oZWlnaHQgPSBndWkudG9vbGJhcl9oZWlnaHQ7CkBAIC00MzQsNyArNDM0LDcgQEAKIAl2aW1fZnJlZShtYXBfYnVmKTsKICAgICB9CiAKLSNpZiBkZWZpbmVkKEZFQVRfR1VJKSAmJiAhKGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkKEZFQVRfR1VJX0tERSkpCisjaWYgZGVmaW5lZChGRUFUX0dVSSkgJiYgIShkZWZpbmVkKEZFQVRfR1VJX0dUSykpCiAgICAgLyogSWYgdGhlIG1lbnViYXIgaGVpZ2h0IGNoYW5nZWQsIHJlc2l6ZSB0aGUgd2luZG93ICovCiAgICAgaWYgKGd1aS5pbl91c2UKIAkgICAgJiYgKGd1aS5tZW51X2hlaWdodCAhPSBvbGRfbWVudV9oZWlnaHQKQEAgLTE4MzUsOCArMTgzNSw4IEBACiAgICAgfQogfQogCi0jaWYgZGVmaW5lZChGRUFUX0dVSV9NU1dJTikgfHwgZGVmaW5lZChGRUFUX0dVSV9NT1RJRikgfHwgZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfS0RFKSBcCi0gICAgfHwgZGVmaW5lZChGRUFUX0dVSV9QSE9UT04pIHx8IGRlZmluZWQoUFJPVE8pCisjaWYgZGVmaW5lZChGRUFUX0dVSV9NU1dJTikgfHwgZGVmaW5lZChGRUFUX0dVSV9NT1RJRikgXAorICAgIHx8IGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkKEZFQVRfR1VJX1BIT1RPTikgfHwgZGVmaW5lZChQUk9UTykKIC8qCiAgKiBDaGVjayBpZiBhIGtleSBpcyB1c2VkIGFzIGEgbW5lbW9uaWMgZm9yIGEgdG9wbGV2ZWwgbWVudS4KICAqIENhc2Ugb2YgdGhlIGtleSBpcyBpZ25vcmVkLgpAQCAtMjE4Niw3ICsyMTg2LDYgQEAKIH0KIAogI2lmIGRlZmluZWQoRkVBVF9HVUlfTVNXSU4pIFwKLQl8fCAoZGVmaW5lZChGRUFUX0dVSV9LREUpICYmIGRlZmluZWQoRkVBVF9NRU5VKSkgXAogCXx8IChkZWZpbmVkKEZFQVRfR1VJX0dUSykgJiYgZGVmaW5lZChGRUFUX01FTlUpKSBcCiAJfHwgZGVmaW5lZChGRUFUX0JFVkFMX1RJUCkgfHwgZGVmaW5lZChQUk9UTykKIC8qCmRpZmYgLS1naXQgYS9zcmMvb3NfbWFjLmJ1aWxkIGIvc3JjL29zX21hYy5idWlsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0YzAzNy4uMDAwMDAwMAotLS0gYS9zcmMvb3NfbWFjLmJ1aWxkCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotc2V0IDY4a1RhcmdldCAiNjhrIgotc2V0IHBwY1RhcmdldCAicHBjIgotc2V0IGNhcmJvblRhcmdldCAiY2FyYm9uIgotc2V0IHZpbVRhcmdldHMgImBnZXRsaXN0aXRlbSAtbSAiIFNlbGVjdCB0aGUgdmltIHRhcmdldCBwbGF0Zm9ybSIgLWMgLXEgIns2OGtUYXJnZXR9IiAie3BwY1RhcmdldH0iICJ7Y2FyYm9uVGFyZ2V0fSJgIgotaWYgISJ7dmltVGFyZ2V0c30iCi0gICBlY2hvICJObyBNYWtlZmlsZSBjcmVhdGVkIgotICAgZXhpdCAwCi1lbmQKLSMKLXNldCBnZW5lcmFsU291cmNlcyAiYnVmZmVyLmMgY2hhcnNldC5jIGRpZmYuYyBkaWdyYXBoLmMgZWRpdC5jIGV2YWwuYyBleF9jbWRzLmMgZXhfY21kczIuYyBleF9kb2NtZC5jIGV4X2V2YWwuYyBleF9nZXRsbi5jIGZpbGVpby5jIGZvbGQuYyBnZXRjaGFyLmMgZ3VpLmMgZ3VpX21hYy5jIGlmX2NzY29wZS5jIG1haW4uYyBtYXJrLmMgbWVtZmlsZS5jIG1lbWxpbmUuYyBtZW51LmMgbWVzc2FnZS5jIG1pc2MxLmMgbWlzYzIuYyBtb3ZlLmMgbWJ5dGUuYyBub3JtYWwuYyBvcHMuYyBvcHRpb24uYyBvc19tYWMuYyBwdHkuYyBxdWlja2ZpeC5jIHJlZ2V4cC5jIHNjcmVlbi5jIHNlYXJjaC5jIHRhZy5jIHRlcm0uYyB0ZXJtbGliLmMgdWkuYyB1bmRvLmMgdmVyc2lvbi5jIHdpbmRvdy5jIgotc2V0IGdlbmVyYWxPcHRzICItYXBwIC1jICdWSU0hJyAtdCAnQVBQTCcgLWkgOnByb3RvIgotc2V0IGdlbmVyYWxDT3B0cyAiLXcgMiwzNSAtZW51bSBpbnQiCi1zZXQgZ2VuZXJhbExPcHRzICItbWYgLWQiCi1zZXQgZ2VuZXJhbExpYnMgIiIKLSMKLSMKLXNldCA2OGtTb3VyY2VzICIiCi1zZXQgNjhrT3B0cyAiLW1vZGVsIGZhciIKLXNldCA2OGtDT3B0cyAiIgotc2V0IDY4a0xPcHRzICIiCi1zZXQgNjhrTGlicyAiIgotIwotc2V0IHBwY1NvdXJjZXMgInN5bnRheC5jIgotc2V0IHBwY09wdHMgIi1wb3dlcnBjIgotc2V0IHBwY0NPcHRzICIiCi1zZXQgcHBjTE9wdHMgIntTaGFyZWRMaWJyYXJpZXN9QXBwZWFyYW5jZUxpYiIKLXNldCBwcGNMaWJzICJ7U2hhcmVkTGlicmFyaWVzfUNvbnRleHR1YWxNZW51IgotIwotc2V0IGNhcmJvblNvdXJjZXMgIiIKLXNldCBjYXJib25PcHRzICItY2FyYm9uIgotc2V0IGNhcmJvbkNPcHRzICItZCBUQVJHRVRfQVBJX01BQ19DQVJCT04iCi1zZXQgY2FyYm9uTE9wdHMgIiIKLXNldCBjYXJib25MaWJzICJ7U2hhcmVkTGlicmFyaWVzfUNhcmJvbkxpYiIKLSMKLWZvciB2VGFyZ2V0IGluIHt2aW1UYXJnZXRzfQotICAgc2V0IHZTb3VyY2VzICJ7Z2VuZXJhbFNvdXJjZXN9IgotICAgc2V0IHZMaWJzICJ7Z2VuZXJhbExpYnN9IgotICAgc2V0IHZPcHRzICJ7Z2VuZXJhbE9wdHN9IgotICAgc2V0IHZDT3B0cyAie2dlbmVyYWxDT3B0c30iCi0gICBzZXQgdkxPcHRzICJ7Z2VuZXJhbExPcHRzfSIKLSAgIHNldCBwcGMgIiIKLSAgIGlmICJ7dlRhcmdldH0iID09ICJ7NjhrVGFyZ2V0fSIKLSAgICAgIHNldCB2U291cmNlcyAie3ZTb3VyY2VzfSB7NjhrU291cmNlc30iCi0gICAgICBzZXQgdk9wdHMgInt2T3B0c30gezY4a09wdHN9IgotICAgICAgc2V0IHZMaWJzICJ7dkxpYnN9IHs2OGtMaWJzfSIKLSAgICAgIGlmICAiezY4a0NPcHRzfSIKLSAgICAgICAgIHNldCB2Q09wdHMgInt2Q09wdHN9IHs2OGtDT3B0c30iCi0gICAgICBlbmQKLSAgICAgIGlmICAiezY4a0xPcHRzfSIKLSAgICAgICAgIHNldCB2TE9wdHMgInt2TE9wdHN9IHs2OGtMT3B0c30iCi0gICAgICBlbmQKLSAgIGVsc2UKLSAgICAgIHNldCBwcGMgInBwYyIKLSAgICAgIHNldCB2U291cmNlcyAie3ZTb3VyY2VzfSB7cHBjU291cmNlc30iCi0gICAgICBzZXQgdk9wdHMgInt2T3B0c30ge3BwY09wdHN9IgotICAgICAgc2V0IHZMaWJzICJ7dkxpYnN9IHtwcGNMaWJzfSIKLSAgICAgIGlmICAie3BwY0NPcHRzfSIKLSAgICAgICAgIHNldCB2Q09wdHMgInt2Q09wdHN9IHtwcGNDT3B0c30iCi0gICAgICBlbmQKLSAgICAgIGlmICAie3BwY0xPcHRzfSIKLSAgICAgICAgIHNldCB2TE9wdHMgInt2TE9wdHN9IHtwcGNMT3B0c30iCi0gICAgICBlbmQKLSAgICAgIGlmICJ7dlRhcmdldH0iID09ICJ7Y2FyYm9uVGFyZ2V0fSIKLSAgICAgICAgIHNldCB2U291cmNlcyAie3ZTb3VyY2VzfSB7Y2FyYm9uU291cmNlc30iCi0gICAgICAgICBzZXQgdkxpYnMgInt2TGlic30ge2NhcmJvbkxpYnN9IgotICAgICAgICAgc2V0IHZPcHRzICJ7dk9wdHN9IHtjYXJib25PcHRzfSIKLSAgICAgICAgIGlmICAie2NhcmJvbkNPcHRzfSIKLSAgICAgICAgICAgIHNldCB2Q09wdHMgInt2Q09wdHN9IHtjYXJib25DT3B0c30iCi0gICAgICAgICBlbmQKLSAgICAgICAgIGlmICAie2NhcmJvbkxPcHRzfSIKLSAgICAgICAgICAgIHNldCB2TE9wdHMgInt2TE9wdHN9IHtjYXJib25MT3B0c30iCi0gICAgICAgICBlbmQKLSAgICAgIGVuZAotICAgZW5kCi0gICBzZXQgdk9EaXIgOm9iai17dlRhcmdldH06Ci0gICBpZiAhImBleGlzdHMgLWQge3ZPZGlyfWAiCi0gICAgICBuZXdGb2xkZXIge3ZPRGlyfQotICAgZW5kCi0gICBzZXQgdkFwcCB2aW0te3ZUYXJnZXR9Ci0gICBpZiAie3ZDT3B0c30iCi0gICAgICBzZXQgdk9wdHMgInt2T3B0c30gLXtwcGN9Q09wdGlvbnMgJ3t2Q09wdHN9JyIKLSAgIGVuZAotICAgaWYgInt2TE9wdHN9IgotICAgICAgc2V0IHZPcHRzICJ7dk9wdHN9IC17cHBjfUxpbmtPcHRpb25zICd7dkxPcHRzfSciCi0gICBlbmQKLSAgIHNldCB2T3B0cyAie3ZPcHRzfSAtb2JqZGlyIHt2T0Rpcn0iCi0gICBjcmVhdGVtYWtlIHt2QXBwfSB7dk9wdHN9IHt2U291cmNlc30ge3ZMaWJzfQotICAgaWYgIXtTdGF0dXN9Ci0gICAgICBlY2hvICJNYWtlZmlsZSBmb3Ige3ZBcHB9IHN1Y2Nlc3NmdWxseSBjcmVhdGVkIgotICAgZW5kCi1lbmQKZGlmZiAtLWdpdCBhL3NyYy9vc19tYWMuYyBiL3NyYy9vc19tYWMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmYjExYy4uMDAwMDAwMAotLS0gYS9zcmMvb3NfbWFjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjc5ICswLDAgQEAKLS8qIHZpOnNldCB0cz04IHN0cz00IHN3PTQ6Ci0gKgotICogVklNIC0gVmkgSU1wcm92ZWQJCWJ5IEJyYW0gTW9vbGVuYWFyCi0gKgotICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCi0gKiBEbyAiOmhlbHAgY3JlZGl0cyIgaW4gVmltIHRvIHNlZSBhIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZC4KLSAqIFNlZSBSRUFETUUudHh0IGZvciBhbiBvdmVydmlldyBvZiB0aGUgVmltIHNvdXJjZSBjb2RlLgotICovCi0KLS8qCi0gKiBvc19tYWMuYyAtLSBjb2RlIGZvciB0aGUgTWFjT1MKLSAqCi0gKiBUaGlzIGZpbGUgaXMgbWFpbmx5IGJhc2VkIG9uIG9zX3VuaXguYy4KLSAqLwotCi0jaW5jbHVkZSAidmltLmgiCi0KLSNpZiBkZWZpbmVkKF9fTVJDX18pIHx8IGRlZmluZWQoX19TQ19fKSAvKiBmb3IgQXBwbGUgTVBXIENvbXBpbGVycyAqLwotCi0jaW5jbHVkZSAiU3RhbmRhcmRGaWxlLmgiCi0KLS8qCi0gKiBJbXBsZW1lbnRzIHRoZSBjb3JyZXNwb25kaW5nIHVuaXggZnVuY3Rpb24KLSAqLwotICAgIGludAotc3RhdCgKLSAgICBjaGFyICpwLAotICAgIHN0cnVjdCBzdGF0ICpwX3N0KQotewotICAgIC8qCi0gICAgICAgVE9ETzogVXNlIGZ1bmN0aW9ucyB3aGljaCBmaWxsIHRoZSBGaWxlUGFyYW0gc3RydWN0IChGaWxlcy5oKQotCSAgICAgYW5kIGNvcHkgdGhlc2UgY29udGVudHMgdG8gb3VyIHNlbGYtZGVmaW5lZCBzdGF0IHN0cnVjdAotICAgICAqLwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLS8qCi0gKiBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAqLwotICAgIGludAotbWNoX2NoZGlyKGNoYXIgKnBfbmFtZSkKLXsKLSNpZiBkZWZpbmVkKF9fTVJDX18pIHx8IGRlZmluZWQoX19TQ19fKSAvKiBmb3IgQXBwbGUgTVBXIENvbXBpbGVycyAqLwotICAgIC8qIFRPRE8gKi8KLSAgICByZXR1cm4gRkFJTDsKLSNlbHNlCi0gICAgcmV0dXJuIGNoZGlyKHBfbmFtZSk7Ci0jZW5kaWYKLX0KLQotCi0vKgotICogUmVjdXJzaXZlbHkgYnVpbGQgdXAgYSBsaXN0IG9mIGZpbGVzIGluICJnYXAiIG1hdGNoaW5nIHRoZSBmaXJzdCB3aWxkY2FyZAotICogaW4gYHBhdGgnLiAgQ2FsbGVkIGJ5IG1jaF9leHBhbmRwYXRoKCkuCi0gKiAicGF0aCIgaGFzIGJhY2tzbGFzaGVzIGJlZm9yZSBjaGFycyB0aGF0IGFyZSBub3QgdG8gYmUgZXhwYW5kZWQuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1tYWNfZXhwYW5kcGF0aCgKLSAgICBnYXJyYXlfVAkqZ2FwLAotICAgIGNoYXJfdQkqcGF0aCwKLSAgICBpbnQJCWZsYWdzLAkJLyogRVdfKiBmbGFncyAqLwotICAgIHNob3J0CXN0YXJ0X2F0LAotICAgIHNob3J0CWFzX2Z1bGwpCi17Ci0gICAgLyoKLSAgICAgKiBUT0RPOgotICAgICAqCQkrR2V0IFZvbHVtZXMgKHdoZW4gbG9va2luZyBmb3IgZmlsZXMgaW4gY3VycmVudCBkaXIpCi0gICAgICoJCStNYWtlIGl0IHdvcmsgd2hlbiB3b3JraW5nIGRpciBub3Qgb24gc2VsZWN0IHZvbHVtZQotICAgICAqCQkrQ2xlYW51cAotICAgICAqLwotICAgIHNob3J0CWluZGV4ID0gMTsKLSAgICBPU0VycglnRXJyOwotICAgIGNoYXJfdQlkaXJuYW1lWzI1Nl07Ci0gICAgY2hhcl91CWNmaWxlbmFtZVsyNTZdOwotICAgIGxvbmcJZGlySUQ7Ci0gICAgY2hhcl91CSpuZXdfbmFtZTsKLSAgICBDSW5mb1BCUmVjCWdNeUNQQjsKLSAgICBIUGFyYW1CbG9ja1JlYyBnTXlIUEJsb2NrOwotICAgIEZTU3BlYwl1c2VkRGlyOwotCi0gICAgY2hhcl91CSpidWY7Ci0gICAgY2hhcl91CSpwLCAqcywgKmUsIGRhbnk7Ci0gICAgaW50CQlzdGFydF9sZW4sIGM7Ci0gICAgY2hhcl91CSpwYXQ7Ci0gICAgcmVnbWF0Y2hfVAlyZWdtYXRjaDsKLQotICAgIHN0YXJ0X2xlbiA9IGdhcC0+Z2FfbGVuOwotICAgIGJ1ZiA9IGFsbG9jKFNUUkxFTihwYXRoKSArIEJBU0VOQU1FTEVOICsgNSk7LyogbWFrZSByb29tIGZvciBmaWxlIG5hbWUgKi8KLSAgICBpZiAoYnVmID09IE5VTEwpCi0JcmV0dXJuIDA7Ci0KLS8qCi0gKiBGaW5kIHRoZSBmaXJzdCBwYXJ0IGluIHRoZSBwYXRoIG5hbWUgdGhhdCBjb250YWlucyBhIHdpbGRjYXJkLgotICogQ29weSBpdCBpbnRvIGJ1ZiwgaW5jbHVkaW5nIHRoZSBwcmVjZWRpbmcgY2hhcmFjdGVycy4KLSAqLwotICAgIHAgPSBidWY7Ci0gICAgcyA9IGJ1ZjsKLSAgICBlID0gTlVMTDsKLSNpZiAxCi0gICAgU1RSTkNQWShidWYsIHBhdGgsIHN0YXJ0X2F0KTsKLSAgICBwICs9IHN0YXJ0X2F0OwotICAgIHBhdGggKz0gc3RhcnRfYXQ7Ci0jZW5kaWYKLQotICAgIHdoaWxlICgqcGF0aCkKLSAgICB7Ci0JaWYgKCpwYXRoID09ICc6JykKLQl7Ci0JICAgIGlmIChlKQotCQlicmVhazsKLQkgICAgcyA9IHAgKyAxOwotCX0KLQkvKiBzaG91bGQgdXNlICBXSUxDQVJETElTVCBidXQgd2hhdCBhYm91dCBgICovCi0JLyoJICAgIGlmICh2aW1fc3RyY2hyKChjaGFyX3UgKikiKj9be34kIiwgKnBhdGgpICE9IE5VTEwpKi8KLQllbHNlIGlmICh2aW1fc3RyY2hyKChjaGFyX3UgKilXSUxEQ0hBUl9MSVNULCAqcGF0aCkgIT0gTlVMTCkKLQkgICAgZSA9IHA7Ci0jaWZkZWYgRkVBVF9NQllURQotCWlmIChoYXNfbWJ5dGUpCi0JewotCSAgICBpbnQgbGVuID0gKCptYl9wdHIybGVuKShwYXRoKTsKLQotCSAgICBTVFJOQ1BZKHAsIHBhdGgsIGxlbik7Ci0JICAgIHAgKz0gbGVuOwotCSAgICBwYXRoICs9IGxlbjsKLQl9Ci0JZWxzZQotI2VuZGlmCi0JICAgICpwKysgPSAqcGF0aCsrOwotICAgIH0KLSAgICBlID0gcDsKLQotICAgIC8qIG5vdyB3ZSBoYXZlIG9uZSB3aWxkY2FyZCBjb21wb25lbnQgYmV0d2VlbiBzIGFuZCBlICovCi0gICAgKmUgPSBOVUw7Ci0KLSAgICBkYW55ID0gKnM7Ci0gICAgKnMgPSBOVUw7Ci0gICAgYmFja3NsYXNoX2hhbHZlKGJ1Zik7Ci0gICAgKnMgPSBkYW55OwotCi0gICAgLyogY29udmVydCB0aGUgZmlsZSBwYXR0ZXJuIHRvIGEgcmVnZXhwIHBhdHRlcm4gKi8KLSAgICBwYXQgPSBmaWxlX3BhdF90b19yZWdfcGF0KHMsIGUsIE5VTEwsIEZBTFNFKTsKLSAgICBpZiAocGF0ID09IE5VTEwpCi0gICAgewotCXZpbV9mcmVlKGJ1Zik7Ci0JcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyogY29tcGlsZSB0aGUgcmVnZXhwIGludG8gYSBwcm9ncmFtICovCi0gICAgcmVnbWF0Y2gucm1faWMgPSBGQUxTRTsJCQkvKiBEb24ndCBldmVyIGlnbm9yZSBjYXNlICovCi0gICAgcmVnbWF0Y2gucmVncHJvZyA9IHZpbV9yZWdjb21wKHBhdCwgUkVfTUFHSUMpOwotICAgIHZpbV9mcmVlKHBhdCk7Ci0KLSAgICBpZiAocmVnbWF0Y2gucmVncHJvZyA9PSBOVUxMKQotICAgIHsKLQl2aW1fZnJlZShidWYpOwotCXJldHVybiAwOwotICAgIH0KLQotICAgIC8qIG9wZW4gdGhlIGRpcmVjdG9yeSBmb3Igc2Nhbm5pbmcgKi8KLSAgICBjID0gKnM7Ci0gICAgKnMgPSBOVUw7Ci0KLSAgICBpZiAoKmJ1ZiA9PSBOVUwpCi0gICAgewotCWFzX2Z1bGwgPSBUUlVFOwotI2lmIDAKLQkodm9pZCkgbWNoX2Rpcm5hbWUgKCZkaXJuYW1lWzFdLCAyNTQpOwotCWRpcm5hbWVbMF0gPSBTVFJMRU4oJmRpcm5hbWVbMV0pOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JaWYgKCpidWYgPT0gJzonKSAgLyogcmVsYXRpdmUgcGF0aCAqLwotCXsKLQkgICAgKHZvaWQpbWNoX2Rpcm5hbWUoJmRpcm5hbWVbMV0sIDI1NCk7Ci0JICAgIG5ld19uYW1lID0gY29uY2F0X2ZuYW1lcygmZGlybmFtZVsxXSwgYnVmKzEsIFRSVUUpOwotCSAgICBTVFJDUFkoJmRpcm5hbWVbMV0sIG5ld19uYW1lKTsKLQkgICAgZGlybmFtZVswXSA9IFNUUkxFTihuZXdfbmFtZSk7Ci0JICAgIHZpbV9mcmVlKG5ld19uYW1lKTsKLQl9Ci0JZWxzZQotCXsKLQkgICAgU1RSQ1BZKCZkaXJuYW1lWzFdLCBidWYpOwotCSAgICBiYWNrc2xhc2hfaGFsdmUoJmRpcm5hbWVbMV0pOwotCSAgICBkaXJuYW1lWzBdID0gU1RSTEVOKGJ1Zik7Ci0JfQotICAgIH0KLSAgICAqcyA9IGM7Ci0KLSAgICBGU01ha2VGU1NwZWMgKDAsIDAsIGRpcm5hbWUsICZ1c2VkRGlyKTsKLQotICAgIGdNeUNQQi5kaXJJbmZvLmlvTmFtZVB0ciAgICA9IGRpcm5hbWU7Ci0gICAgZ015Q1BCLmRpckluZm8uaW9WUmVmTnVtICAgID0gdXNlZERpci52UmVmTnVtOwotICAgIGdNeUNQQi5kaXJJbmZvLmlvRkRpckluZGV4ICA9IDA7Ci0gICAgZ015Q1BCLmRpckluZm8uaW9EckRpcklEICAgID0gMDsKLQotICAgIGdFcnIgPSBQQkdldENhdEluZm8oJmdNeUNQQiwgZmFsc2UpOwotCi0gICAgZ015Q1BCLmRpckluZm8uaW9Db21wbGV0aW9uID0gTlVMTDsKLSAgICBkaXJJRCA9IGdNeUNQQi5kaXJJbmZvLmlvRHJEaXJJRDsKLSAgICBkbwotICAgIHsKLQlnTXlDUEIuaEZpbGVJbmZvLmlvRkRpckluZGV4ID0gaW5kZXg7Ci0JZ015Q1BCLmhGaWxlSW5mby5pb0RpcklEICAgICA9IGRpcklEOwotCi0JZ0VyciA9IFBCR2V0Q2F0SW5mbygmZ015Q1BCLCBmYWxzZSk7Ci0KLQlpZiAoZ0VyciA9PSBub0VycikKLQl7Ci0JICAgIHZpbV9zdHJuY3B5KGNmaWxlbmFtZSwgJmRpcm5hbWVbMV0sIGRpcm5hbWVbMF0pOwotCSAgICBpZiAodmltX3JlZ2V4ZWMoJnJlZ21hdGNoLCBjZmlsZW5hbWUsIChjb2xucl9UKTApKQotCSAgICB7Ci0JCWlmIChzWy0xXSAhPSAnOicpCi0JCXsKLQkJICAgIC8qIFRPRE86IG5lZWQgdG8gY29weSB3aXRoIGNsZWFuZWQgbmFtZSAqLwotCQkgICAgU1RSQ1BZKHMrMSwgY2ZpbGVuYW1lKTsKLQkJICAgIHNbMF0gPSAnOic7Ci0JCX0KLQkJZWxzZQotCQl7ICAgLyogVE9ETzogbmVlZCB0byBjb3B5IHdpdGggY2xlZWFuZWQgbmFtZSAqLwotCQkgICAgU1RSQ1BZKHMsIGNmaWxlbmFtZSk7Ci0JCX0KLQkJc3RhcnRfYXQgPSBTVFJMRU4oYnVmKTsKLQkJU1RSQ0FUKGJ1ZiwgcGF0aCk7Ci0JCWlmIChtY2hfaGFzX2V4cF93aWxkY2FyZChwYXRoKSkJLyogaGFuZGxlIG1vcmUgd2lsZGNhcmRzICovCi0JCSAgICAodm9pZCltYWNfZXhwYW5kcGF0aChnYXAsIGJ1ZiwgZmxhZ3MsIHN0YXJ0X2F0LCBGQUxTRSk7Ci0JCWVsc2UKLQkJewotI2lmZGVmIERPTlRfQUREX1BBVEhTRVBfVE9fRElSCi0JCSAgICBpZiAoKGdNeUNQQi5oRmlsZUluZm8uaW9GbEF0dHJpYiAmIGlvRGlyTWFzaykgIT0wICkKLQkJCVNUUkNBVChidWYsIFBBVEhTRVBTVFIpOwotI2VuZGlmCi0JCSAgICBhZGRmaWxlKGdhcCwgYnVmLCBmbGFncyk7Ci0JCX0KLQkgICAgfQotI2lmIDAJLyogV2hhdCBpcyB0aGlzIHN1cHBvc2VkIHRvIGRvPyAqLwotCSAgICBpZiAoKGdNeUNQQi5oRmlsZUluZm8uaW9GbEF0dHJpYiAmIGlvRGlyTWFzaykgIT0gMCkKLQkgICAgewotCSAgICB9Ci0JICAgIGVsc2UKLQkgICAgewotCSAgICB9Ci0jZW5kaWYKLQl9Ci0JaW5kZXgrKzsKLSAgICB9Ci0gICAgd2hpbGUgKGdFcnIgPT0gbm9FcnIpOwotCi0gICAgaWYgKGFzX2Z1bGwpCi0gICAgewotCWluZGV4ID0gMTsKLQlkbwotCXsKLQkgICAgZ015SFBCbG9jay52b2x1bWVQYXJhbS5pb05hbWVQdHIgPSAoY2hhcl91ICopIGRpcm5hbWU7Ci0JICAgIGdNeUhQQmxvY2sudm9sdW1lUGFyYW0uaW9WUmVmTnVtID0gMDsKLQkgICAgZ015SFBCbG9jay52b2x1bWVQYXJhbS5pb1ZvbEluZGV4ID0gaW5kZXg7Ci0KLQkgICAgZ0VyciA9IFBCSEdldFZJbmZvICgmZ015SFBCbG9jayxmYWxzZSk7Ci0JICAgIGlmIChnRXJyID09IG5vRXJyKQotCSAgICB7Ci0JCXZpbV9zdHJuY3B5KGNmaWxlbmFtZSwgJmRpcm5hbWVbMV0sIGRpcm5hbWVbMF0pOwotCQlpZiAodmltX3JlZ2V4ZWMoJnJlZ21hdGNoLCBjZmlsZW5hbWUsIChjb2xucl9UKTApKQotCQl7Ci0JCSAgICBTVFJDUFkocywgY2ZpbGVuYW1lKTsKLQkJICAgIFNUUkNBVChidWYsIHBhdGgpOwotCQkgICAgaWYgKG1jaF9oYXNfZXhwX3dpbGRjYXJkKHBhdGgpKSAvKiBoYW5kbGUgbW9yZSB3aWxkY2FyZHMgKi8KLQkJCSh2b2lkKW1hY19leHBhbmRwYXRoKGdhcCwgcywgZmxhZ3MsIDAsIEZBTFNFKTsKLQkJICAgIGVsc2UKLQkJICAgIHsKLSNpZmRlZiBET05UX0FERF9QQVRIU0VQX1RPX0RJUgotLyoJCQlpZiAoKGdNeUNQQi5oRmlsZUluZm8uaW9GbEF0dHJpYiAmIGlvRGlyTWFzaykgIT0wICkKLSovCQkJICAgIFNUUkNBVChidWYsIFBBVEhTRVBTVFIpOwotI2VuZGlmCi0JCQlhZGRmaWxlKGdhcCwgcywgZmxhZ3MpOwotCQkgICAgfQotI2lmIDAKLQkJICAgIFNUUkNBVChjZmlsZW5hbWUsIFBBVEhTRVBTVFIpOwotCQkgICAgYWRkZmlsZSAoZ2FwLCBjZmlsZW5hbWUsIGZsYWdzKTsKLSNlbmRpZgotCQl9Ci0JICAgIH0KLQkgICAgaW5kZXgrKzsKLQl9Ci0Jd2hpbGUgKGdFcnIgPT0gbm9FcnIpOwotICAgIH0KLQotICAgIHZpbV9mcmVlKHJlZ21hdGNoLnJlZ3Byb2cpOwotCi0gICAgcmV0dXJuIGdhcC0+Z2FfbGVuIC0gc3RhcnRfbGVuOwotfQotCi0vKgotICogUmVjdXJzaXZlbHkgYnVpbGQgdXAgYSBsaXN0IG9mIGZpbGVzIGluICJnYXAiIG1hdGNoaW5nIHRoZSBmaXJzdCB3aWxkY2FyZAotICogaW4gYHBhdGgnLiAgQ2FsbGVkIGJ5IGV4cGFuZF93aWxkY2FyZHMoKS4KLSAqICJwYXQiIGhhcyBiYWNrc2xhc2hlcyBiZWZvcmUgY2hhcnMgdGhhdCBhcmUgbm90IHRvIGJlIGV4cGFuZGVkLgotICovCi0gICAgaW50Ci1tY2hfZXhwYW5kcGF0aCgKLSAgICBnYXJyYXlfVAkqZ2FwLAotICAgIGNoYXJfdQkqcGF0aCwKLSAgICBpbnQJCWZsYWdzKQkJLyogRVdfKiBmbGFncyAqLwotewotI2lmZGVmIFVTRV9VTklYRklMRU5BTUUKLSAgICByZXR1cm4gdW5peF9leHBhbmRwYXRoKGdhcCwgcGF0aCwgMCwgZmxhZ3MsIEZBTFNFKTsKLSNlbHNlCi0gICAgY2hhcl91IGZpcnN0ID0gKnBhdGg7Ci0gICAgc2hvcnQgIHNjYW5fdm9sdW1lOwotCi0gICAgc2xhc2hfbl9jb2xvbl9hZGp1c3QocGF0aCk7Ci0KLSAgICBzY2FuX3ZvbHVtZSA9IChmaXJzdCAhPSAqcGF0aCk7Ci0KLSAgICByZXR1cm4gbWFjX2V4cGFuZHBhdGgoZ2FwLCBwYXRoLCBmbGFncywgMCwgc2Nhbl92b2x1bWUpOwotI2VuZGlmCi19Ci0KLSAgICB2b2lkCi1mbmFtZV9jYXNlKG5hbWUsIGxlbikKLSAgICBjaGFyX3UJKm5hbWU7Ci0gICAgaW50CQlsZW47CSAgICAvKiBidWZmZXIgc2l6ZSwgaWdub3JlZCBoZXJlICovCi17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBnZXQgdGhlIHJlYWwgY2FzaW5nIGZvciB0aGUgZmlsZQotICAgICAqICAgICAgIG1ha2UgaXQgY2FsbGVkCi0gICAgICogICAgICAgd2l0aCBVU0VfRk5BTUVfQ0FTRSAmIFVTRV9MT05HX0ZOQU1FCi0gICAgICoJCSAgICBDQVNFX0lOU0VOU0lUSVZFX0ZJTEVOQU1FCi0gICAgICogICAgICAgd2l0aGluIHNldGZuYW1lLCBmaXhfZm5hbWUsIGRvX2VjbWQKLSAgICAgKi8KLSNpZmRlZiBVU0VfVU5JWEZJTEVOQU1FCi0gICAgT1NTdGF0dXMJc3RhdHVzOwotICAgIEZTUmVmCXJlZkZpbGU7Ci0gICAgVUludDMyCXBhdGhTaXplID0gU1RSTEVOKG5hbWUpICsgMTsKLSAgICBjaGFyX3UJKnBhdGg7Ci0gICAgQm9vbGVhbglpc0RpcmVjdG9yeTsKLQotICAgIHBhdGggPSBhbGxvYyhwYXRoU2l6ZSk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKLQlyZXR1cm47Ci0KLSAgICBzdGF0dXMgPSBGU1BhdGhNYWtlUmVmKChVSW50OCAqKW5hbWUsICZyZWZGaWxlLCAmaXNEaXJlY3RvcnkpOwotICAgIGlmIChzdGF0dXMpCi0JcmV0dXJuOwotCi0gICAgc3RhdHVzID0gRlNSZWZNYWtlUGF0aCgmcmVmRmlsZSwgKFVJbnQ4ICopcGF0aCwgcGF0aFNpemUpOwotICAgIGlmIChzdGF0dXMpCi0JcmV0dXJuOwotCi0gICAgLyogUGFyYW5vaWQ6IFVwZGF0ZSB0aGUgbmFtZSBpZiBvbmx5IHRoZSBjYXNpbmcgZGlmZmVyLiovCi0gICAgaWYgKFNUUklDTVAobmFtZSwgcGF0aCkgPT0gMCkKLQlTVFJDUFkobmFtZSwgcGF0aCk7Ci0jZW5kaWYKLX0KLXN0YXRpYyBjaGFyX3UJKm9sZHRpdGxlID0gKGNoYXJfdSAqKSAiZ1ZpbSI7Ci0KLS8qCi0gKiBjaGVjayBmb3IgYW4gImludGVycnVwdCBzaWduYWwiOiBDVFJMLWJyZWFrIG9yIENUUkwtQwotICovCi0gICAgdm9pZAotbWNoX2JyZWFrY2hlY2soKQotewotICAgIC8qCi0gICAgICogVE9ETzogU2NhbiBldmVudCBmb3IgYSBDVFJMLUMgb3IgQ09NTUFORC0uIGFuZCBkbzogZ290X2ludD1UUlVFOwotICAgICAqICAgICAgIG9yIG9ubHkgZ28gcHJvY2Nlc3MgZXZlbnQ/Ci0gICAgICogICAgICAgb3IgZG8gbm90aGluZwotICAgICAqLwotICAgIEV2ZW50UmVjb3JkIHRoZUV2ZW50OwotCi0gICAgaWYgKEV2ZW50QXZhaWwoa2V5RG93bk1hc2ssICZ0aGVFdmVudCkpCi0JaWYgKCh0aGVFdmVudC5tZXNzYWdlICYgY2hhckNvZGVNYXNrKSA9PSBDdHJsX0MgJiYgY3RybF9jX2ludGVycnVwdHMpCi0JICAgIGdvdF9pbnQgPSBUUlVFOwotI2lmIDAKLSAgICBzaG9ydAlpID0gMDsKLSAgICBCb29sZWFuICAgICBmb3VuZCA9IGZhbHNlOwotICAgIEV2ZW50UmVjb3JkIHRoZUV2ZW50OwotCi0gICAgd2hpbGUgKChpIDwgMTApICYmICghZm91bmQpKQotICAgIHsKLQlmb3VuZCA9IEV2ZW50QXZhaWwgKGtleURvd25NYXNrLCAmdGhlRXZlbnQpOwotCWlmIChmb3VuZCkKLQl7Ci0JICBpZiAoKHRoZUV2ZW50Lm1vZGlmaWVycyAmIGNvbnRyb2xLZXkpICE9IDApCi0JICAgIGZvdW5kID0gZmFsc2U7Ci0JICBpZiAoKHRoZUV2ZW50LndoYXQgPT0ga2V5RG93bikpCi0JICAgIGZvdW5kID0gZmFsc2U7Ci0JICBpZiAoKHRoZUV2ZW50Lm1lc3NhZ2UgJiBjaGFyQ29kZU1hc2spID09IEN0cmxfQykKLQkgICAgewotCQlmb3VuZCA9IGZhbHNlOwotCQlnb3RfaW50ID0gVFJVRTsKLQkgICAgfQotCX0KLQlpKys7Ci0gICAgfQotI2VuZGlmCi0KLX0KLQotLyoKLSAqIFJldHVybiBhbW91bnQgb2YgbWVtb3J5IGN1cnJlbnRseSBhdmFpbGFibGUuCi0gKi8KLSAgICBsb25nX3UKLW1jaF9hdmFpbF9tZW0oc3BlY2lhbCkKLSAgICBpbnQgICAgIHNwZWNpYWw7Ci17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBVc2UgTWF4QmxvY2ssIEZyZWVNZU0sIFB1cmdlU3BhY2UsIE1heEJsb2NrU3lzIEZBUS0yNjYKLSAgICAgKiAgICAgICBmaWd1cmUgb3V0IHdoYXQgdGhlIHNwZWNpYWwgaXMgZm9yCi0gICAgICoKLSAgICAgKiBGcmVlTWVtICAtPiAgIHJldHVybnMgYWxsIGF2YWlsIG1lbW9yeSBpcyBhcHBsaWNhdGlvbiBoZWFwCi0gICAgICogTWF4QmxvY2sgLT4gICByZXR1cm5zIHRoZSBiaWdnZXN0IGNvbnRpZ2VvdXMgYmxvY2sgaW4gYXBwbGljYXRpb24gaGVhcAotICAgICAqIFB1cmdlU3BhY2UgLT4KLSAgICAgKi8KLSAgICByZXR1cm4gTWF4QmxvY2soKTsKLX0KLQotICAgIHZvaWQKLW1jaF9kZWxheShtc2VjLCBpZ25vcmVpbnB1dCkKLSAgICBsb25nCW1zZWM7Ci0gICAgaW50CQlpZ25vcmVpbnB1dDsKLXsKLSNpZiAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBfX01XRVJLU19fID49IDB4MjAwMCkgXAotCXx8IGRlZmluZWQoX19NUkNfXykgfHwgZGVmaW5lZChfX1NDX18pCi0gICAgdW5zaWduZWQKLSNlbmRpZgotICAgIGxvbmcgICBmaW5hbFRpY2s7Ci0KLSAgICBpZiAoaWdub3JlaW5wdXQpCi0JRGVsYXkgKDYwKm1zZWMvMTAwMCwgJmZpbmFsVGljayk7Ci0gICAgZWxzZQotCS8qIGV2ZW4gdGhvdWd0aCB3ZSBzaG91bGQgY2FsbCBndWkgc3R1ZmYgZnJvbSBoZXJlCi0JICAgaXQgdGhlIHNpbXBsZXN0IHdheSB0byBiZSBzYWZlICovCi0JZ3VpX21jaF93YWl0X2Zvcl9jaGFycyhtc2VjKTsKLX0KLQotICAgIHZvaWQKLW1jaF9pbml0KCkKLXsKLSAgICAvKgotICAgICAqICBUT0RPOiBWZXJpZnkgaWYgbmVlZGVkLCBvciBvdmVycmlkZSBsYXRlci4KLSAgICAgKi8KLSAgICBDb2x1bW5zID0gODA7Ci0gICAgUm93cyA9IDI0OwotfQotCi0vKgotICogQ2hlY2tfd2luIGNoZWNrcyB3aGV0aGVyIHdlIGhhdmUgYW4gaW50ZXJhY3RpdmUgc3Rkb3V0LgotICovCi0gICAgaW50Ci1tY2hfY2hlY2tfd2luKGFyZ2MsIGFyZ3YpCi0gICAgaW50CQlhcmdjOwotICAgIGNoYXIJKiphcmd2OwotewotICAgIC8qCi0gICAgICogVE9ETzogTWF5YmUgdG8gYmUgcmVtb3ZlIHRocm91Z2ggTk9fQ09OU09MRQotICAgICAqLwotICAgIHJldHVybiBPSzsKLX0KLQotLyoKLSAqIFJldHVybiBUUlVFIGlmIHRoZSBpbnB1dCBjb21lcyBmcm9tIGEgdGVybWluYWwsIEZBTFNFIG90aGVyd2lzZS4KLSAqLwotICAgIGludAotbWNoX2lucHV0X2lzYXR0eSgpCi17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBNYXliZSB0byBiZSByZW1vdmUgdGhyb3VnaCBOT19DT05TT0xFCi0gICAgICovCi0gICAgcmV0dXJuIE9LOwotfQotCi0jaWZkZWYgRkVBVF9USVRMRQotLyoKLSAqIFNldCB0aGUgd2luZG93IHRpdGxlIGFuZCBpY29uLgotICogKFRoZSBpY29uIGlzIG5vdCB0YWtlbiBjYXJlIG9mKS4KLSAqLwotICAgIHZvaWQKLW1jaF9zZXR0aXRsZSh0aXRsZSwgaWNvbikKLSAgICBjaGFyX3UgKnRpdGxlOwotICAgIGNoYXJfdSAqaWNvbjsKLXsKLSAgICBndWlfbWNoX3NldHRpdGxlKHRpdGxlLCBpY29uKTsKLX0KLQotLyoKLSAqIFJlc3RvcmUgdGhlIHdpbmRvdy9pY29uIHRpdGxlLgotICogd2hpY2ggaXMgb25lIG9mOgotICoJMSAgSnVzdCByZXN0b3JlIHRpdGxlCi0gKiAgICAgIDIgIEp1c3QgcmVzdG9yZSBpY29uCi0gKgkzICBSZXN0b3JlIHRpdGxlIGFuZCBpY29uCi0gKiBidXQgZG9uJ3QgY2FyZSBhYm91dCB0aGUgaWNvbi4KLSAqLwotICAgIHZvaWQKLW1jaF9yZXN0b3JlX3RpdGxlKHdoaWNoKQotICAgIGludCB3aGljaDsKLXsKLSAgICBtY2hfc2V0dGl0bGUoKHdoaWNoICYgMSkgPyBvbGR0aXRsZSA6IE5VTEwsIE5VTEwpOwotfQotI2VuZGlmCi0KLS8qCi0gKiBJbnNlcnQgdXNlciBuYW1lIGluIHNbbGVuXS4KLSAqIFJldHVybiBPSyBpZiBhIG5hbWUgZm91bmQuCi0gKi8KLSAgICBpbnQKLW1jaF9nZXRfdXNlcl9uYW1lKHMsIGxlbikKLSAgICBjaGFyX3UJKnM7Ci0gICAgaW50CQlsZW47Ci17Ci0jaWYgIShkZWZpbmVkKF9fTVJDX18pIHx8IGRlZmluZWQoX19TQ19fKSkgLyogTm8gc29sdXRpb24geWV0ICovCi0gICAgLyoKLSAgICAgKiBUT0RPOiBjbGVhbiB1cCBhbmQgdHJ5IGdldGxvZ2luICgpCi0gICAgICovCi0jaWYgZGVmaW5lZChIQVZFX1BXRF9IKSAmJiBkZWZpbmVkKEhBVkVfR0VUUFdVSUQpCi0gICAgc3RydWN0IHBhc3N3ZAkqcHc7Ci0jZW5kaWYKLSAgICB1aWRfdAkJdWlkOwotCi0gICAgdWlkID0gZ2V0dWlkKCk7Ci0jaWYgZGVmaW5lZChIQVZFX1BXRF9IKSAmJiBkZWZpbmVkKEhBVkVfR0VUUFdVSUQpCi0gICAgaWYgKChwdyA9IGdldHB3dWlkKHVpZCkpICE9IE5VTEwKLQkgICAgJiYgcHctPnB3X25hbWUgIT0gTlVMTCAmJiAqKHB3LT5wd19uYW1lKSAhPSBOVUwpCi0gICAgewotCXZpbV9zdHJuY3B5KHMsIHB3LT5wd19uYW1lLCBsZW4gLSAxKTsKLQlyZXR1cm4gT0s7Ci0gICAgfQotI2VuZGlmCi0gICAgc3ByaW50ZigoY2hhciAqKXMsICIlZCIsIChpbnQpdWlkKTsJCS8qIGFzc3VtZXMgcyBpcyBsb25nIGVub3VnaCAqLwotI2VuZGlmCi0gICAgcmV0dXJuIEZBSUw7CQkJCS8qIGEgbnVtYmVyIGlzIG5vdCBhIG5hbWUgKi8KLX0KLQotLyoKLSAqIENvcHkgaG9zdCBuYW1lIGludG8gc1tsZW5dLgotICovCi0gICAgdm9pZAotbWNoX2dldF9ob3N0X25hbWUocywgbGVuKQotICAgIGNoYXJfdQkqczsKLSAgICBpbnQJCWxlbjsKLXsKLSNpZiBkZWZpbmVkKF9fTVJDX18pIHx8IGRlZmluZWQoX19TQ19fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykKLSAgICB2aW1fc3RybmNweShzLCAiTWFjIiwgbGVuIC0gMSk7IC8qIFRPRE86IHVzZSBHZXN0YWx0IGluZm9ybWF0aW9uICovCi0jZWxzZQotICAgIHN0cnVjdCB1dHNuYW1lIHZ1dHNuYW1lOwotCi0gICAgaWYgKHVuYW1lKCZ2dXRzbmFtZSkgPCAwKQotCSpzID0gTlVMOwotICAgIGVsc2UKLQl2aW1fc3RybmNweShzLCB2dXRzbmFtZS5ub2RlbmFtZSwgbGVuIC0gMSk7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIHJldHVybiBwcm9jZXNzIElECi0gKi8KLSAgICBsb25nCi1tY2hfZ2V0X3BpZCgpCi17Ci0gICAgcmV0dXJuIChsb25nKWdldHBpZCgpOwotfQotCi0vKgotICogR2V0IG5hbWUgb2YgY3VycmVudCBkaXJlY3RvcnkgaW50byBidWZmZXIgJ2J1Zicgb2YgbGVuZ3RoICdsZW4nIGJ5dGVzLgotICogUmV0dXJuIE9LIGZvciBzdWNjZXNzLCBGQUlMIGZvciBmYWlsdXJlLgotICovCi0gICAgaW50Ci1tY2hfZGlybmFtZShidWYsIGxlbikKLSAgICBjaGFyX3UJKmJ1ZjsKLSAgICBpbnQJCWxlbjsKLXsKLSNpZiBkZWZpbmVkKF9fTVJDX18pIHx8IGRlZmluZWQoX19TQ19fKQotICAgIHJldHVybiBGQUlMOyAvKiBObyBzb2x1dGlvbiB5ZXQgKi8KLSNlbHNlCi0gICAgLyogVGhlIGxhc3QgOiBpcyBhbHJlYWR5IHB1dCBieSBnZXRjd2QgKi8KLSAgICBpZiAoZ2V0Y3dkKChjaGFyICopYnVmLCBsZW4pID09IE5VTEwpCi0JewotCSAgICBTVFJDUFkoYnVmLCBzdHJlcnJvcihlcnJubykpOwotCSAgICByZXR1cm4gRkFJTDsKLQl9Ci0jIGlmbmRlZiBVU0VfVU5JWEZJTEVOQU1FCi0gICAgZWxzZSBpZiAoKmJ1ZiAhPSBOVUwgJiYgYnVmW1NUUkxFTihidWYpIC0gMV0gPT0gJzonKQotCWJ1ZltTVFJMRU4oYnVmKSAtIDFdID0gTlVMOwkvKiByZW1vdmUgdHJhaWxpbmcgJzonICovCi0jIGVuZGlmCi0gICAgcmV0dXJuIE9LOwotI2VuZGlmCi19Ci0KLSAgICB2b2lkCi1zbGFzaF90b19jb2xvbihwKQotICAgIGNoYXJfdQkqcDsKLXsKLSAgICBmb3IgKCA7ICpwOyArK3ApCi0JaWYgKCpwID09ICcvJykKLQkgICAgKnAgPSAnOic7Ci19Ci0KLSAgICBjaGFyX3UgKgotc2xhc2hfdG9fY29sb25fc2F2ZSAocCkKLSAgICBjaGFyX3UgICpwOwotewotICAgIGNoYXJfdQkqcmVzOwotCi0gICAgcmVzID0gdmltX3N0cnNhdmUocCk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotCXJldHVybiBwOwotICAgIHNsYXNoX3RvX2NvbG9uKHJlcyk7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotICAgIHZvaWQKLXNsYXNoX25fY29sb25fYWRqdXN0IChidWYpCi0gICAgY2hhcl91ICpidWY7Ci17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBNYWtlIGl0IGZhc3RlcgotICAgICAqLwotI2lmbmRlZiBVU0VfVU5JWEZJTEVOQU1FCi0gICAgY2hhcl91ICB0ZW1wW01BWFBBVEhMXTsKLSAgICBjaGFyX3UgICpmaXJzdF9jb2xvbiA9IHZpbV9zdHJjaHIoYnVmLCAnOicpOwotICAgIGNoYXJfdSAgKmZpcnN0X3NsYXNoID0gdmltX3N0cmNocihidWYsICcvJyk7Ci0gICAgaW50ICAgICBmdWxsID0gVFJVRTsKLSAgICBjaGFyX3UgICpzY2FubmluZzsKLSAgICBjaGFyX3UgICpmaWxsaW5nOwotICAgIGNoYXJfdSAgbGFzdF9jb3BpZWQgPSBOVUw7Ci0KLSAgICBpZiAoKmJ1ZiA9PSBOVUwpCi0JcmV0dXJuIDsKLQotICAgIGlmICgoZmlyc3RfY29sb24gPT0gTlVMTCkgJiYgKGZpcnN0X3NsYXNoID09IE5VTEwpKQotCWZ1bGwgPSBGQUxTRTsKLSAgICBpZiAoKGZpcnN0X3NsYXNoID09IE5VTEwpICYmIChmaXJzdF9jb2xvbiAhPSBOVUxMKSkKLQlmdWxsID0gVFJVRTsKLSAgICBpZiAoKGZpcnN0X2NvbG9uID09IE5VTEwpICYmIChmaXJzdF9zbGFzaCAhPSBOVUxMKSkKLQlmdWxsID0JRkFMU0U7Ci0gICAgaWYgKChmaXJzdF9zbGFzaCA8IGZpcnN0X2NvbG9uKSAmJiAoZmlyc3Rfc2xhc2ggIT0gTlVMTCkpCi0JZnVsbCA9IEZBTFNFOwotICAgIGlmICgoZmlyc3RfY29sb24gPCBmaXJzdF9zbGFzaCkgJiYgKGZpcnN0X2NvbG9uICE9IE5VTEwpKQotCWZ1bGwgPSBUUlVFOwotICAgIGlmIChmaXJzdF9zbGFzaCA9PSBidWYpCi0JZnVsbCA9IFRSVUU7Ci0gICAgaWYgKGZpcnN0X2NvbG9uID09IGJ1ZikKLQlmdWxsID0gRkFMU0U7Ci0KLSAgICBzY2FubmluZyA9IGJ1ZjsKLSAgICBmaWxsaW5nICA9IHRlbXA7Ci0KLSAgICB3aGlsZSAoKnNjYW5uaW5nICE9IE5VTCkKLSAgICB7Ci0JaWYgKCpzY2FubmluZyA9PSAnLycpCi0JewotCSAgICBpZiAoKHNjYW5uaW5nWzFdICE9ICcvJykgJiYgKHNjYW5uaW5nWy0xXSAhPSAnOicpKQotCSAgICB7Ci0JCSpmaWxsaW5nKysgPSAnOic7Ci0JCXNjYW5uaW5nKys7Ci0JICAgIH0KLQkgICAgZWxzZQotCQlzY2FubmluZysrOwotCX0KLQllbHNlIGlmICgqc2Nhbm5pbmcgPT0gJy4nKQotCXsKLQkgICAgaWYgKChzY2FubmluZ1sxXSA9PSBOVUwpIHx8IHNjYW5uaW5nWzFdID09ICcvJykKLQkgICAgewotCQlpZiAoc2Nhbm5pbmdbMV0gPT0gTlVMKQotCQkgICAgc2Nhbm5pbmcgKz0gMTsKLQkJZWxzZQotCQkgICAgc2Nhbm5pbmcgKz0gMjsKLQkgICAgfQotCSAgICBlbHNlIGlmIChzY2FubmluZ1sxXSA9PSAnLicpCi0JICAgIHsKLQkJaWYgKChzY2FubmluZ1syXSA9PSBOVUwpIHx8IHNjYW5uaW5nWzJdID09ICcvJykKLQkJewotCQkgICAgKmZpbGxpbmcrKyA9ICc6JzsKLQkJICAgIGlmIChzY2FubmluZ1syXSA9PSBOVUwpCi0JCQlzY2FubmluZyArPTI7Ci0JCSAgICBlbHNlCi0JCQlzY2FubmluZyArPSAzOwotCQl9Ci0JCWVsc2UKLQkJewotCQkgICAgKmZpbGxpbmcrKyA9ICpzY2FubmluZysrOwotCQl9Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JCSpmaWxsaW5nKysgPSAqc2Nhbm5pbmcrKzsKLQkgICAgfQotCi0JfQotCWVsc2UKLQl7Ci0JICAgICpmaWxsaW5nKysgPSAqc2Nhbm5pbmcrKzsKLQl9Ci0KLSAgICB9Ci0KLSAgICAqZmlsbGluZyA9IDA7Ci0gICAgZmlsbGluZyA9IHRlbXA7Ci0KLSAgICBpZiAoIWZ1bGwpCi0gICAgewotCWlmIChidWZbMF0gIT0gJzonKQotCXsKLQkgICAgYnVmWzBdID0gJzonOwotCSAgICBidWZbMV0gPSBOVUw7Ci0JfQotCWVsc2UKLQkgICAgYnVmWzBdID0gTlVMOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotCWJ1ZlswXSA9IE5VTDsKLQlpZiAoZmlsbGluZ1swXSA9PSAnOicpCi0JICAgIGZpbGxpbmcrKzsKLSAgICB9Ci0KLSAgICBTVFJDQVQgKGJ1ZiwgZmlsbGluZyk7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIEdldCBhYnNvbHV0ZSBmaWxlbmFtZSBpbnRvIGJ1ZmZlciAnYnVmJyBvZiBsZW5ndGggJ2xlbicgYnl0ZXMuCi0gKgotICogcmV0dXJuIEZBSUwgZm9yIGZhaWx1cmUsIE9LIGZvciBzdWNjZXNzCi0gKi8KLSAgICBpbnQKLW1jaF9GdWxsTmFtZShmbmFtZSwgYnVmLCBsZW4sIGZvcmNlKQotICAgIGNoYXJfdSAgKmZuYW1lLCAqYnVmOwotICAgIGludCAgICAgbGVuOwotICAgIGludCAgICAgZm9yY2U7CSAgICAvKiBhbHNvIGV4cGFuZCB3aGVuIGFscmVhZHkgYWJzb2x1dGUgcGF0aCBuYW1lICovCi17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBGaW5kIHdoYXQgVE9ETwotICAgICAqLwotICAgIGludAkJbDsKLSAgICBjaGFyX3UJb2xkZGlyW01BWFBBVEhMXTsKLSAgICBjaGFyX3UJbmV3ZGlyW01BWFBBVEhMXTsKLSAgICBjaGFyX3UJKnA7Ci0gICAgY2hhcl91CWM7Ci0gICAgaW50CQlyZXR2YWwgPSBPSzsKLQotICAgIGlmIChmb3JjZSB8fCAhbWNoX2lzRnVsbE5hbWUoZm5hbWUpKQotICAgIHsKLQkvKgotCSAqIEZvcmNlZCBvciBub3QgYW4gYWJzb2x1dGUgcGF0aC4KLQkgKiBJZiB0aGUgZmlsZSBuYW1lIGhhcyBhIHBhdGgsIGNoYW5nZSB0byB0aGF0IGRpcmVjdG9yeSBmb3IgYSBtb21lbnQsCi0JICogYW5kIHRoZW4gZG8gdGhlIGdldHdkKCkgKGFuZCBnZXQgYmFjayB0byB3aGVyZSB3ZSB3ZXJlKS4KLQkgKiBUaGlzIHdpbGwgZ2V0IHRoZSBjb3JyZWN0IHBhdGggbmFtZSB3aXRoICIuLi8iIHRoaW5ncy4KLQkgKi8KLQlpZiAoKHAgPSB2aW1fc3RycmNocihmbmFtZSwgJzonKSkgIT0gTlVMTCkKLQl7Ci0JICAgIHArKzsKLQkgICAgaWYgKG1jaF9kaXJuYW1lKG9sZGRpciwgTUFYUEFUSEwpID09IEZBSUwpCi0JICAgIHsKLQkJcCA9IE5VTEw7CQkvKiBjYW4ndCBnZXQgY3VycmVudCBkaXI6IGRvbid0IGNoZGlyICovCi0JCXJldHZhbCA9IEZBSUw7Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JCWMgPSAqcDsKLQkJKnAgPSBOVUw7Ci0JCWlmIChtY2hfY2hkaXIoKGNoYXIgKilmbmFtZSkpCi0JCSAgICByZXR2YWwgPSBGQUlMOwotCQllbHNlCi0JCSAgICBmbmFtZSA9IHA7IC8qICsgMTsqLwotCQkqcCA9IGM7Ci0JICAgIH0KLQl9Ci0JaWYgKG1jaF9kaXJuYW1lKGJ1ZiwgbGVuKSA9PSBGQUlMKQotCXsKLQkgICAgcmV0dmFsID0gRkFJTDsKLQkgICAgKm5ld2RpciA9IE5VTDsKLQl9Ci0JbCA9IFNUUkxFTihidWYpOwotCWlmIChTVFJDTVAoZm5hbWUsICIuIikgIT0gMCkKLQl7Ci0jaWZkZWYgVVNFX1VOSVhGSUxFTkFNRQotCSAgICBpZiAobCA+IDAgJiYgYnVmW2wgLSAxXSAhPSAnLycgJiYgKmZuYW1lICE9IE5VTCkKLQkJU1RSQ0FUKGJ1ZiwgIi8iKTsKLSNlbHNlCi0JICAgIGlmIChsID4gMCAmJiBidWZbbCAtIDFdICE9ICc6JyAmJiAqZm5hbWUgIT0gTlVMKQotCQlTVFJDQVQoYnVmLCAiOiIpOwotI2VuZGlmCi0JfQotCWlmIChwICE9IE5VTEwpCi0JICAgIG1jaF9jaGRpcigoY2hhciAqKW9sZGRpcik7Ci0JaWYgKFNUUkNNUChmbmFtZSwgIi4iKSAhPSAwKQotCSAgICBTVFJDQVQoYnVmLCBmbmFtZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0JdmltX3N0cm5jcHkoYnVmLCBmbmFtZSwgbGVuIC0gMSk7Ci0Jc2xhc2hfbl9jb2xvbl9hZGp1c3QoYnVmKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0dmFsOwotfQotCi0vKgotICogUmV0dXJuIFRSVUUgaWYgImZuYW1lIiBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotICovCi0JaW50Ci1tY2hfaXNGdWxsTmFtZShmbmFtZSkKLQljaGFyX3UJCSpmbmFtZTsKLXsKLSNpZmRlZiBVU0VfVU5JWEZJTEVOQU1FCi0gICAgcmV0dXJuICgoZm5hbWVbMF0gPT0gJy8nKSB8fCAoZm5hbWVbMF0gPT0gJ34nKSk7Ci0jZWxzZQotICAgIC8qCi0gICAgICogVE9ETzogTWFrZSBzdXJlIGZuYW1lIGlzIGFsd2F5cyBvZiBtYWMgc3RpbGwKLSAgICAgKiAgICAgICBpLmU6IHBhc3NlZCB0aHJvdWdodCBzbGFzaF9uX2NvbG9uX2FkanVzdAotICAgICAqLwotCWNoYXJfdQkqZmlyc3RfY29sb24gPSB2aW1fc3RyY2hyKGZuYW1lLCAnOicpOwotCWNoYXJfdQkqZmlyc3Rfc2xhc2ggPSB2aW1fc3RyY2hyKGZuYW1lLCAnLycpOwotCi0JaWYgKGZpcnN0X2NvbG9uID09IGZuYW1lKQotCSAgcmV0dXJuIEZBTFNFOwotCWlmIChmaXJzdF9zbGFzaCA9PSBmbmFtZSkKLQkgIHJldHVybiBUUlVFOwotCWlmICgoZmlyc3RfY29sb24gPCBmaXJzdF9zbGFzaCkgJiYgKGZpcnN0X2NvbG9uICE9IE5VTEwpKQotCSAgcmV0dXJuIFRSVUU7Ci0JaWYgKChmaXJzdF9zbGFzaCA8IGZpcnN0X2NvbG9uKSAmJiAoZmlyc3Rfc2xhc2ggIT0gTlVMTCkpCi0JICByZXR1cm4gRkFMU0U7Ci0JaWYgKChmaXJzdF9jb2xvbiA9PSBOVUxMKSAmJiAoZmlyc3Rfc2xhc2ggIT0gTlVMTCkpCi0JICByZXR1cm4gRkFMU0U7Ci0JaWYgKChmaXJzdF9zbGFzaCA9PSBOVUxMKSAmJiAoZmlyc3RfY29sb24gIT0gTlVMTCkpCi0JICByZXR1cm4gVFJVRTsKLQlpZiAoKGZpcnN0X2NvbG9uID09IE5VTEwpICYmIChmaXJzdF9zbGFzaCA9PSBOVUxMKSkKLQkgIHJldHVybiBGQUxTRTsKLQlyZXR1cm4gVFJVRTsKLSNlbmRpZgotfQotCi0vKgotICogUmVwbGFjZSBhbGwgc2xhc2hlcyBieSBjb2xvbnMuCi0gKi8KLSAgICB2b2lkCi1zbGFzaF9hZGp1c3QocCkKLSAgICBjaGFyX3UgICpwOwotewotI2lmbmRlZiBVU0VfVU5JWEZJTEVOQU1FCi0gICAgLyoKLSAgICAgKiBUT0RPOiBrZWVwIGVzY2FwZWQgJy8nCi0gICAgICovCi0KLSAgICB3aGlsZSAoKnApCi0gICAgewotCWlmICgqcCA9PSAnLycpCi0JICAgICpwID0gJzonOwotCW1iX3B0cl9hZHYocCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLS8qCi0gKiBHZXQgZmlsZSBwZXJtaXNzaW9ucyBmb3IgJ25hbWUnLgotICogUmV0dXJucyAtMSB3aGVuIGl0IGRvZXNuJ3QgZXhpc3QuCi0gKi8KLSAgICBsb25nCi1tY2hfZ2V0cGVybShuYW1lKQotICAgIGNoYXJfdSAqbmFtZTsKLXsKLSAgICAvKgotICAgICAqIFRPRE86IE1heWJlIHVzZSBBcHBsZVNoYXJlIGluZm8/PwotICAgICAqICAgICAgIFVzZSBsb2NrZWQgZm9yIG5vbiB3cml0YWJsZQotICAgICAqLwotCi0gICAgc3RydWN0IHN0YXQgc3RhdGI7Ci0KLSAgICBpZiAoc3RhdCgoY2hhciAqKW5hbWUsICZzdGF0YikpCi0JcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0Yi5zdF9tb2RlOwotfQotCi0vKgotICogc2V0IGZpbGUgcGVybWlzc2lvbiBmb3IgJ25hbWUnIHRvICdwZXJtJwotICoKLSAqIHJldHVybiBGQUlMIGZvciBmYWlsdXJlLCBPSyBvdGhlcndpc2UKLSAqLwotICAgIGludAotbWNoX3NldHBlcm0obmFtZSwgcGVybSkKLSAgICBjaGFyX3UJKm5hbWU7Ci0gICAgbG9uZwlwZXJtOwotewotICAgIC8qCi0gICAgICogVE9ETzogTWF5YmUgdXNlIEFwcGxlU2hhcmUgaW5mbz8/Ci0gICAgICogICAgICAgVXNlIGxvY2tlZCBmb3Igbm9uIHdyaXRhYmxlCi0gICAgICovCi0gICAgcmV0dXJuIChPSyk7Ci19Ci0KLS8qCi0gKiBTZXQgaGlkZGVuIGZsYWcgZm9yICJuYW1lIi4KLSAqLwotICAgIHZvaWQKLW1jaF9oaWRlKG5hbWUpCi0gICAgY2hhcl91ICAqbmFtZTsKLXsKLSAgICAvKgotICAgICAqIFRPRE86IEhpZGUgdGhlIGZpbGUgdGhyb3VnaHQgRmlsZU1hbmFnZXIgRkFRIDgtMzQKLSAgICAgKgotICAgICAqICAqbmFtZSBpcyBtYWMgc3R5bGUgc3RhcnQgd2l0aCA6IGZvciByZWxhdGl2ZQotICAgICAqLwotfQotCi0KLS8qCi0gKiByZXR1cm4gVFJVRSBpZiAibmFtZSIgaXMgYSBkaXJlY3RvcnkKLSAqIHJldHVybiBGQUxTRSBpZiAibmFtZSIgaXMgbm90IGEgZGlyZWN0b3J5Ci0gKiByZXR1cm4gRkFMU0UgZm9yIGVycm9yCi0gKi8KLSAgICBpbnQKLW1jaF9pc2RpcihuYW1lKQotICAgIGNoYXJfdSAgKm5hbWU7Ci17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBGaW5kIG91dCBieSBGaWxlTWFuYWdlciBjYWxscyAuLi4KLSAgICAgKi8KLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YjsKLQotI2lmIGRlZmluZWQoVEFSR0VUX0FQSV9NQUNfQ0FSQk9OKSAmJiBUQVJHRVRfQVBJX01BQ19DQVJCT04KLSAgICAvKiBGb3Igc29tZSByZWFzb24gdGhlIG5hbWUgaXMgc29tZXRpbWVzIGVtcHR5LAotICAgICAqIChzdWNoIGFzIGZvciBhIG5vdCB5ZXQgbmFtZWQgZmlsZSkuIEFuIGVtcHR5Ci0gICAgICogZmlsZW5hbWUgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlIE1hY09TIHZlcnNpb24KLSAgICAgKiBvZiBzdGF0IChhdCBsZWFzdCB1bmRlciBDb2Rld2FycmlvcikgYXMgdGhlCi0gICAgICogY3VycmVudCBkaXJlY3RvcnkuCi0gICAgICovCi0gICAgLyogQUsgMjAwMjA0MTMKLSAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGZvciBDYXJib24gYnV0IGJyZWFrcyB0aGUKLSAgICAgKiBleHBsb3JlciBwbHVnaW4gaW4gQ2xhc3NpYwotICAgICAqLwotICAgIGlmIChuYW1lWzBdID09IE5VTEwpCi0JcmV0dXJuIEZBTFNFOwotI2VuZGlmCi0KLSAgICBpZiAoc3RhdCgoY2hhciAqKW5hbWUsICZzdGF0YikpCi0JcmV0dXJuIEZBTFNFOwotI2lmIGRlZmluZWQoX19NUkNfXykgfHwgZGVmaW5lZChfX1NDX18pCi0gICAgcmV0dXJuIEZBTFNFOyAgIC8qIGRlZmluaXRlbHkgVE9ETyAqLwotI2Vsc2UKLSAgICByZXR1cm4gKChzdGF0Yi5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSID8gVFJVRSA6IEZBTFNFKTsKLSNlbmRpZgotfQotCi0jaWYgZGVmaW5lZChGRUFUX0VWQUwpIHx8IGRlZmluZWQoUFJPVE8pCi0vKgotICogUmV0dXJuIDEgaWYgIm5hbWUiIGNhbiBiZSBleGVjdXRlZCwgMCBpZiBub3QuCi0gKiBSZXR1cm4gLTEgaWYgdW5rbm93bi4KLSAqLwotICAgIGludAotbWNoX2Nhbl9leGUobmFtZSkKLSAgICBjaGFyX3UJKm5hbWU7Ci17Ci0gICAgLyogVE9ETyAqLwotICAgIHJldHVybiAtMTsKLX0KLSNlbmRpZgotCi0vKgotICogQ2hlY2sgd2hhdCAibmFtZSIgaXM6Ci0gKiBOT0RFX05PUk1BTDogZmlsZSBvciBkaXJlY3RvcnkgKG9yIGRvZXNuJ3QgZXhpc3QpCi0gKiBOT0RFX1dSSVRBQkxFOiB3cml0YWJsZSBkZXZpY2UsIHNvY2tldCwgZmlmbywgZXRjLgotICogTk9ERV9PVEhFUjogbm9uLXdyaXRhYmxlIHRoaW5ncwotICovCi0gICAgaW50Ci1tY2hfbm9kZXR5cGUobmFtZSkKLSAgICBjaGFyX3UJKm5hbWU7Ci17Ci0gICAgLyogVE9ETyAqLwotICAgIHJldHVybiBOT0RFX05PUk1BTDsKLX0KLQotICAgIHZvaWQKLW1jaF9lYXJseV9pbml0KCkKLXsKLX0KLQotICAgIHZvaWQKLW1jaF9leGl0KHIpCi0gICAgaW50ICAgICByOwotewotICAgIGRpc3BsYXlfZXJyb3JzKCk7Ci0KLSAgICBtbF9jbG9zZV9hbGwoVFJVRSk7CQkvKiByZW1vdmUgYWxsIG1lbWZpbGVzICovCi0gICAgZXhpdChyKTsKLX0KLQotCi0gICAgdm9pZAotbWNoX3NldHRtb2RlKHRtb2RlKQotICAgIGludCAgICAgdG1vZGU7Ci17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiByZW1vdmUgdGhlIG5lZWRzIG9mIGl0LgotICAgICAqLwotfQotCi0jaWZkZWYgRkVBVF9NT1VTRQotLyoKLSAqIHNldCBtb3VzZSBjbGlja3Mgb24gb3Igb2ZmIChvbmx5IHdvcmtzIGZvciB4dGVybXMpCi0gKi8KLSAgICB2b2lkCi1tY2hfc2V0bW91c2Uob24pCi0gICAgaW50ICAgICBvbjsKLXsKLSAgICAvKgotICAgICAqIFRPRE86IHJlbW92ZSB0aGUgbmVlZHMgb2YgaXQuCi0gICAgICovCi19Ci0jZW5kaWYKLQotLyoKLSAqIHNldCBzY3JlZW4gbW9kZSwgYWx3YXlzIGZhaWxzLgotICovCi0gICAgaW50Ci1tY2hfc2NyZWVubW9kZShhcmcpCi0gICAgY2hhcl91CSAqYXJnOwotewotICAgIEVNU0coXyhlX3NjcmVlbm1vZGUpKTsKLSAgICByZXR1cm4gRkFJTDsKLX0KLQotICAgIGludAotbWNoX2NhbGxfc2hlbGwoY21kLCBvcHRpb25zKQotICAgIGNoYXJfdQkqY21kOwotICAgIGludAkJb3B0aW9uczsJLyogU0hFTExfKiwgc2VlIHZpbS5oICovCi17Ci0gICAgLyoKLSAgICAgKiBUT0RPOiBmaW5kIGEgc2hlbGwgb3IgcHNldWRvLXNoZWxsIHRvIGNhbGwKLSAgICAgKiAgICAgICBmb3Igc29tZSBzaW1wbGUgdXNlZnVsIGNvbW1hbmQKLSAgICAgKi8KLQotICAgIHJldHVybiAoLTEpOwotfQotCi0vKgotICogUmV0dXJuIFRSVUUgaWYgInAiIGNvbnRhaW5zIGEgd2lsZGNhcmQgdGhhdCBjYW4gYmUgZXhwYW5kZWQgYnkKLSAqIG1jaF9leHBhbmRwYXRoKCkuCi0gKi8KLSAgICBpbnQKLW1jaF9oYXNfZXhwX3dpbGRjYXJkKHApCi0gICAgY2hhcl91CSpwOwotewotICAgIGZvciAoIDsgKnA7IG1iX3B0cl9hZHYocCkpCi0gICAgewotCWlmICgqcCA9PSAnXFwnICYmIHBbMV0gIT0gTlVMKQotCSAgICArK3A7Ci0JZWxzZSBpZiAodmltX3N0cmNocigoY2hhcl91ICopV0lMRENIQVJfTElTVCwgKnApICE9IE5VTEwpCi0JICAgIHJldHVybiBUUlVFOwotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLSAgICBpbnQKLW1jaF9oYXNfd2lsZGNhcmQocCkKLSAgICBjaGFyX3UJKnA7Ci17Ci0jaWZkZWYgVVNFX1VOSVhGSUxFTkFNRQotICAgIGlmICgqcCA9PSAnficgJiYgcFsxXSAhPSBOVUwpCi0JcmV0dXJuIFRSVUU7Ci0jZW5kaWYKLSAgICByZXR1cm4gbWNoX2hhc19leHBfd2lsZGNhcmQocCk7Ci19Ci0KLQotLyoKLSAqIFRoaXMgcHJvY2VkdXJlIGR1cGxpY2F0ZSBhIGZpbGUsIGl0IGlzIHVzZWQgaW4gb3JkZXIgdG8ga2VlcAotICogdGhlIGZvb3RwcmludCBvZiB0aGUgcHJldmlvdXMgZmlsZSwgd2hlbiBzb21lIGluZm8gY2FuIGJlIGVhc2lseQotICogcmVzdG9yZWQgd2l0aCBzZXRfcGVybSgpLgotICoKLSAqIFJldHVybiAtMSBmb3IgZmFpbHVyZSwgMCBmb3Igc3VjY2Vzcy4KLSAqLwotICAgIGludAotbWNoX2NvcHlfZmlsZShmcm9tLCB0bykKLSAgICBjaGFyX3UgKmZyb207Ci0gICAgY2hhcl91ICp0bzsKLXsKLSAgICBjaGFyX3UgIGZyb21fc3RyWzI1Nl07Ci0gICAgY2hhcl91ICB0b19zdHJbMjU2XTsKLSAgICBjaGFyX3UgIHRvX25hbWVbMjU2XTsKLQotICAgIEhQYXJhbUJsb2NrUmVjIHBhcmFtQmxvY2s7Ci0gICAgY2hhcl91ICAqY2hhcl9wdHI7Ci0gICAgaW50CSAgICBsZW47Ci0KLSAgICAvKgotICAgICAqIENvbnZlcnQgQyBzdHJpbmcgdG8gUGFzY2FsIHN0cmluZwotICAgICAqLwotICAgICBjaGFyX3B0ciA9IGZyb207Ci0gICAgIGxlbiA9IDE7Ci0gICAgIGZvciAoOyAoKmNoYXJfcHRyICE9IDApICYmIChsZW4gPCAyNTUpOyBsZW4rKywgY2hhcl9wdHIrKykKLQlmcm9tX3N0cltsZW5dID0gKmNoYXJfcHRyOwotICAgICBmcm9tX3N0clswXSA9IGxlbi0xOwotCi0gICAgIGNoYXJfcHRyID0gdG87Ci0gICAgIGxlbiA9IDE7Ci0gICAgIGZvciAoOyAoKmNoYXJfcHRyICE9IDApICYmIChsZW4gPCAyNTUpOyBsZW4rKywgY2hhcl9wdHIrKykKLQl0b19zdHJbbGVuXSA9ICpjaGFyX3B0cjsKLSAgICAgdG9fc3RyWzBdID0gbGVuLTE7Ci0KLSAgICBwYXJhbUJsb2NrLmNvcHlQYXJhbS5pb0NvbXBsZXRpb24gPSBOVUxMOwotICAgIHBhcmFtQmxvY2suY29weVBhcmFtLmlvTmFtZVB0ciAgICA9IGZyb21fc3RyOwotIC8qIHBhcmFtQmxvY2suY29weVBhcmFtLmlvVlJlZm51bSAgICA9ICBvdmVyaWRlZCBieSBpb0ZpbGVuYW1lOyAqLwotIC8qIHBhcmFtQmxvY2suY29weVBhcmFtLmlvRGlySSAgICAgICA9ICBvdmVyaWRlZCBieSBpb0ZpbGVuYW1lOyAqLwotCi0gICAgcGFyYW1CbG9jay5jb3B5UGFyYW0uaW9OZXdOYW1lICAgID0gdG9fc3RyOwotICAgIHBhcmFtQmxvY2suY29weVBhcmFtLmlvQ29weU5hbWUgICA9IHRvX25hbWU7ICAgICAvKiBOSUwgKi8KLSAvKiBwYXJhbUJsb2NrLmNvcHlQYXJhbS5pb0RzdFZSZWZOdW0gPSBvdmVyaWRlZCBieSBpb05ld05hbWU7ICAgKi8KLSAvKiBwYXJhbUJsb2NrLmNvcHlQYXJhbS5pb05ld0RpcklEICAgPSBvdmVyaWRlZCBieSBpb05ld05hbWU7ICAgKi8KLQotCi0KLSAgICAvKgotICAgICAqIEZpcnN0IGRlbGV0ZSB0aGUgInRvIiBmaWxlLCB0aGlzIGlzIHJlcXVpcmVkIG9uIHNvbWUgc3lzdGVtcyB0byBtYWtlCi0gICAgICogdGhlIHJlbmFtZSgpIHdvcmssIG9uIG90aGVyIHN5c3RlbXMgaXQgbWFrZXMgc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUKLSAgICAgKiB0d28gZmlsZXMgd2hlbiB0aGUgcmVuYW1lKCkgZmFpbHMuCi0gICAgICovCi0gICAgbWNoX3JlbW92ZSh0byk7Ci0KLSAgICAvKgotICAgICAqIEZpcnN0IHRyeSBhIG5vcm1hbCByZW5hbWUsIHJldHVybiBpZiBpdCB3b3Jrcy4KLSAgICAgKi8KLSAgICAodm9pZCkgUEJIQ29weUZpbGUoJnBhcmFtQmxvY2ssIGZhbHNlKTsKLSAgICByZXR1cm4gMDsKLQotfQotCi0KLSAgICBpbnQKLW1jaF9jb3B5X2ZpbGVfYXR0cmlidXRlKGZyb20sIHRvKQotICAgIGNoYXJfdSAqZnJvbTsKLSAgICBjaGFyX3UgKnRvOwotewotICAgIEZTU3BlYwlmckZTU3BlYzsKLSAgICBGU1NwZWMJdG9GU1NwZWM7Ci0gICAgRkluZm8JZm5kckluZm87Ci0gICAgU3RyMjU1CW5hbWU7Ci0gICAgUmVzVHlwZQl0eXBlOwotICAgIFJlc1R5cGUJc2luazsKLSAgICBIYW5kbGUJcmVzb3VyY2U7Ci0gICAgc2hvcnQJaWR4VHlwZXM7Ci0gICAgc2hvcnQJbmJUeXBlczsKLSAgICBzaG9ydAlpZHhSZXNvdXJjZXM7Ci0gICAgc2hvcnQJbmJSZXNvdXJjZXM7Ci0gICAgc2hvcnQJSUQ7Ci0gICAgc2hvcnQJZnJSRmlkOwotICAgIHNob3J0CXRvUkZpZDsKLSAgICBzaG9ydAlhdHRyc19vcmlnOwotICAgIHNob3J0CWF0dHJzX2NvcHk7Ci0gICAgc2hvcnQJdGVtcDsKLQotICAgIC8qIFRPRE86IEhhbmRsZSBlcnJvciAqLwotICAgICh2b2lkKUdldEZTU3BlY0Zyb21QYXRoKGZyb20sICZmckZTU3BlYyk7Ci0gICAgKHZvaWQpR2V0RlNTcGVjRnJvbVBhdGgodG8gICwgJnRvRlNTcGVjKTsKLQotICAgIC8qIENvcHkgcmVzb3VyY2UgZm9yayAqLwotICAgIHRlbXAgPSAwOwotCi0jaWYgMQotICAgICBmclJGaWQgPSBGU3BPcGVuUmVzRmlsZSAoJmZyRlNTcGVjLCBmc0N1clBlcm0pOwotCi0gICAgIGlmIChmclJGaWQgIT0gLTEpCi0gICAgIHsKLQkgRlNwQ3JlYXRlUmVzRmlsZSgmdG9GU1NwZWMsICdURVhUJywgVU5LTk9XTl9DUkVBVE9SLCAwKTsKLQkgdG9SRmlkID0gRlNwT3BlblJlc0ZpbGUoJnRvRlNTcGVjLCBmc1JkV3JQZXJtKTsKLQotCSBVc2VSZXNGaWxlKGZyUkZpZCk7Ci0KLQkgbmJUeXBlcyA9IENvdW50MVR5cGVzKCk7Ci0KLQkgZm9yIChpZHhUeXBlcyA9IDE7IGlkeFR5cGVzIDw9IG5iVHlwZXM7IGlkeFR5cGVzKyspCi0JIHsKLQkgICAgIEdldDFJbmRUeXBlKCZ0eXBlLCBpZHhUeXBlcyk7Ci0JICAgICBuYlJlc291cmNlcyA9IENvdW50MVJlc291cmNlcyh0eXBlKTsKLQotCSAgICAgZm9yIChpZHhSZXNvdXJjZXMgPSAxOyBpZHhSZXNvdXJjZXMgPD0gbmJSZXNvdXJjZXM7IGlkeFJlc291cmNlcysrKQotCSAgICAgewotCQkgYXR0cnNfb3JpZyA9IDA7IC8qIGluIGNhc2UgR2V0UmVzIGZhaWxzICovCi0JCSBhdHRyc19jb3B5ID0gMDsgLyogaW4gY2FzZSBHZXRSZXMgZmFpbHMgKi8KLQkJIHJlc291cmNlID0gR2V0MUluZFJlc291cmNlKHR5cGUsIGlkeFJlc291cmNlcyk7Ci0JCSBHZXRSZXNJbmZvKHJlc291cmNlLCAmSUQsICZzaW5rLCBuYW1lKTsKLQkJIEhMb2NrKHJlc291cmNlKTsKLQkJIGF0dHJzX29yaWcgPSBHZXRSZXNBdHRycyhyZXNvdXJjZSk7Ci0JCSBEZXRhY2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0KLQotCQkgVXNlUmVzRmlsZSh0b1JGaWQpOwotCQkgQWRkUmVzb3VyY2UocmVzb3VyY2UsIHR5cGUsIElELCBuYW1lKTsKLQkJIGF0dHJzX2NvcHkgPSBHZXRSZXNBdHRycyhyZXNvdXJjZSk7Ci0JCSBhdHRyc19jb3B5ID0gKGF0dHJzX2NvcHkgJiAweDIpIHwgKGF0dHJzX29yaWcgJiAweEZEKTsKLQkJIFNldFJlc0F0dHJzKHJlc291cmNlLCBhdHRyc19jb3B5KTsKLQkJIFdyaXRlUmVzb3VyY2UocmVzb3VyY2UpOwotCQkgVXBkYXRlUmVzRmlsZSh0b1JGaWQpOwotCi0JCSB0ZW1wID0gR2V0UmVzQXR0cnMocmVzb3VyY2UpOwotCi0JCSAvKlNldFJlc0F0dHJzIChyZXNvdXJjZSwgMCk7Ki8KLQkJIEhVbmxvY2socmVzb3VyY2UpOwotCQkgUmVsZWFzZVJlc291cmNlKHJlc291cmNlKTsKLQkJIFVzZVJlc0ZpbGUoZnJSRmlkKTsKLQkgICAgIH0KLQkgfQotCSBDbG9zZVJlc0ZpbGUodG9SRmlkKTsKLQkgQ2xvc2VSZXNGaWxlKGZyUkZpZCk7Ci0gICAgIH0KLSNlbmRpZgotICAgIC8qIENvcHkgRmluZGVyIEluZm8gKi8KLSAgICAodm9pZClGU3BHZXRGSW5mbygmZnJGU1NwZWMsICZmbmRySW5mbyk7Ci0gICAgKHZvaWQpRlNwU2V0RkluZm8oJnRvRlNTcGVjLCAmZm5kckluZm8pOwotCi0gICAgcmV0dXJuICh0ZW1wID09IGF0dHJzX2NvcHkpOwotfQotCi0gICAgaW50Ci1tY2hfaGFzX3Jlc291cmNlX2ZvcmsgKGZpbGUpCi0gICAgY2hhcl91ICpmaWxlOwotewotICAgIEZTU3BlYyAgZmlsZUZTU3BlYzsKLSAgICBzaG9ydCAgIGZpbGVSRmlkOwotCi0gICAgLyogVE9ETzogSGFuZGxlIGVycm9yICovCi0gICAgKHZvaWQpR2V0RlNTcGVjRnJvbVBhdGgoZmlsZSwgJmZpbGVGU1NwZWMpOwotICAgIGZpbGVSRmlkID0gRlNwT3BlblJlc0ZpbGUoJmZpbGVGU1NwZWMsIGZzQ3VyUGVybSk7Ci0gICAgaWYgKGZpbGVSRmlkICE9IC0xKQotCUNsb3NlUmVzRmlsZShmaWxlUkZpZCk7Ci0KLSAgICByZXR1cm4gKGZpbGVSRmlkICE9IC0xKTsKLX0KLQotICAgIGludAotbWNoX2dldF9zaGVsbHNpemUodm9pZCkKLXsKLSAgICAvKiBuZXZlciB1c2VkICovCi0gICAgcmV0dXJuIE9LOwotfQotCi0gICAgdm9pZAotbWNoX3NldF9zaGVsbHNpemUodm9pZCkKLXsKLSAgICAvKiBuZXZlciB1c2VkICovCi19Ci0KLS8qCi0gKiBSb3dzIGFuZC9vciBDb2x1bW5zIGhhcyBjaGFuZ2VkLgotICovCi0gICAgdm9pZAotbWNoX25ld19zaGVsbHNpemUodm9pZCkKLXsKLSAgICAvKiBuZXZlciB1c2VkICovCi19Ci0KLS8qCi0gKiBUaG9zZSBmdW5jdGlvbiB3ZXJlIHNldCBhcyAjZGVmaW5lIGJlZm9yZSwgYnV0IGluIG9yZGVyCi0gKiB0byBhbGxvdyBhbiBlYXNpZXIgdXMgb2Ygb3NfdW5peC5jIGZvciB0aGUgTWFjT1MgWCBwb3J0LAotICogdGhleSBhcmUgY2hhbmdlIHRvIHByb2NlZHVyZS4gVGhlYyBvbXBpbGUgd2hvdWxkIG9wdGltaXplCi0gKiB0aGVtIG91dC4KLSAqLwotCi0gICAgaW50Ci1tY2hfY2FuX3Jlc3RvcmVfdGl0bGUoKQotewotICAgIHJldHVybiBUUlVFOwotfQotCi0gICAgaW50Ci1tY2hfY2FuX3Jlc3RvcmVfaWNvbigpCi17Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qCi0gKiBJZiB0aGUgbWFjaGluZSBoYXMgam9iIGNvbnRyb2wsIHVzZSBpdCB0byBzdXNwZW5kIHRoZSBwcm9ncmFtLAotICogb3RoZXJ3aXNlIGZha2UgaXQgYnkgc3RhcnRpbmcgYSBuZXcgc2hlbGwuCi0gKi8KLSAgICB2b2lkCi1tY2hfc3VzcGVuZCgpCi17Ci0gICAgLyogVE9ETzogZ2V0IGNhbGxlIGluICNpZm5kZWYgTk9fQ09OU09MRSAqLwotICAgIGd1aV9tY2hfaWNvbmlmeSgpOwotfTsKLQpkaWZmIC0tZ2l0IGEvc3JjL29zX21hYy5wYnByb2ovcHJvamVjdC5wYnhwcm9qIGIvc3JjL29zX21hYy5wYnByb2ovcHJvamVjdC5wYnhwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWNmOWM5Li4wMDAwMDAwCi0tLSBhL3NyYy9vc19tYWMucGJwcm9qL3Byb2plY3QucGJ4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE1MzcgKzAsMCBAQAotLy8gISQqVVRGOCokIQotewotCWFyY2hpdmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDM0OwotCW9iamVjdHMgPSB7Ci0JCTAwRUY4MDgyMDBDNDlBODU3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ3VpX21hYy5yc3JjOwotCQkJcmVmVHlwZSA9IDI7Ci0JCX07Ci0JCTAwRUY4MDgzMDBDNDlBODU3RjAwMDAwMSA9IHsKLQkJCWZpbGVSZWYgPSAwMEVGODA4MjAwQzQ5QTg1N0YwMDAwMDE7Ci0JCQlpc2EgPSBQQlhCdWlsZEZpbGU7Ci0JCQlzZXR0aW5ncyA9IHsKLQkJCX07Ci0JCX07Ci0vLzAwMAotLy8wMDEKLS8vMDAyCi0vLzAwMwotLy8wMDQKLS8vMDEwCi0vLzAxMQotLy8wMTIKLS8vMDEzCi0vLzAxNAotCQkwMTREM0I4OTAwQkI1MkEwN0YwMDAwMDEgPSB7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyNzM3OThCRTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4QzYwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OENBMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThDRTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RDIwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEQ0MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThENTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RDYwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEUwMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThFMTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RTUwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEU4MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThFQzAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RjEwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEYyMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkyQzAwQjM2QkE3N0YwMDAwMDEsCi0JCQkpOwotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQluYW1lID0gSGVhZGVyczsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkwMTREM0I4QjAwQkI1OUNBN0YwMDAwMDEgPSB7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyNzM3OThFMjAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RUQwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEQzMDBCMzZCMDM3RjAwMDAwMSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCW5hbWUgPSAiVW51c2VkIFNvdXJjZSI7Ci0JCQlwYXRoID0gIiI7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLS8vMDEwCi0vLzAxMQotLy8wMTIKLS8vMDEzCi0vLzAxNAotLy8wMjAKLS8vMDIxCi0vLzAyMgotLy8wMjMKLS8vMDI0Ci0JCTAyNDlBNjY1RkYzODhEQzUxMUNBMkNFQSA9IHsKLQkJCWlzYSA9IFBCWEFwcGxpY2F0aW9uUmVmZXJlbmNlOwotCQkJcGF0aCA9IFZpbS5hcHA7Ci0JCQlyZWZUeXBlID0gMzsKLQkJfTsKLQkJMDI0OUE2NjlGRjM4OEUzOTExQ0EyQ0VBID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSAibGlic3RkYysrLmEiOwotCQkJcGF0aCA9ICIvdXNyL2xpYi9saWJzdGRjKysuYSI7Ci0JCQlyZWZUeXBlID0gMDsKLQkJfTsKLQkJMDI0OUE2NkFGRjM4OEUzOTExQ0EyQ0VBID0gewotCQkJZmlsZVJlZiA9IDAyNDlBNjY5RkYzODhFMzkxMUNBMkNFQTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLS8vMDIwCi0vLzAyMQotLy8wMjIKLS8vMDIzCi0vLzAyNAotLy8wNDAKLS8vMDQxCi0vLzA0MgotLy8wNDMKLS8vMDQ0Ci0JCTA0MzEzODkyRkUzMDM1QzlDMDJBQUMwNyA9IHsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkyNzM3OTkyOTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMDBFRjgwODMwMEM0OUE4NTdGMDAwMDAxLAotCQkJKTsKLQkJCWlzYSA9IFBCWFJlekJ1aWxkUGhhc2U7Ci0JCQluYW1lID0gIlJlc291cmNlTWFuYWdlciBSZXNvdXJjZXMiOwotCQl9OwotLy8wNDAKLS8vMDQxCi0vLzA0MgotLy8wNDMKLS8vMDQ0Ci0vLzA1MAotLy8wNTEKLS8vMDUyCi0vLzA1MwotLy8wNTQKLQkJMDU5NTJERkNGRkYwMkQxQjExQ0EwRTUwID0gewotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCQlPUFRJTUlaQVRJT05fQ0ZMQUdTID0gIi1PMCI7Ci0JCQl9OwotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJMDU5NTJERkRGRkYwMkQxQjExQ0EwRTUwID0gewotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7Ci0JCQl9OwotCQkJaXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLy8wNTAKLS8vMDUxCi0vLzA1MgotLy8wNTMKLS8vMDU0Ci0vLzA2MAotLy8wNjEKLS8vMDYyCi0vLzA2MwotLy8wNjQKLQkJMDY0MEJBQTRGRkYwMzIzQTExQ0EwRTUwID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3JrUmVmZXJlbmNlOwotCQkJbmFtZSA9IEFwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrOwotCQkJcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrOwotCQkJcmVmVHlwZSA9IDA7Ci0JCX07Ci0JCTA2NDBCQUE1RkZGMDMyM0ExMUNBMEU1MCA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya1JlZmVyZW5jZTsKLQkJCW5hbWUgPSBDb3JlU2VydmljZXMuZnJhbWV3b3JrOwotCQkJcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcms7Ci0JCQlyZWZUeXBlID0gMDsKLQkJfTsKLQkJMDZCNjRBNEEwMEJCRDAyNTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBtb3ZlLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMDZCNjRBNEIwMEJCRDAyNTdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDA2QjY0QTRBMDBCQkQwMjU3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLS8vMDYwCi0vLzA2MQotLy8wNjIKLS8vMDYzCi0vLzA2NAotLy8wQzAKLS8vMEMxCi0vLzBDMgotLy8wQzMKLS8vMEM0Ci0JCTBDMTE2MjYwMDBCRDNBODk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gb3NfdW5peC5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0vLzBDMAotLy8wQzEKLS8vMEMyCi0vLzBDMwotLy8wQzQKLS8vMEQwCi0vLzBEMQotLy8wRDIKLS8vMEQzCi0vLzBENAotCQkwRDI5NjMxQjAwQzMwM0IwN0YwMDAwMDEgPSB7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyNzM3OThDRjAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4REYwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTBDMTE2MjYwMDBCRDNBODk3RjAwMDAwMSwKLQkJCQlGNUUyQzUzRjAwRkFDRDA5MDEwMDAwMDEsCi0JCQkpOwotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQluYW1lID0gIk1hYyBQb3J0IFNvdXJjZXMiOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0vLzBEMAotLy8wRDEKLS8vMEQyCi0vLzBEMwotLy8wRDQKLS8vMTIwCi0vLzEyMQotLy8xMjIKLS8vMTIzCi0vLzEyNAotCQkxMkZENkExOTAwQzUwMDE2N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGd1aV9tYWMuaWNuczsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkxMkZENkExQTAwQzUwMDE2N0YwMDAwMDEgPSB7Ci0JCQlmaWxlUmVmID0gMTJGRDZBMTkwMEM1MDAxNjdGMDAwMDAxOwotCQkJaXNhID0gUEJYQnVpbGRGaWxlOwotCQkJc2V0dGluZ3MgPSB7Ci0JCQl9OwotCQl9OwotLy8xMjAKLS8vMTIxCi0vLzEyMgotLy8xMjMKLS8vMTI0Ci0vLzE5MAotLy8xOTEKLS8vMTkyCi0vLzE5MwotLy8xOTQKLQkJMTk1REY4QzlGRTlENEYwNjExQ0EyQ0JCID0gewotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDI0OUE2NjVGRjM4OERDNTExQ0EyQ0VBLAotCQkJKTsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0vLzE5MAotLy8xOTEKLS8vMTkyCi0vLzE5MwotLy8xOTQKLS8vMjAwCi0vLzIwMQotLy8yMDIKLS8vMjAzCi0vLzIwNAotCQkyMDI4NkMyOEZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQkwNTk1MkRGQ0ZGRjAyRDFCMTFDQTBFNTAsCi0JCQkJMDU5NTJERkRGRkYwMkQxQjExQ0EwRTUwLAotCQkJKTsKLQkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQltYWluR3JvdXAgPSAyMDI4NkMyOUZEQ0Y5OTk2MTFDQTJDRUE7Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJdGFyZ2V0cyA9ICgKLQkJCQkyMDI4NkMzNEZEQ0Y5OTk2MTFDQTJDRUEsCi0JCQkpOwotCQl9OwotCQkyMDI4NkMyOUZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyNzM3OTkzMDAwQjM2QkY3N0YwMDAwMDEsCi0JCQkJMDE0RDNCODkwMEJCNTJBMDdGMDAwMDAxLAotCQkJCTAxNEQzQjhCMDBCQjU5Q0E3RjAwMDAwMSwKLQkJCQlGNUQwRkIyQjAwRjhDMjlBMDEwMDAwMDEsCi0JCQkJMEQyOTYzMUIwMEMzMDNCMDdGMDAwMDAxLAotCQkJCTIwMjg2QzJBRkRDRjk5OTYxMUNBMkNFQSwKLQkJCQkyMDI4NkMyQ0ZEQ0Y5OTk2MTFDQTJDRUEsCi0JCQkJMjAyODZDMzJGRENGOTk5NjExQ0EyQ0VBLAotCQkJCTE5NURGOEM5RkU5RDRGMDYxMUNBMkNCQiwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCW5hbWUgPSB2aW07Ci0JCQlwYXRoID0gIiI7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjAyODZDMkFGRENGOTk5NjExQ0EyQ0VBID0gewotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjAyODZDMkJGRENGOTk5NjExQ0EyQ0VBLAotCQkJCTI3Mzc5OEJGMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThDMDAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4QzEwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEMyMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThDMzAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4QzQwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEM1MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThDNzAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4QzgwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTdFM0FBQUQ3MDQ4NDFDMDAwMEVGQzIwRSwKLQkJCQkyNzM3OThDOTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4Q0IwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OENDMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThDRDAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RDEwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEQ3MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThEODAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RDkwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OERBMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThEQjAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4REMwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEREMDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkwNkI2NEE0QTAwQkJEMDI1N0YwMDAwMDEsCi0JCQkJMjczNzk5MkEwMEIzNkJBNzdGMDAwMDAxLAotCQkJCTI3Mzc5OTJCMDBCMzZCQTc3RjAwMDAwMSwKLQkJCQkyNzM3OThERTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RTMwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEU0MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThFNjAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RTcwMEIzNkIwMzdGMDAwMDAxLAotCQkJCTI3Mzc5OEU5MDBCMzZCMDM3RjAwMDAwMSwKLQkJCQkyNzM3OThFQTAwQjM2QjAzN0YwMDAwMDEsCi0JCQkJMjczNzk4RUIwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEVFMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OThFRjAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RjAwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEYzMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCW5hbWUgPSBTb3VyY2VzOwotCQkJcGF0aCA9ICIiOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTIwMjg2QzJCRkRDRjk5OTYxMUNBMkNFQSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gbWFpbi5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTIwMjg2QzJDRkRDRjk5OTYxMUNBMkNFQSA9IHsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTEyRkQ2QTE5MDBDNTAwMTY3RjAwMDAwMSwKLQkJCQkwMEVGODA4MjAwQzQ5QTg1N0YwMDAwMDEsCi0JCQkJMjczNzk4RDAwMEIzNkIwMzdGMDAwMDAxLAotCQkJKTsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJbmFtZSA9IFJlc291cmNlczsKLQkJCXBhdGggPSAiIjsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyMDI4NkMzMkZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyMDI4NkMzM0ZEQ0Y5OTk2MTFDQTJDRUEsCi0JCQkJMDI0OUE2NjlGRjM4OEUzOTExQ0EyQ0VBLAotCQkJCTA2NDBCQUE0RkZGMDMyM0ExMUNBMEU1MCwKLQkJCQkwNjQwQkFBNUZGRjAzMjNBMTFDQTBFNTAsCi0JCQkpOwotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyI7Ci0JCQlwYXRoID0gIiI7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjAyODZDMzNGRENGOTk5NjExQ0EyQ0VBID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3JrUmVmZXJlbmNlOwotCQkJbmFtZSA9IENhcmJvbi5mcmFtZXdvcms7Ci0JCQlwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsKLQkJCXJlZlR5cGUgPSAwOwotCQl9OwotCQkyMDI4NkMzNEZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQkyMDI4NkMzNUZEQ0Y5OTk2MTFDQTJDRUEsCi0JCQkJMjAyODZDMzZGRENGOTk5NjExQ0EyQ0VBLAotCQkJCTIwMjg2QzM4RkRDRjk5OTYxMUNBMkNFQSwKLQkJCQkyMDI4NkMzQkZEQ0Y5OTk2MTFDQTJDRUEsCi0JCQkJMDQzMTM4OTJGRTMwMzVDOUMwMkFBQzA3LAotCQkJKTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICIiOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAicHJvdG8gL0RldmVsb3Blci9IZWFkZXJzL0ZsYXRDYXJib24iOwotCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0FwcGxpY2F0aW9ucyI7Ci0JCQkJTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAiIjsKLQkJCQlPVEhFUl9DRkxBR1MgPSAiLURNQUNPU19YX1VOSVgiOwotCQkJCU9USEVSX0xERkxBR1MgPSAiIjsKLQkJCQlPVEhFUl9SRVpGTEFHUyA9ICIiOwotCQkJCVBST0RVQ1RfTkFNRSA9IFZpbTsKLQkJCQlTRUNUT1JERVJfRkxBR1MgPSAiIjsKLQkJCQlXQVJOSU5HX0NGTEFHUyA9ICItV21vc3QgLVduby1mb3VyLWNoYXItY29uc3RhbnRzIC1Xbm8tdW5rbm93bi1wcmFnbWFzIjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IGFwcDsKLQkJCX07Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJaXNhID0gUEJYQXBwbGljYXRpb25UYXJnZXQ7Ci0JCQluYW1lID0gdmltOwotCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvQXBwbGljYXRpb25zIjsKLQkJCXByb2R1Y3ROYW1lID0gdmltOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDAyNDlBNjY1RkYzODhEQzUxMUNBMkNFQTsKLQkJCXByb2R1Y3RTZXR0aW5nc1hNTCA9ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4KLTwhRE9DVFlQRSBwbGlzdCBTWVNURU0gXCJmaWxlOi8vbG9jYWxob3N0L1N5c3RlbS9MaWJyYXJ5L0RURHMvUHJvcGVydHlMaXN0LmR0ZFwiPgotPHBsaXN0IHZlcnNpb249XCIwLjlcIj4KLTxkaWN0PgotCTxrZXk+Q0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgotCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVEb2N1bWVudFR5cGVzPC9rZXk+Ci0JPGFycmF5PgotCSAgICA8ZGljdD4KLQkJPGtleT5DRkJ1bmRsZVR5cGVFeHRlbnNpb25zPC9rZXk+Ci0JCTxhcnJheT4KLQkJICAgIDxzdHJpbmc+Kjwvc3RyaW5nPgotCQk8L2FycmF5PgotCQk8a2V5PkNGQnVuZGxlVHlwZUljb25GaWxlPC9rZXk+Ci0JCTxzdHJpbmc+dHh0LmljbnM8L3N0cmluZz4KLQkJPGtleT5DRkJ1bmRsZVR5cGVOYW1lPC9rZXk+Ci0JCTxzdHJpbmc+TlNTdHJpbmdQYm9hcmRUeXBlPC9zdHJpbmc+Ci0JCTxrZXk+Q0ZCdW5kbGVUeXBlT1NUeXBlczwva2V5PgotCQk8YXJyYXk+Ci0JCSAgICA8c3RyaW5nPioqKio8L3N0cmluZz4KLQkJPC9hcnJheT4KLQkJPGtleT5DRkJ1bmRsZVR5cGVSb2xlPC9rZXk+Ci0JCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+Ci0JICAgIDwvZGljdD4KLQk8L2FycmF5PgotCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz5WaW08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlR2V0SW5mb1N0cmluZzwva2V5PgotCTxzdHJpbmc+PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0cmluZz5ndWlfbWFjLmljbnM8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgotCTxzdHJpbmc+Ny4wYWE8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlTmFtZTwva2V5PgotCTxzdHJpbmc+VmltPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5BUFBMPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+VmltIDcuMGFhPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNpZ25hdHVyZTwva2V5PgotCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4wLjE8L3N0cmluZz4KLQk8a2V5PkNTUmVzb3VyY2VzRmlsZU1hcHBlZDwva2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+Ci0iOwotCQkJc2hvdWxkVXNlSGVhZGVybWFwID0gMTsKLQkJfTsKLQkJMjAyODZDMzVGRENGOTk5NjExQ0EyQ0VBID0gewotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTI3Mzc5OEY0MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OThGNTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RjYwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEY3MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OThGODAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RjkwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEZBMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OThGQjAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RkMwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OEZEMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OThGRTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk4RkYwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTAwMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkwMTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MDIwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTJEMDBCMzZCQTc3RjAwMDAwMSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKLQkJCW5hbWUgPSBIZWFkZXJzOwotCQl9OwotCQkyMDI4NkMzNkZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMTJGRDZBMUEwMEM1MDAxNjdGMDAwMDAxLAotCQkJKTsKLQkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7Ci0JCQluYW1lID0gIkJ1bmRsZSBSZXNvdXJjZXMiOwotCQl9OwotCQkyMDI4NkMzOEZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMjAyODZDMzlGRENGOTk5NjExQ0EyQ0VBLAotCQkJCTI3Mzc5OTAzMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkwNDAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MDUwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTA2MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkwNzAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MDgwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTA5MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkwQTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MEIwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTBDMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkwRDAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MEUwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTBGMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkxMDAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MTEwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTEzMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkxNDAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MTUwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTE2MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkxNzAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MTgwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTE5MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkxQTAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MUQwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTFFMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkxRjAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MjAwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTIxMDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkyMjAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MjMwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTI1MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkyNjAwQjM2QjA0N0YwMDAwMDEsCi0JCQkJMjczNzk5MjcwMEIzNkIwNDdGMDAwMDAxLAotCQkJCTI3Mzc5OTI4MDBCMzZCMDQ3RjAwMDAwMSwKLQkJCQkyNzM3OTkyRTAwQjM2QkE3N0YwMDAwMDEsCi0JCQkJMjczNzk5MkYwMEIzNkJBNzdGMDAwMDAxLAotCQkJCTA2QjY0QTRCMDBCQkQwMjU3RjAwMDAwMSwKLQkJCQlGNUQwRkIyRDAwRjhDMkJGMDEwMDAwMDEsCi0JCQkJRjVFMkM1NDAwMEZBQ0QwOTAxMDAwMDAxLAotCQkJCUY1Q0MzMjIwMDE4RTNGNjgwMTg5MTU2MSwKLQkJCQk3RTNBQUFEODA0ODQxQzAwMDBFRkMyMEUsCi0JCQkJN0U1NTZFMTQwNDg0MUY3OTAwODgyNTg1LAotCQkJKTsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJbmFtZSA9IFNvdXJjZXM7Ci0JCX07Ci0JCTIwMjg2QzM5RkRDRjk5OTYxMUNBMkNFQSA9IHsKLQkJCWZpbGVSZWYgPSAyMDI4NkMyQkZEQ0Y5OTk2MTFDQTJDRUE7Ci0JCQlpc2EgPSBQQlhCdWlsZEZpbGU7Ci0JCQlzZXR0aW5ncyA9IHsKLQkJCQlBVFRSSUJVVEVTID0gKAotCQkJCSk7Ci0JCQl9OwotCQl9OwotCQkyMDI4NkMzQkZEQ0Y5OTk2MTFDQTJDRUEgPSB7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMjAyODZDM0NGRENGOTk5NjExQ0EyQ0VBLAotCQkJCTAyNDlBNjZBRkYzODhFMzkxMUNBMkNFQSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCW5hbWUgPSAiRnJhbWV3b3JrcyAmIExpYnJhcmllcyI7Ci0JCX07Ci0JCTIwMjg2QzNDRkRDRjk5OTYxMUNBMkNFQSA9IHsKLQkJCWZpbGVSZWYgPSAyMDI4NkMzM0ZEQ0Y5OTk2MTFDQTJDRUE7Ci0JCQlpc2EgPSBQQlhCdWlsZEZpbGU7Ci0JCQlzZXR0aW5ncyA9IHsKLQkJCX07Ci0JCX07Ci0vLzIwMAotLy8yMDEKLS8vMjAyCi0vLzIwMwotLy8yMDQKLS8vMjcwCi0vLzI3MQotLy8yNzIKLS8vMjczCi0vLzI3NAotCQkyNzM3OThCRTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGFzY2lpLmg7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4QkYwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBidWZmZXIuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDMDAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGNoYXJzZXQuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDMTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGRpZmYuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDMjAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGRpZ3JhcGguYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDMzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGVkaXQuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDNDAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGV2YWwuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDNTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGV4X2NtZHMuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDNjAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGV4X2NtZHMuaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDNzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGV4X2NtZHMyLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4QzgwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBleF9kb2NtZC5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEM5MDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZXhfZ2V0bG4uYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDQTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGZlYXR1cmUuaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThDQjAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGZpbGVpby5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OENDMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZm9sZC5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OENEMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ2V0Y2hhci5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OENFMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ2xvYmFscy5oOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OENGMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ3VpX21hYy5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEQwMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ3VpX21hYy5yOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEQxMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gZ3VpLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RDIwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBndWkuaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEMzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IGludGVncmF0aW9uLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RDQwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBpbnRlZ3JhdGlvbi5oOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEQ1MDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0ga2V5bWFwLmg7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RDYwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBtYWNyb3MuaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThENzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1hcmsuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEODAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1lbWZpbGUuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEOTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1lbWxpbmUuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEQTAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1lbnUuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEQjAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1lc3NhZ2UuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThEQzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1pc2MxLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4REQwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBtaXNjMi5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OERFMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gb3BzLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4REYwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBvc19tYWMuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFMDAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG9zX21hYy5oOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEUxMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gcHJvdG8uaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFMjAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHB0eS5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEUzMDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gcXVpY2tmaXguYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFNDAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHJlZ2V4cC5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEU1MDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gcmVnZXhwLmg7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RTYwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBzY3JlZW4uYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFNzAwQjM2QjAzN0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHNlYXJjaC5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEU4MDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gc3RydWN0cy5oOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEU5MDBCMzZCMDM3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gc3ludGF4LmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RUEwMEIzNkIwMzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSB0YWcuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFQjAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHRlcm0uYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFQzAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHRlcm0uaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFRDAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHRlcm1saWIuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThFRTAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHVpLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RUYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSB1bmRvLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RjAwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSB2ZXJzaW9uLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RjEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSB2ZXJzaW9uLmg7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk4RjIwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSB2aW0uaDsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OThGMzAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IHdpbmRvdy5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OEY0MDBCMzZCMDQ3RjAwMDAwMSA9IHsKLQkJCWZpbGVSZWYgPSAyNzM3OThCRTAwQjM2QjAzN0YwMDAwMDE7Ci0JCQlpc2EgPSBQQlhCdWlsZEZpbGU7Ci0JCQlzZXR0aW5ncyA9IHsKLQkJCQlBVFRSSUJVVEVTID0gKAotCQkJCSk7Ci0JCQl9OwotCQl9OwotCQkyNzM3OThGNTAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlmaWxlUmVmID0gMjczNzk4QzYwMEIzNkIwMzdGMDAwMDAxOwotCQkJaXNhID0gUEJYQnVpbGRGaWxlOwotCQkJc2V0dGluZ3MgPSB7Ci0JCQl9OwotCQl9OwotCQkyNzM3OThGNjAwQjM2QjA0N0YwMDAwMDEgPSB7Ci0JCQlmaWxlUmVmID0gMjczNzk4Q0EwMEIzNkIwMzdGMDAwMDAxOwotCQkJaXNhID0gUEJYQnVpbGRGaWxlOwotCQkJc2V0dGluZ3MgPSB7Ci0JCQkJQVRUUklCVVRFUyA9ICgKLQkJCQkpOwotCQkJfTsKLQkJfTsKLQkJMjczNzk4RjcwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OENFMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RjgwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQyMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RjkwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ0MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ1MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkIwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ2MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkMwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEUwMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkQwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEUxMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU1MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk4RkYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU4MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDAwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVDMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEYxMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDIwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEYyMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDMwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEJGMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDQwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEMwMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEMxMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEMyMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDcwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEMzMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDgwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEM0MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MDkwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEM1MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEM3MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEIwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEM4MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEMwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEM5MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEQwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OENCMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OENDMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MEYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OENEMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTAwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OENGMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQxMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTMwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ3MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTQwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ4MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQ5MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OERBMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTcwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OERCMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTgwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OERDMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MTkwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEREMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MUEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OERFMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MUQwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEUzMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MUUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU0MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MUYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU2MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjAwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU3MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjEwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEU5MDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjIwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVBMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjMwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVCMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjUwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVFMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjYwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVGMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjcwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEYwMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjgwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEYzMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MjkwMEIzNkIwNDdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEQwMDBCMzZCMDM3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MkEwMEIzNkJBNzdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBub3JtYWwuYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTkyQjAwQjM2QkE3N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG9wdGlvbi5jOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTJDMDBCMzZCQTc3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQlwYXRoID0gb3B0aW9uLmg7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5MkQwMEIzNkJBNzdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OTJDMDBCMzZCQTc3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MkUwMEIzNkJBNzdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OTJBMDBCMzZCQTc3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MkYwMEIzNkJBNzdGMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OTJCMDBCMzZCQTc3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJMjczNzk5MzAwMEIzNkJGNzdGMDAwMDAxID0gewotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjczNzk5MzEwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTMyMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTkzMzAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5MzQwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTM1MDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTkzNjAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5MzcwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTM4MDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTkzOTAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5M0EwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTNCMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTkzQzAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5M0QwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTNFMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTkzRjAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NDAwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTQxMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk0MjAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NDMwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTQ0MDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk0NTAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NDYwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTQ3MDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk0ODAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NDkwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTRBMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk0QjAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NEMwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTREMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk0RTAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NEYwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTUwMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk1MTAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NTIwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTUzMDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk1NDAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NTUwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTU2MDBCMzZDMzk3RjAwMDAwMSwKLQkJCQkyNzM3OTk1NzAwQjM2QzM5N0YwMDAwMDEsCi0JCQkJMjczNzk5NTgwMEIzNkMzOTdGMDAwMDAxLAotCQkJCTI3Mzc5OTU5MDBCMzZDMzk3RjAwMDAwMSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCW5hbWUgPSBQcm90b3R5cGU7Ci0JCQlwYXRoID0gcHJvdG87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5MzEwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBidWZmZXIucHJvOwotCQkJcGF0aCA9IHByb3RvL2J1ZmZlci5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5MzIwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBjaGFyc2V0LnBybzsKLQkJCXBhdGggPSBwcm90by9jaGFyc2V0LnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTkzMzAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IGRpZmYucHJvOwotCQkJcGF0aCA9IHByb3RvL2RpZmYucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTM0MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gZGlncmFwaC5wcm87Ci0JCQlwYXRoID0gcHJvdG8vZGlncmFwaC5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5MzUwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBlZGl0LnBybzsKLQkJCXBhdGggPSBwcm90by9lZGl0LnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTkzNjAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IGV2YWwucHJvOwotCQkJcGF0aCA9IHByb3RvL2V2YWwucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTM3MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gZXhfY21kcy5wcm87Ci0JCQlwYXRoID0gcHJvdG8vZXhfY21kcy5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5MzgwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBleF9jbWRzMi5wcm87Ci0JCQlwYXRoID0gcHJvdG8vZXhfY21kczIucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTM5MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gZXhfZG9jbWQucHJvOwotCQkJcGF0aCA9IHByb3RvL2V4X2RvY21kLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTkzQTAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IGV4X2dldGxuLnBybzsKLQkJCXBhdGggPSBwcm90by9leF9nZXRsbi5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5M0IwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBmaWxlaW8ucHJvOwotCQkJcGF0aCA9IHByb3RvL2ZpbGVpby5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5M0MwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBmb2xkLnBybzsKLQkJCXBhdGggPSBwcm90by9mb2xkLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTkzRDAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IGdldGNoYXIucHJvOwotCQkJcGF0aCA9IHByb3RvL2dldGNoYXIucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTNFMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gZ3VpX21hYy5wcm87Ci0JCQlwYXRoID0gcHJvdG8vZ3VpX21hYy5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5M0YwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBndWkucHJvOwotCQkJcGF0aCA9IHByb3RvL2d1aS5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5NDAwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBtYWluLnBybzsKLQkJCXBhdGggPSBwcm90by9tYWluLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk0MTAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IG1hcmsucHJvOwotCQkJcGF0aCA9IHByb3RvL21hcmsucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTQyMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gbWVtZmlsZS5wcm87Ci0JCQlwYXRoID0gcHJvdG8vbWVtZmlsZS5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5NDMwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBtZW1saW5lLnBybzsKLQkJCXBhdGggPSBwcm90by9tZW1saW5lLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk0NDAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IG1lbnUucHJvOwotCQkJcGF0aCA9IHByb3RvL21lbnUucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTQ1MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gbWVzc2FnZS5wcm87Ci0JCQlwYXRoID0gcHJvdG8vbWVzc2FnZS5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5NDYwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSBtaXNjMS5wcm87Ci0JCQlwYXRoID0gcHJvdG8vbWlzYzEucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTQ3MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gbWlzYzIucHJvOwotCQkJcGF0aCA9IHByb3RvL21pc2MyLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk0ODAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IG1vdmUucHJvOwotCQkJcGF0aCA9IHByb3RvL21vdmUucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTQ5MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gbm9ybWFsLnBybzsKLQkJCXBhdGggPSBwcm90by9ub3JtYWwucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTRBMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gb3BzLnBybzsKLQkJCXBhdGggPSBwcm90by9vcHMucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTRCMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gb3B0aW9uLnBybzsKLQkJCXBhdGggPSBwcm90by9vcHRpb24ucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTRDMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gb3NfbWFjLnBybzsKLQkJCXBhdGggPSBwcm90by9vc19tYWMucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTREMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gcHR5LnBybzsKLQkJCXBhdGggPSBwcm90by9wdHkucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTRFMDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gcXVpY2tmaXgucHJvOwotCQkJcGF0aCA9IHByb3RvL3F1aWNrZml4LnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk0RjAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHJlZ2V4cC5wcm87Ci0JCQlwYXRoID0gcHJvdG8vcmVnZXhwLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1MDAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHNjcmVlbi5wcm87Ci0JCQlwYXRoID0gcHJvdG8vc2NyZWVuLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1MTAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHNlYXJjaC5wcm87Ci0JCQlwYXRoID0gcHJvdG8vc2VhcmNoLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1MjAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHN5bnRheC5wcm87Ci0JCQlwYXRoID0gcHJvdG8vc3ludGF4LnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1MzAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHRhZy5wcm87Ci0JCQlwYXRoID0gcHJvdG8vdGFnLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1NDAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHRlcm0ucHJvOwotCQkJcGF0aCA9IHByb3RvL3Rlcm0ucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTU1MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gdGVybWxpYi5wcm87Ci0JCQlwYXRoID0gcHJvdG8vdGVybWxpYi5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5NTYwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSB1aS5wcm87Ci0JCQlwYXRoID0gcHJvdG8vdWkucHJvOwotCQkJcmVmVHlwZSA9IDQ7Ci0JCX07Ci0JCTI3Mzc5OTU3MDBCMzZDMzk3RjAwMDAwMSA9IHsKLQkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7Ci0JCQluYW1lID0gdW5kby5wcm87Ci0JCQlwYXRoID0gcHJvdG8vdW5kby5wcm87Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJMjczNzk5NTgwMEIzNkMzOTdGMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCW5hbWUgPSB2ZXJzaW9uLnBybzsKLQkJCXBhdGggPSBwcm90by92ZXJzaW9uLnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQkyNzM3OTk1OTAwQjM2QzM5N0YwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJbmFtZSA9IHdpbmRvdy5wcm87Ci0JCQlwYXRoID0gcHJvdG8vd2luZG93LnBybzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotLy8yNzAKLS8vMjcxCi0vLzI3MgotLy8yNzMKLS8vMjc0Ci0vLzdFMAotLy83RTEKLS8vN0UyCi0vLzdFMwotLy83RTQKLQkJN0UzQUFBRDcwNDg0MUMwMDAwRUZDMjBFID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBleF9ldmFsLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJN0UzQUFBRDgwNDg0MUMwMDAwRUZDMjBFID0gewotCQkJZmlsZVJlZiA9IDdFM0FBQUQ3MDQ4NDFDMDAwMEVGQzIwRTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJN0U1NTZFMTQwNDg0MUY3OTAwODgyNTg1ID0gewotCQkJZmlsZVJlZiA9IDI3Mzc5OEVEMDBCMzZCMDQ3RjAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLS8vN0UwCi0vLzdFMQotLy83RTIKLS8vN0UzCi0vLzdFNAotLy9GNTAKLS8vRjUxCi0vL0Y1MgotLy9GNTMKLS8vRjU0Ci0JCUY1Q0MzMjIwMDE4RTNGNjgwMTg5MTU2MSA9IHsKLQkJCWZpbGVSZWYgPSAyNzM3OThFMjAwQjM2QjAzN0YwMDAwMDE7Ci0JCQlpc2EgPSBQQlhCdWlsZEZpbGU7Ci0JCQlzZXR0aW5ncyA9IHsKLQkJCX07Ci0JCX07Ci0JCUY1RDBGQjJCMDBGOEMyOUEwMTAwMDAwMSA9IHsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUY1RDBGQjJDMDBGOEMyQkYwMTAwMDAwMSwKLQkJCSk7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCW5hbWUgPSAiT3B0aW9uYWwgU291cmNlIjsKLQkJCXBhdGggPSAiIjsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQlGNUQwRkIyQzAwRjhDMkJGMDEwMDAwMDEgPSB7Ci0JCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwotCQkJcGF0aCA9IG1ieXRlLmM7Ci0JCQlyZWZUeXBlID0gNDsKLQkJfTsKLQkJRjVEMEZCMkQwMEY4QzJCRjAxMDAwMDAxID0gewotCQkJZmlsZVJlZiA9IEY1RDBGQjJDMDBGOEMyQkYwMTAwMDAwMTsKLQkJCWlzYSA9IFBCWEJ1aWxkRmlsZTsKLQkJCXNldHRpbmdzID0gewotCQkJfTsKLQkJfTsKLQkJRjVFMkM1M0YwMEZBQ0QwOTAxMDAwMDAxID0gewotCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKLQkJCXBhdGggPSBvc19tYWNvc3guYzsKLQkJCXJlZlR5cGUgPSA0OwotCQl9OwotCQlGNUUyQzU0MDAwRkFDRDA5MDEwMDAwMDEgPSB7Ci0JCQlmaWxlUmVmID0gRjVFMkM1M0YwMEZBQ0QwOTAxMDAwMDAxOwotCQkJaXNhID0gUEJYQnVpbGRGaWxlOwotCQkJc2V0dGluZ3MgPSB7Ci0JCQl9OwotCQl9OwotCX07Ci0Jcm9vdE9iamVjdCA9IDIwMjg2QzI4RkRDRjk5OTYxMUNBMkNFQTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9vc19tYWMuc2l0LmhxeCBiL3NyYy9vc19tYWMuc2l0LmhxeApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwODhiMy4uMDAwMDAwMAotLS0gYS9zcmMvb3NfbWFjLnNpdC5ocXgKKysrIC9kZXYvbnVsbApAQCAtMSw0MzkgKzAsMCBAQAotKFRoaXMgZmlsZSBtdXN0IGJlIGNvbnZlcnRlZCB3aXRoIEJpbkhleCA0LjApCi06JGhDVEU1ZGUsTUJaRUAwYCxSMFRHISI2NTkzZThkUDgpMyMzIiYnQiEqISVaSEs2Ryg5UUNOUGQpI0tNKzYlCi1qMTZGWS02TmoxIyIiRScmTkMnUFopJjBqRmg0UEVBLVgpJVBaQmJpWCknS2RHKCFrLGJwaE4hLVpCQGFLQyc0Ci1URVIwakZiak1FZmRbOGg0ZUNRQypHI20wI0tTISI0ISEhJidCISohJEZKISIhKiEkRlByZiREQFA4UTljQ0EqCi1mQ0A1UFQzI1BOITMiISEhbCEhI2BxM0QmWStyU1QzIzMkM1tRRDMhJGhGZCEhJiQoISohJSRgImZEQGRZMDVpCi1mLFFlTUYhISFHakswNjkiYjNlRyo0MyUxISNKIWohIzMjUyEhTiFHI2BHNVFINCYlcFJhLUslRTRVa1pUYVFVCi0iLStYNikmLEskQFltKmhHQyk5aFtEOVQpWkVIU2VlSGUlJGxyNDhUOXAkTnAmUGJBcVUqcCNDISErcEJxQzIkCi0rKDMxbWpiKGQiY3A2SVRiSWJVIlBxTkYjJVppOSRjQVg2ISdBTiEhJiZWNERDJGlUJVNTVExDISFjW1lRbDlECi1RcDVNUktBRyk1MzVGVnFtTiFONGxJWyUoQVosQiJEKU1YVCEhNkohJmQ2RmtbbSVtVFNTLCUwYyZxS2BgYDROCi1icEFOajNKMSdSaWBMSDVpRmloYGNmcVU5cjZQSEQxKGwwVlQiZGIoYTNmSjZLalNGSjFNJiJTRDMhMDMta2JkCi0sNXFhVk5GbDVjaEgnQmhtMUMmSWJFVEghZi1aRDhpWClwWkNtTWQzWEMmJjJsOUczMCUjQWNRKEcpZSFRVVpVCi1waXAyRkdlQWpsTTksTWZaLGBAQGxkY1FVREU5J1hwVVlNVFJTMGZJKmQ1MyRJYjVWVWZNRkIrR2M4OClIMiRNCi1OW0BZKChAMExEOEpbTTNhaScxKGFJTGlKK2xDZUBhTUZxQSQqTkkpWDRNRydLMiprMEZGZjkhbSUlR0piK2A1Ci0nJ00jLFpORGQlNWhrSVNCTCIqcnEsY0lgIixASWxqRVEqZCk4UmwxSitBYmNAZW1qNlFmNkpZTkBALWpgcCtHCi1YTiEjWllNLEpoLVFqSSgpLGQlUCpYRGIySWY1IVBiJyIjI0s5OGpqaDZiZGhYKjInclZVQFpFQjRmTmFVVWtoCi0lZDJRWkxVJ2FFUCQmLUNEQTRZYGEkMmhSMmlVaSUyLTMhSjA1VGJCZSIxcVtwQmhCUVhOMXIiSzA0SDJSUiJLCi00aWtyKko4azlbMGFaSTlrNCsnIiJsOCImbTlWNlVlOVFTVXJycmNmU0wtZUsrWCokQkNtTFRsOHFhOGRsZERqCi0hSWxyMmxlck5DY2EkYFVmKCQsVE4wcjJDVCRHTlVTS0RsUlMxYCI0JUtqcUYja0FbQm1aMyEwIkNJVjIlUFphCi1hTS1acltrKmwpRFBSVEMsS3BYSkZWcDZWa3FqMTNhUWBsTFEjRnEsaFlGMTJbNiMhRExmTlZCUVlRY0AoMCZgCi1ybHI5JiVVYm1wK1goJlBFLWIxVitVYDJCaE1JYFYiaFohTiM5KFA2LEk2YmxhLVFoLCNYLWE0bSFKYk1KJiMnCi0nUFRNSE4hI1BsWGtaQiQwRVMpTChbYFllVWszSEc5LSkhLUhLVllDLEVtMUJCJWopZGA4bS1pLCoxMFUqTlRhCi1MKDZxTUlgZkJYI1YyRElrYSdsYHIyTCMyJjk1NmEiVUJYSFZiRyYlZFglRypBRzNKRS0zWmJUJWZGRitrSWBWCi1QYExQYClUamJgKFMmSyNTLDMqYStsMEBMJThZIVRxTDUnZmJoclFqbEIiS0dERmZQQFErMyEraGNFIXBSW01wCi0taSdyJklONS1ZTkdbIkUrW1AjTkZtKiEhci1qRFRJQltBKUFgcSVUIVNJciowVTQoMjZMR1VRLE5OUVVtRzkzCi1kJEZOWkMoK0JLKWBsUiYnJCdmRCNOUidUViZGNSVgRUgiWGVFUFFIY1psalticWltUUssMjFsKipCNjNFZkAsCi1aKVUwZGxRLFZgSitCQiknJitiNURpak40OSNMRUkhYTM0aEomU2pbYEFQI3BgJkQwJnJqVGZoR0lmRlNbazAhCi1bW2QwKEY1LGVQYyFrYy1oUjFQIWRLYGghNVBJalpyIkVxWDkjZEpwVTQoMlZiU2M4ZWU4NjErKzMhI1NyY1kjCi1tYTNYZmJBcSxicjRxazFbRzlmZGgqaGkkcSRQM2lgUTRbckRCZSU4alZDalNraWFHWFImbWFAanAmWTNsYlVJCi05KGtDJklAZUgkLWIxLCZDVVpGRFlpWjFyREctTWIyZWsoSzFGZHAiLSg1QFEmOCRKIiImIkgiMVYycUZENEQ5Ci0xaVszU0tBa0EzLUolZE5gVVhCU0opUDlRbVJSJkdpRnJOOE1KZFFBamIqMidwVXJlMEFHY201cm1VOTYlJGtyCi1rNiFpNkhLZlU1JjhmSWhQOCwnIipAcGxJZiciRlFTMnInOGRxSFlmWVlaNGY0ZSxRW2hLUnJlWVYnNiQwQiRGCi1AYEtsWWlIRk1WYkFTU2NKTSZlSExaYHBpNmBYWCFhaWFbMGJBLDNwRiQpZiotSjNGKFhKVTFJciVQJGsqJyFRCi1tY0k1NmxSSCNTKzJHI2ZCMnEqQSNbbDZDMkRQOXFVNmkjOChaMmIqQEpAOSZZImpxJ2JpQ2BQOCpZYSUjLUZCCi0sImtGYUpSInJQNSZbaHBmRGVJZlVqYjBNMzEjUTlESlIoRThaJCdbaGpWVSsjKE1SIjljWSgkIkg2bUpmaHJgCi0hWStgQXBDViMnaSpJKGksYWZUcDZrI1I5LTYzWlZlJUotJ0dQKkxiImInM2kyTjQjRTFAK0dNYEFYWVIiY2BQCi0qJytKOGBxVERHKiEhOVMrMFUxVSVAMzlFQiYjLWVTY2k0WGMzMG0iRkpaTFpWaTJZISljQkskJ2JARSIyakBCCi0pKmhmYmNsciYnMyUmMSlAJDRsNlJtSDQjYCJAWjFhVikiZm04cVo5JSUwKjlAIVBgS2snU2xjIywwVHIrMCdVCi1FaS1yJjEpaS0rSDgmSHFNcjlNMykzWyljSk0icVFlNipSW1pQZic5SVFMRVkrbGJFTEhVKjVESCNbTiRMKFY4Ci1oJVAiNkBlInEpS0wiRVpVVkwhMytWIiYpWStiIlJKNEhFSVtkYkNpLCVqISFWaCItYiZKTUtWQWJZYSFMayI2Ci1iNTVJRFY4aiJxYTUjQjJFLEwlSDZaZWhtbUlmQUI0UUshVVhFTUJlLUZkMnBGbTIhJ3FjcUJkODJtcDZYMSk2Ci1IRUlRaElHWCMkQjlpMTlgaSskQycpVCxyaTQlYVRoYUszWiI2JyFmTTA5TishYktWIjI2KychSCpqTDFGYiVmCi1TVmk0YyMsJmlxWTgmUlZkNitTIkskJCFmWWBpMyhGWGtsS1JUNixySzglRyphKiEhZFY0WCJJMURqSSkiU2pQCi01SVIxWTJUaG1sTmNsOE5HVFAwMkEnJylgLSFNbElFInFxI0BVUCkscCIiUyhjLCNkYWVSI0RhJyVSQGNNNWxFCi1qLSgzcSwlYVNyYzhmI0BsTmlWM0hAWG0jVlBKTVJUWFBZQzUrI1JlMTUpSEgqK0NaWytTIWUzLEQpZU1UI0ZYCi1CQGg4ZlptQkxBTScpNmEwa0kqaktBVEZIZkFjUmQ1OWM5NDVFKHErNWw0VCVHTUk0aCEhOSxqMkxtJHJLY0pWCi0nSDNjSEZabC1rTWlNS1ZTRkZLazMhI1RqaTU1aiRSI2AocVA4My1JImpRRmBmUUsxQicyRSlFWmVwSEMmWClMCi0tclNTVFtIWVM0LE5yRHEnSUtkMCI0UyJBJGtFYEEwa2oqbUBmbGtGJUFCSjgtOVpGSDkzZFUsSShrKVJkbUMxCi0xKiJsYDFFZCZmIVZpYyhEYHIkNClDZmthSmxbR0JtZCMlaVohLGMwUUsjJE0zZmAoJjlwOSQ5WSsqLWIkbExWCi0tNFBEbTFkJDEzNiotbFg2OE1YRmxNU2tDbCdaTmVHRENFKVRkYlUjJyNbNHJkcjJoMUBAJyZyM1NEcVFTUGgnCi01J2sxRUwzOWszcSgyJmVyVHFBVCsiOW1hUDJrQUlpNURxJmU4VnFZQkpqW0ZWYCwnJkZIJWBrQ2xNQSYqMWgxCi1TUyQyWWBULFolS1kmRFlUa0Q0UiVSaCYyY1khTCpHNStbIzRbOCpDJUIscElDaklDcjFxVjRaY0ZqWzlTJDBUCi1SYE5MMyErSE5DWityRWxhKCNiNGkoJzRIJkonQktZJ1BVZSEmYnFwZiVZalRQTXEySlEpW05LNCtTS0tBRyxRCi1OWTQ0U0laWEstWlAhQUw2VDJoUWhxRDlpVVtURDlIaSpsQzJJYWsxcXI5SGklaUYwcmppRytOW1VFUjJRTG1BCi1iOWtFTmMzaWIqMkUmYywjcVo5NStRIjQhNGxrYjROYmFoUycsQCJKYU4hJFtkNiJCQDJDJlZUW2gxRkRMaXJpCi1jLWMkQEpJYElURnEtcDFDSWBHbGw2QjAoMCwhRGgjMkM1WSlQbCctaVpQYzM4YGg4MWpVYWhSZDZsWChYYFZiCi05J0MwLVUkZUFRLVlWQ1hwMioyckxwOTFAQ2tbUlNyI2hLZUdUQismYFMhNmwhayshOUciaVBpUDAjJTUyNTEqCi04UEwyZk5NQ3BbcmllbVZlSzAobSZZVCEhIVFRRmtmbCFyW0BgcDIlTCpaWmhVIkAhWU0nLSRqNUgnRENOIyhqCi1TMSo4MW1YWmFmKiwtbVVlKkAqMisyUSdhaStqSkNbbUBDKmUpQSJsQGphSCFmRSFbVUxabWVMcChoQFRCaWkhCi1sa2JHKzJwalRAaVpYY0I1STBLTDBAZSVybFJJUVllUk4pQE1QaEJMRkpmY0VyUSRNYmppJ0BGWyJSaVJbKSVlCi0icDUtVUhNJFBBMCI4UCJlSFQqVXBJW1NNaSssQkZbJEVaUlhiVSJAImYpMVZFY2FBVSxVYlRLLUEpbGYsJllmCi0oREFSUDhASGZbcFYzQGxsTXEhZk1iNWkxaERqLTQpSUYxNVMtY2IpImNBI0RpJ2A0cFgySzghaVBbcnJRUGVsCi1pQDQyJDVmUCsqRyQkZFMhcDVAKUdRNCVMS0NwTmA1UzlsaWYtIWMoIyY1cDBpSVtGTlVKRmk2JVkmVEBMRCZgCi1bUVZLMzRpaCxKNVphNWNZQmxsWyNjUEdAKzJJci1EJilOVCEhVXFbODVSS2BMayEzYSJhQyNTRG1aI0BRW01yCi1iVGJiIlshUTBmLTFya0JJcEwlQy1bZVVGUFghJydEK0YsKllWJHBoQSZiTTE1WCg2aEQiVEJTUzJQVkVbaCUlCi1qY0ZUUGM1azBxNUE5LVhgNlFmWmJJayJoK01IIjYmUVsqQ3ImQ0hrQmtaWTRHTUpjNipKUCNRZkZickIsZk1tCi01YFFrQDJMLGJoVDYkJWMjcSZxNjRJQGBDSUdaS1JLMCVHKVYiUzltOSs2JmFJbCY2UkNJbWAzY2UxMDIoVkJNCi0iRCNBKWtqaWZkJCJkbUZqSkZiVFZrYFpYYiM1bDloRzFaRlZHVlZbYCQoWjA5Ikc4WEI1cDUzRSNYQGpbUiVtCi1JSCUtTDNVJ2wlUE1aaEFYQW1rW0dMYGNLVCUpMiRkU2k0W1FGU2VZRykjaHA0TE4rZmAiVjkha1trVVRpQyU4Ci1NYFBhay1NSDkscik0NmQoTEAhIyFWKU5AWVFhWCc0Vko0QWY0a2VLJVUpSUM0VVVELGlOR3EhJzBjQDhRcDBaCi1AOCFQZCtFNCJWMGIwa0NEQycoVkpmZlU0JyVCVDJqW1AmKUBKQm1aai1UOWtjNCxKcGNILWJBTEFoUjRRNmBmCi0iM0hpI3BQI0ttYDZWR1lNSjBAY0NLUkIsJEkqVCY0WiRWJUFwcFAiLFQ0SE1TSTJTJkRIOE05UDUlKnFKJ3IwCi1KS1JaWnI0QTBKWCUtQidhRTVYSkNyZUtAKmNwKVlqZEVZUk4nM0xpRkdOWHIhUFhLaWtWTSUwR0hHVU0hMUdqCi1UamAsWiVZQUtUW0FaJWEtSWxxa2JHRiEnbSMyVjQrSU5oTixCLDhqIyVYUkRlcmtbSilLVTkiZWJQKVRRYlgjCi1SIyQ4a3BRJEEoVmBVKyMnW3JVVnI4ZUZpRUM4RExTcClxTU5kSyQoWlNgZSg1MiZGa0lSLSMsYWhMMUY0SWBrCi1sIi05TUlTK0xTclVmUWVZSUcqSkMhKzFANDYkQUhjVlByUGsjbENRRWQlaTErKihmVFVtNFVFLWBoY00nJGJACi0jUURbW2JiMzJQUzhgLWQtQFhqNmRaSTg4cmUrQmpZYTJoRC1lQCNBK00mZWpDU0FYJSZGYTJtcSFZU2pBQCFFCi0pSzBra2tlOVFlUU5sa3JLTXAkMVNDS3IkLCZwajIhcTQwYGo4KCElRCgxJUFVcSsqUUxTNUxbJWMsYCpTW0VqCi1YZmJRakkjNUMkQnFLW3JGbCU0MytVVVNYLUJMJjlLWXAiSFZmWlJlKlhSYXEiRyo0NGZlOEQ5bCMlSGJwLEwqCi1QQzMkMVhCR2hES1NtNiIxQyxpaUZiVVEzISUjYFk4RDgzWXFyTDFWMytDVCErRiE4WFVma2AjIUcwQUZrTlBlCi0lRU1Ncjg0QFtHMFFsMkM5MkcrLC00WS0zNjI4KyJOS1RSSGRoZCMnaUhyVGVtbUVoSWRiKEcpbFBBY1BOJEAtCi0oaHJwQWNgYSwrTjNtKFYjMyEsNEssYEgwZFA2cTYxMVtYQmUiciVoWDUpMFsnQ2QiYDhybHFYQUNJLEtRNVNOCi0jW1ptRDJAMUokJ2JYa0VDJlFyJU04K0tYIlQ4J0U4cjAzVDJKaGEtSlE1VkMnMzJSTnJlZlZiOUdlIydwZltiCi1KMyFRQ3I5MkhSciU0R2FEUEBYYCdHLENpcSlOTCVqNlQsMlZWRyJlKUxCS0w1aGxQJGtFckUoQDQrUidDYzRsCi1JMylLTUQ2M0lURGVUaFNKIkhpWjFYUCU1LTRYUUBiQEtiUlRrWVhVNXJBR0lxVlJMZidCMmpJLEdVVigwaTQ5Ci1RMC1QSmsxNickRmkwVkUzYiJZTSwnamAhQDZQWixRIURJbEFtRTBLKHA1MnJbU1BDUmwoaidTTTZtJzBFJFoxCi1FZCRNJVNiR2M2TWhtKEwnYSpUckUzUTFFaGlqZTMnYWgsTSNTZmJwcVVCUytgWkxxKUYjUzRhWGAqakIjbCIrCi1QcG1TaiJbJTNiNSZRLVZGZTByOFNaVVZZNEQoaXI5a1FxcVhISzEmbSVwJ1ZJNkdqbWRtay0wVCdiNEJpLCVBCi1UZmpbSllJVEJyU0UpRiQnYG1xSUAqMSoqIScjTmpyQWhAK1VZaVtiYXJTKjBoOUhZZG1LY2FqTlkkK3FlWERJCi1iJjJhMCkzTVtEUSRNKGlJIy1jWiJHUmFWZFpEOXBTQ2JiTDlyMSohIWxhIVY5SSswcksyS2ApIXErNCpxalRLCi0nU0hCVTI2cmg0bCxkQ1lESWBiUk0tcWAtKFZSMklDQixTWVQwZitGSyFMKVJAQFBjWUtSJyVpcEEmNGFQMihTCi1ONCFDZUlxcFhFIyNYUmpEbWpMVnFaVDY4K1YjWkxIbCJMWjFANkwmVFYqNVZZRUJwR2stTEdgJTEqZmFlcSFqCi0sallqcHFyZHIrNVtZUTE0KlkmUUtTNmtDSFg1KFtZIlhYRyhqTDNpVUBDUTMhJSpTJCRaIikxY2ZHMTltZkcwCi04W1hqQkBHZSwmInJHJERaKCshW2xRTkMzLSsySmU2WEhkcllKTiEhbGE2NjAjVWE1aTNjJyI0VEMzUk4sOGg1Ci1LSlFjS2FhJDhBOFVDazMlaWxUISEoYypiNSRBTEIiSkRrZkBAWVZjQmAlbHEoSmhAK0diLUxJMWtJUlJkUyNUCi1tIiJmZFhwRmo0SWhmZTUlYCNRWmtjcSlmK04kNEJZMSRMKmEjbSRLcTk1UExiOVMlalZpMDQtKFByKkxjaGFjCi1wcEYlWWwwK2ZhVThCUVUkW2ZBalEtLTVEJlI1aWlaSiZrWDIjWChIJ2BVYSRtNlpQTGUiJTFVQmlaQUhwZC1SCi1LMSRSKVkoaVpVImQiTVBJJ1pDUzZULGJQakswJ04hJGBjTkZpMGJgYzA5M2RNWCdGKkcqa2tJIVs2UENVTDIxCi1BUSlLcCNUalVILGU0ZVNLW0BQJ1ZkKGMzTTYsU3BhcXBWRSdoKjElWlZUclIzKko4UykkQyplZVFTYypQWWUqCi1DLDI1VjRYYVBSaCFEcTQjJi1LQjYqI0BZS0MsTihHcFFpKVg2RipaVDVbLUVoSFlBRUooWDlIQzVNSHI5JEFCCi1ZIkVNSHFxIis5ck4wNEonRWxGRy1LWUUsJnErMDZHaCQySWgrKyRKIy1RNCRJa2RxQylTKyE1YUc1Ki0xZGZwCi1qVWtkSUIzLEFLSTNEVCRFKllZMiElInBoYzlRU2tkIVRtRWJNZVRSOClBbDVmWEkwRXFWNWZDNVtQIShKTFkjCi04QFJHa0YiNnJxYkhUTVhSTCkpODhjVDg0TEZLZitgU0RQay0zNic2NUJgYWYzW1BEKlBbRUcmW0g0J1RaJ1ZQCi0mcUIpNSltIXIkYkpJVEtEU2ZBSiVAUUdSISJYMEVVLHJNMVIiOW05WU5MaTQ1KWZoUTJoajhUISFVJzgpJ1FOCi1rTFMtSGBOWiUlWGAnSCVoRSVJMTgzSThrakVbaWRkSFNmbTFxWThkSmlGYicnMyclSWshZjRxWzQ2ZiNoJG1ZCi1xZlpkYyQhQzloRklJMkRyQStgckVQYDNpbUlYOCEza20iJEVVYlNCJlRbMVgkUk4xQlhgI0NqLGAwKSJJMjkqCi0oaVNUJTQwNmRSLShFNiEsIjVBUUY4S05YRSpYbUViREhKSWImNlNsbTNxLWljSSg0TjRZa0xlJGUmQHJNOEkxCi0tIkZsYSVsa0gqYC0tcEJgMyE4WGA4cEonSmYnW0dmQ0M5M0loVUFoQkwnWFg2SVRaIVpTSmlbR2glOThmQTlGCi1bWiQyVmsyaUVbRkFRJFRUJ0Ipa2hyTkcwYjhibGBrS2w5Ik0mMjInWy0xJGxAJm1FNWRGJzYzIy1MM0lAWmBaCi1DQSo5MFhgIWJZVE5YMnA1QycmJnFDOCo5ZlBJMytCY1tmWEdwbSZyIVkqJWwrckEyMyomRDFMZVlWQk5xVGtlCi1xUEwrUEMxIiVMKmMtTktKKHJZVXBWSFpILEFtYmNUW1VbJCpCTGotImEhU0BAY0hoISZtJmIjRStZRSlKNUVrCi1LK2FFUkxWSSgzQTREYEdjTGs1LGkyJy0yUUFKLUEmcUZIQ0lAKXEzWFBDQCpNLXBkJGFbZGNkYUszaWAmY1UqCi1hQS1gcCdJNDBZUGtFZEwlbUA1Y2QqVjhSZTRacSJCUyZRUE5wQ0hjSjViKyZRJHJGclY5a1IjckxmWUFoaVspCi1CWmQ2cGZTalEnU3A4VUVATHIiakwpQ21EK1gtNkFTLFBEUSJZbGEqJU0nRENLbUZsK1EpOEdSbSZjKUZhKGFhCi0mckZRTDY2RUkxKyJLZDkoR0dJOEZCUHEhJSFFTDRhaGskbGVZTjktNlYobVRRNiFrOWppQFRJNFolYkhlJUdTCi1SJ2g1JiNWOUcxaWYrWFY4TigtTGYzTm1LS0gwOGVyYSk4SUJGZWtTbWAkNCFLYUtrW0onbTUmZGtrcFkmKk5pCi1OMGIpTWRSWzUhKCVVSyxgVGxSTFMmLUFFa3FVQWUxSSkrMyMyYFYtaDZLY0IrNnImJCxgMG1VaFtGSVZCNkMlCi1LTTkxY2RCUEIxY2FxWWhybGFVckVqVWpSRTMhR01pYUw0MDBLbCFUNCRlQUVHJytWVDNRKmBlISppWFk5WFJaCi1hOTQpOVRqW3FSZVZIcHAtaipKMTJaMVg1YFFZJlZoM0dLcSFyTmBgNEAsRFJISkBwcFotQkAyRyk5YWRtS1NyCi0mVHFLMW1VJ2FAWmQyQHJOJDZLcSwtKUZZW1otTVFEcEVYOFpSTDMsQWtMMy1qJmM2IyFEUFBiRlNLJlhDKjZgCi1tRCFMaC1EcURAMWolR0NKJUQnNkw4Y0piTiEiKDhHSCorZVM0ZiskTTYyYSVJWnFmcilMazRjQ0FsMFhkaiVtCi1ibTFaaWBJVmwiWVQ5KmpMQzJZOGMrNkdbSkZiSUUzRCVLSXFwVkNlMjNWYTNqQVhsa1laQjZGcCEhRyNAcmspCi1la0Q4JEljWzI1ZjJrKXJiQCw0MEFEbXA2TUVkKUlQaWswZlhMMmZgKlE2aixibVFaOENZOTBmRFYyKypYR2MxCi1WNCZQVVFUY2tQUCdia0Q4MWNQTTlBMjQiTmxHTipCamtNJDIjIUVUciEmW0VxWWNSUiVCSi1ocXFiJGxyOEwyCi0kWEtUVU1EMzVIQmw4TjlYJipiSTYhRlMwJmMpWSslJU5tTjNiRyllQTMwZFlQNlQsQmAxUFZFalYjMmQzaWAzCi04W2UwNERyOWFxY1UyJWpDaSMzIiY2VSZEJlBUSyhMTUlpKGNNVVBtKWFSMVAnNmxSRltNLHJlSzBOREc5YCwhCi1pMmUyUDJoZTQnQ1o4JzIsVipjKEk4YWUrRyxHaURTK01wRUgncFRDOUNiKkFyNE5oMHA5SShGKmtOZjQzVFJICi1LaVVHW0ohZE4tZSMtZEtaKVJwWGlgWyFjSSNpYCJkODU2OWA2TGNbZUxSVCM2cEMxTUg1aiRtJmskRmspZGFrCi00bWYtRnIkazVMbTNZaSNyZVByQEclW1gzRCJhQjliZGNZWUI5TWxYaCplYkwyOSNJIVZlMktCQSZKVmk2VCdlCi1hNGgzQmstLC1aW2M1SVZUWSlhVjA1LXEjckYsZlhVWltINFBaZiFxNEdrIilqbUYkNUljJExAWy0sY2BQIzVUCi1haFRmS1lQLTIoWDQ1QXAyJmZAJmYnNUNoaChJQTFFY0VUVjZGcGQ1Yjg1TTIsYzNHR3BLI3ItYShyYnFLS1NFCi0jQjRjKzMwJDRYcUxAclFtR0xRKyVlRUs2bC0mRS1aaStHcEVlZGRhVFVJKE1LQDFYKjEzcSxVMi1yWUdhREtxCi1ETEZZYEdVYFpRNCZtMTViWWlAUFlEJlEtIzRkbUVLKCVIZFhTITYhIVNlTDQqQG1bJStIamhBTCExNEpsY0k5Ci1tMmhVNVYlJ1Etci1lR2BjJSNpU0RwMXBARUQhJWVOWTFxayRDMGtRMUswJGlEIWZrJkAsJFtCclsrSDUrVVJxCi1wSlYxUixFWikxRkZlRWViZkIkKkwnTGZrVCxOQWhxNDhIcFBDcnIhSS1JZDRgcjhpaCEsRilNbCImKzMrVCVjCi0mRE5ZWUdLbSNVMGhHQiQ4OWYnVlNjSFVDRSImMTNqK3EzSEBSa0lZOUFCUGJlIjMjU1ApaWZSIyJyNUplU0o5Ci1HUWhSIjRrJnIpKyFDNTJHVEpJMDUsMmlrRFZDQFM2Jk02YSM5SyJVckAjbTNLYEApWnBVZEIoVk0zOFpbTEwoCi1jM1NoUDBqMSIwQEJWNGBQIzJSaiFyWyVAZSZsIjMtRGkhOUphUmBrTVpoYGNENUoyWURCZUZiK0ZxKyUtZk5JCi0lYURUcFYxIjFYYDNaayFRLWZobDlOTWViMy1AUWJjUiY5YjNlY0NlOG1ERTlwJHJabU1bbCJJUGxCSTY0LGFrCi1pNC1gck0laWFbRitxSEkxRzhVUjNGaidJTDJJWjBERGg4VmAmcGxkKkRiRTIxRlZyYWhaRiJZMWIpaFltNVVaCi1IVkJFbUIzJTM1bDRrUihqKzFCIkBMRjglck1mVXJQQVE2WWtYJVtJOEFOJ0lmVWJSKlhHJ2g2RCFUOSJqUXBCCi1DNUtLWkRENGNgMjIpTGxMZVtxQ2UyamY5cW0tKigiMCswcUJEUzRFbCoxRyg5WyVRLS1kWyoiZidAVU5jKTVwCi1AKkhZWkNKQVlDVjViQkZVLEUhJTNLQiNBNWxQWEhOUSUsUGgsR1FVRiJoVFVlLUlwI2ptWXAjY0pDIzZaVWlVCi1RSCpISzJkIkhmVSdscjNNQGkmJiFmOCUwK1QnYFQsQCxLMWRobGYrMikrRzFhTmJUWSsiKisqakBHKEhTUWg4Ci0lSCI4Q1kwMyNQOTZlNkNgUk5EVlJpZlAsVDFtJWVwJEhJMUpTISU2S0tDQjNAIVgqU05oSy1TZipgQSImNEtGCi1OKTkjVW1NLWhNMi1yU2FCUE0lOCpCJipyY3BJRVMiWSZlNFosQHJkNWJYNjI5JUchNkJSaDZJSGFMJ3FBM0wlCi1BTlNIWFJpbUgoYypWaFgrcWE2JixlODZZMkRBQGNGMWhDIVssLCIiMFgpckRiTTFBQ0FDMDQjQzlaTkZCamMyCi1TU00lMCZOWVYqQGQ0UlYoQmZYQ0tbJnJWYVNqRShYOEUkWismaUw4OFA1cjYzKDBHKFhEaUVxZkZEQ2pVU1tMCi1xREU5USxCJEhZKVshM1JiMyEkOEVjamE1KlE0OTIzUyMnWERSaThwRydtNGZCSihxRSdDams2SjYicTUsQUk0Ci1iYWArNFYwTGBaUWRLUGxUUSliQ0c1aGtYUERNQnJGRSRhMFBOZU0hMjUkbDFIWCshQks0Yk1iUVJKJCVJJWMrCi1McjVxUiolUGpZOVFOTU5ZZGVIY05qW3JMKCI4U3IkJ0RlWihrailIKkNFYTJZZVNGKXAqVEYzVWpbU1stNSc1Ci1JSkhBKXA0S2VDZDFFTTBOcCRRMCtYS2lSR2ByLGhVTUNrM1ZANWVlSSU2JjVHNUs5OGRZJE1ocjAjIyxDNk0sCi1tZkowRmVmVi1pJFJaIiMjRzlpRjVZcSdBUmlUMSMwKyklM2hQQ2IsKkVFIzgzQlRaWVBgUmwkUmFpNStrLUshCi1rUS1lUyFxI3A5KTM4MEchajZKZEwsR2pkIiRwWEdQKmtoYUtaOGg5MVknTGZxIjZGclhhcjkmYDU4U0RQMCk2Ci0ncEorVCZOSCptK1sjU0pmTmxQQGllNmxMM2IjMSckSSlZckxVM0xLaiRWcUsoYDhDcE4yUUAlU1VBNmEtWyYpCi1NKWplIyVSOFVmNVlyJkdBYUc2RkEtImAiTGBWYmBLQGZlajFTZWNsZTAmOSVJOTVpZUxWUWIoYjErTUolRzZNCi0hNmQxYzBDZkw2LDU2YkwxYEQqUkdLNVBHNltOSCZmVEtoa3BKcjM4LTRZNURRckFVW2NsQnA5Q2IsJ3FyVUBRCi1sbS1tajFIQkNrTiM1LCMwYFlmYyRrTDQwWHBjSGRbREBJKjYmVFVYWSg4QzhTLFQ2IWEsVC1DLFNtM2NEWGg0Ci1NM01qVUAmJ0c4amVqYThYSzBVSjksLWFZQUtAYXJoUFBYNFpxW1lxR05pI0ZJKiVlNFpwY0c4JnBUQmo5RDlICi0qOVRMMyEhODk2VVEzIS1FUFIxK2lYNkEhJSxpcSJoZiw4Y1BqUEorTiU4a2BQJFpFRXBNNSpZZDQpbUdVRCwrCi0ra0hCOC0rQS1VY2NrcEM4Wk5ZM1ZDLWgkTmkpa2xlaEJIRWAxInJFSDFJLUkocUxGSzZVQzhMSDVQM1Q1MCxtCi0xSTRqRmVMLDlHKURNJ2RtTickK0lbK2ghSk0zQSZyNjUwMTlhIkEhWEYqbVJxWk1xajRlUCRQa3AraCVwcmNGCi1iZCtaMVJGWE4hOFJwKkVAcHJpRnJJQysrRmwqUSJgSUZWclswcFlLKjhDWEZpWlhLR01la01JMjhIREtiYFJaCi0pYlpAY1RrTU1KUkJmKWttMFVZQVVDWylrKEJyNktUKWFhUSdATTI1JSlUaFJrI0knIytmbWUkUmNVQHJoI01VCi1QMkpFcEtrckBjZkMwODEwUTlkaEQwKVFaYiZQLUMjZiIxZihDR05KJSw4Y01ZTWsyQmE0cCFyTFtAREwkI1VjCi0zQmtwQTEtJm1pLUFqSHEsNUFoMWwtcDNaLUo1NUZTIUU2UElialJSNiZQNkMjWkAmSGlhTEMoJiQoSHJbNEZMCi1INVphaVphS0NHVS0iMzNhJSxZZWhOayYkKFgzOXFxVWtgIXIiVUJiNlI1KVU5SElEWG1HIShgW1pUSGBxUWViCi0tLGkrITQmKVUhTmBbcVJTQkpQLTBAKixhImUzcVhSYThNKCckWCFmW0wjSEErJUFSSSxRWCRSY0VIUCgkQjNGCi1hQHFySShkIjYxS2lRYTFGKWs4R20xNCdSRStOYWtoRGNDSkwqa2VTKitBZGpVNjhkQE5hIzNBJ1NaJTVBUWRwCi1McCYqYUJtSVtaYUQwMFhZZVBMcCMnRihmK1haZCgpJTIkMVpVbCVTJ2xMbUYpMSVSJ002TU4hJCljcjBJNCRKCi1IIUFsJEk4aypMaiZBZipBSE1URUk4a0NaIUdqOC1RZXBCYjFmJTVUJkhyYCgoM1lNRyssWWJKLSwmUzNaaTMlCi1FOXJgNlQwVE5RQCwqQVhwWURgUjJSSFs4cShrY1ZRNSoycXFrJ2wtQUJJZWVLNGgnQFlbMyNLMmhZNUFMNilwCi1AamMhSEopS1Q4WE0hKFpSQ1Y4J0QmSTVVIyNbTjJUQSYhNlomSmUqWSpVYjBAMTFMR1UhVTApUHFKRS1xaUhNCi00NWMiU3BHbVoickxwNVFwcEVJSzloaSJMYGshVVZUJSdaWWhIMEU2MWZZKisrQWtATWJwSzAyMWJUTVgqNVJDCi1HZCZsSkNNNWhRWkhhMjZoUCxEIi1GIigjLSdBYEUyIlpoaUZSYkhoIic1WihoImBtayUxMUMsJkVlRnIlOSs5Ci1OZiVOMmJtVitBRDY5MlJBLUspNjYrMjIsYjEoU0FGZU4jJSsncWYoS1tqcEEwYytTYlNmQyltSTBKTEw5WWMsCi1HaEhBaCVCU2BVMjEoRSRDUkJyTWtpbVg2UFY1bEpacVJATUpLcUZrcEhsNkRSNCZkaUVNbWhUSy1IQU0pZlMnCi0kQCk1SSlGUFlQQStoSmgzZmxETTBjazBhaChFLFFNWTBNVTNMOHFoWStSJzMhI0VMUGBNLWNYOWwnNmVJM1FlCi1oUzFUNGFQWiRhclhyIkowSW0nSGRUJzYlKTRCSmUlJEpwWGpiOGFWUGpBclohYEpQOCRMYU44USEkWEkqZisqCi0wUkYxOWMkTmZFaEFKOSc4KCombHBoYChbM0xDRmNwSkVRRjhJRi0zW1NGQjJbZSQoJGxiYkNBLTFjJjIpS0haCi1wJmtZU1YjUzVVS0VAKls5KyglKGkjaVZpcigxREFWMixOalgwTTFyOCpYKGJAK0YqOCwrQDQnLVElckVGMzNGCi1wOE5LSmYrSCUwM1ZqSVFHUGYmUTgqa1UiW1FwQ0BwOGRwQ2gpcWZtWmxTJiFCMUFCSjRHYClIK21DWlNhRCs2Ci1gNVRNWzFwMlNLa1FSLHBNQGJpZG1gOFhDNSQmakIkR1pFIyJQOWxqYiUyW2Q1SyFEQWVbNElhKixwIyVlZFA1Ci1NSUdLbVVQJi1gSVVjJCUrcXJDKGtjNVQhZWhkaS1NcFslYkBacHBmMFtFSCgkWUZtbU1DQysiR2lmSDhwKkFqCi1WODFbSUdkNVAoOWVyKCFUKGxZRTlFSkY1QGlrKjZbVnBFVjFCbFpCIWUlZVJrNURBUlhNaCxKclZLUklKNGlRCi1QW1krQUNLcjVOISEsISRFSidgVjFRJU5MLC1hTCtUYzU5ZFMjLSU5MEJrIzltNGJQW0ZLYkM1UmxlcSctYmVZCi1OclRgNiVSVShbKWBJajRHKEdrVGFHJSJYRVFabWVLTlEqcklqa0Nkam1AUkNyJS0iK0hLKFNIOVpEYTAmSC1yCi1DTDZUcCMpTDQqJmZKbHBhJyQhKnEhaFhOYlFqWzMzUDhmUCktUCUpZCYoSlYsUidCU2onJDMqZlVORGQjITFZCi1HayhqJyFwTU0rZXJCOWtwSGVBVXBLRGVgVlUhSFJxJXJtUFJMNlErZUQqVmkpMUpRcHJFJWJiRCorRFlTSkZJCi1FIUFmUTMlSEhLWlAlMSdxVkZISlgmbCpqQVFgI0dbW01lYCsmWXAsZGY1Rk5TSi1RMWhoSmxoR2YmSzFMY2EyCi1acHBUMikxViQjaTNaQzRpWGFVaEktRUdUVSstck4hJGlwbGswZSxibHEzOCFIcE0zYVBYNixRKjBIUzViJmwmCi0tJilwKzIiKk5yLGIpJWlTTltQMXJWWWEqYCZbOCRiW2BLcCQpOVRRIiNRY3BTVTRSVShiOCZTQnAhajQoK0ZkCi1QQFkjY1I0ajVDTG1HNXFkQVJNZUVlSzJLaTRURyRGa2tKLWAiRDgtQSxKYyprLHJMJylBYEsiUnJALWltYFtwCi1AK2pDKzIwSVYjK2ItTDVrSjE0QW0hOW1DbUBrTithSCxYVWlsVFpYaSZWcWAzWEhNYzMhQ2FWVVpFcWpkJ2MqCi04YU5ZTXE1LWllLTVQOG0kNidLYydwYTApbCRaa0hrUktRaVJaRVhGRjEnQEY2WmkmQUkhQGMlNGRQS0BqQmJgCi0iSUIrRWAyWzIqSmNYVClmakoiTktrImIqJUFDRjIiVDZYNSdESFliWiFDQnFHMmRJI2JgJiIlUDA4aGhlZjE0Ci1AM1prTVYkck45ZSpKa1ZaIlRKTGQlUExsZlUwMkBqISFLNmIhMlkkYChgYVBrM1AjK3FaRiRgNWhocFBoKUIkCi1HJiYyNEYmcFMrbEE0VkRBNUBaImVRSjkwUSohISRUSUFTJkY0VkpVVWBEZmRrNCFIaFMnNUtWU0FiK1YiWTRrCi1YYSszQGUzS0ZEbEEzTmVVY20pIVFmZTRHUyYyLFM1TkEhSTUyWFNqbWQmaGlAVSgnJjYpY1RFKyRYODUtVitICi0yQSpjcWtBJ0BKUmBsYmlQKitQMVM5MENxcVVSUTlpYFpRYDQwNWFKWjU5Jk4xTkdTSVMicFohLVRJNCszIShMCi0nSmBoUnFVLSInIScwNWIxaGlgQ2xGM1tJTWlmYmJRUE4iNWAjMSNHRiclZiYiWkFJaENYLWVgKFlyZm1rMmstCi1gSFlwUlotSDVYY2lDQSNwRVNkWC1RUjUhU0gjWihicjJWTFRZRyY1LVtHLUlqMSI5NkVQUWQjcjNYcmByViZiCi1sIytJciRLQzErSEhiTCYza3FWOTBSIkJGJWlqZCJKYTlMNFEhWCpiQ0srJllhNDJoITZJa1BkWVtGWTFSIVJqCi04LGJEKDNyYWMlLFRCaSZoSS1sS2ljK2xtOTMzKTk2QWxCaVUzISRIZipEKyRyUFtwUlslVmkmVWAsOEpZVTNKCi1DOUFhI2kxLWJFSUJjRSdhIjJWUmNGKkdwNVprRSRoRyJTa0FOZURlLSppUiErW1MybERxIUpQMmBMYENyaFVBCi1wMWwmQlIjMDU0NDApbW1sQSQrcSJxJSklLEZJQHBhIjVCViFkQiZZSSZoZVYyTWBHMFA4WSNmTDVwbSFNQ0Y1Ci1samlWQFoxLSJVKiEhcHJALGksQ2w0SUJiTCJbVGNoRUcwUjQ0JVAhNUUoaTlGcVFgclZpOTE5SSc1MkApOGIiCi1jUlJwWmU2ZFhlNSdCM2psSmAsTTlKNUw2QTlscUxjcTMhJ3BRbWtTQk1jKWskWGJmaDktTmZsKSstRSoyMUswCi1tW1VZVixbMSVWOWEsWHFmamlhZmhWSUIkaGFiYHFMMWxjVjUxKEwhNENaOHIxcWlhSnAwUHJNLWVBMVswaFpICi0qKUQyUlZaKjlAZTQjSDZKUVU5TTRoRFYsIVJNUkQwWiRRbHEoZVEjWmQ4JlhSWk1ybWI2R01pLVBNM2ljR1U5Ci1QUHAiTWooUCMqbFInZDNBTHFsUSxHR0csMEBVa1MqISEhUihZKGopUDBWS2MiUCVJYWNtMTNHIiYqJGszISxECi1jUGppZFhsQU5DcDU2QkdZaU5LWGY5UTNRSGwyTlRpTk5CTCRIVkdNZCJoK2kqbCJZQSVWU0BDQSw4W1MjM2RYCi1Ocjlha2xWVWgwYUg1aTkyUyoyclhpaCozOGJOSDNgNShraVUzISpmRDJJW0k1aERBQ3FkRFtaQWopTWJWOWxyCi1RLCQiaWNhKFlYVmowUS1JWmkhYENBTlItK2RCZHFbcCxbcidOW2xqK2VERFIsI0JpbFUwYilgQGshYilZMi0iCi1CImBRWzVJZlpBIkdxaygncmByTTZDOHBgYGZtJTlNVSssTCNhYWJJYUxYNmpERlBAaSpKbHJlTDRBMEMwRmBrCi1FJUZQKyRmSyxBRy05Q2U2W1I5MnA5KmtrSChTJnJEJFY1UkNHWnFObGlCJiJQLFRLS0hLWkJINnJqKlA2J0pICi1rcDFOMmE0UGVbbWNSa04jKipMMSVyS3AnQ2kqOCszKCtLMkU1Tk4kWVE2JixKQTlbUipJWjkhKCdAbFU2YEVlCi1LYEBKUVFkW0JDJEtsZGRSQTlDLWFIQW1GLWVxaGs0ZUVLMjBDKzlTNkpbYEUmSzVbJClNRElqMU1CNjQiKXAlCi1MUEswWSwkbDQ0LFZNMzRQZTQhNFgtbVRtNio5KEZTJUprQEsnZUFKJGMlK2QtK2JFMCtgZGlZJWllKTAmJEBBCi02UWlMOGRRIltmQVQrTUwtS2tSLTEzbGZpOGxaZkNlLFBwKGolKGQiNGkhKSdiQ0NGZChVLScqUzkhcTJqSkBoCi1BLCVCVTlBTDMhIStCaXBGWyJEaSRDa2JKYCgjJClIUlpyYyQxJCZGMyNKaiUrRUdlZjAoZjlbIjgqTEhxKWRTCi0jTCgnMjFGMGtOSCkkUjlaK1VxLTgwayZyY1BTJkFkRCotJXEzISdxJXJRNjNhK2QhISZxSERtQ2g4TUI1YSkqCi1UZjVaVDAhJ1EkWWlHQStyQU41ZlstYVQxSWFKNCVrYWomOVNqMmk1NWo1VGlFTkRUZiswYyVFRVNqWlJjOUhiCi1FamVhUEMsUEdiMWEwWDBhJEVQQE1oWk5iQG1lamAhW01gNVJMZGM0YzVpaSNsa0ZQKkktRE0pM1ApakBMJy1RCi1rbVYxKUAxSCcnNTlMZEkzSUJjLFohRDBoJGZaW1gyYGgzTChwVFMwa2wpMkdmMCpSVjQzRkpiMEokTEtxVVA5Ci1ONSZlW21ZSVE1SFVqaTRoayEoTUdoKEZiTiEjQHBDUSkhUEFGSklVWClNKjItbVVlI0JMQTUzKjVlJ2xxY1IpCi1jMCQqJzMhJ0YtTHIkVkhaZjBjYlBmLXFaI2FLNGZTM2tRcVZoQFUjI2khIUdZbXJsW0tVUDVkMGgmSUMtK3BOCi1hSVFIUENhJStiKEM4OEppKUFGbGpGUlZUQyMnTTVQMWBLJilqS1UpLDkiKUxhSm1YTUFHckFqUGZFUEkoJyRZCi1rYTlhSUsmWipVTEFrTWFOTChgZDEybVUmNjNramQqJ0cpUiFZUUNASkZJQVBZTCdSMylqUDhoVTRBZGhyUFhBCi1MWlpCJCdFWlVtIWhlMjFEI2VtaHImRGBkW0xsOFhLWW0jUUVraFllSDNYVUw4UDlVaWhpcHJgSTkiOSM1QlNMCi0rVTZEUjlHJEVgMCtgU3EtZUdtIkBoW1tbckw0TiwsLU4tY0FMY1FmKmRVVCltTDNkNUYhOUpmQGIlcCwtISJjCi05JWwkTTZqalMjY3BKQnIqOWJhNElKSStCZSZrInBUbUBxZFpaKyohITUtJyxNOVpMI0ZHZFJwNUAlZlU1ZTQyCi0oTiEkVnAxTjVQYDAoanJgRyQxMDhoOVZoU0dUZkBFIjAxU1ZGSVhwOTM1VlQjaUJxZU1iWilja1hMY2JoZSdRCi1GW2tWKXFxS1FQKUdCaStkLCZjJVU2OWlWQFIpSUElRzA5UEMxLHFWQWU1cnA5RllQMGUpQFpta01QNjQiTDUyCi1WZWA2QEVQU1srM21IMDlBTFlaWWNHRSVCQ1FAMjQ0VltySSUiJSVRI1lLJ1FMOEQiY2MkRXBGZExaa0EmNEhpCi1ySzNlWm1NNichYFBsNk5NJTRkSDgjJmxHSXAkKkhbWS0hLWBFZDIqJkFRRmpyOSZKSTFUWUdAR0xRcDUyVFZQCi0zRmJsJixNUEJNQkZBOEAySyxBRGw4VSUwOEEoVSMsSVJYYU5jZlQmUSJTIlQsaHIyK2hHUDlrTC1acnIwQkgsCi0yckcxTi1iQEtBYS0jYEtCKFU1VmQ5K2FNYmVoQEImMGZGLDFTJVNMJlNHcWhUODhVZkUsVlZKVk4xa1ksNkxNCi1oZVAlU0YyRUskYms0JigxSUlqMk1DKltjK0gxWFJWIyNAVCklWEZCR1RsZCFHUmkyWipjamQrVSlWIiMrJWRwCi1SKygiRGFTUSU1U0JJYE5pOGIkakxNbGVFREoxYksjbVRWUkJLKGpiQSRGaDRDKTQrVlMiInAkSiVYJ0VrIWtSCi1DRGhBNCcsJFImYjZqZFAhQipxY1lYKmhIWVtqWVk5NWxgQHBHIS1DQEksYHBpWm0mNmMpLVRRYUlZI1poTStMCi1bWURMNlVjZjQqS1oqKiE2KltTIi0iRkcyaUZmQTByNDBCYCZpSyFrQWw5TFk0VlJiJ0JNZGhmIlEmcFIqTHJmCi1QcEpyViFBWlhgRTVoRiFyIkRDRCIjM3BmNCRmcE0rLSZMJ2gkS1tVQHEkIyhlWDUjJSxybCZqLUshYlttKHEpCi05aCYzKkNxYjZGVkRxQFRqLENwOSlRWWZCSE4pU2ViMElqS1tTJU1yYzBoMmk2OGM0MnI5UEIxQkwsRE1wRWsoCi1sTWEjUHByUWVTUk45IlAtOCVtYkoxNiJKIW0nOTNwUidFNmImJilwLUgkRlpWLXEhSUFmbDVLUUlwUzZsUixHCi1MSzFqaTVJRDVEaSVHTllQakRWYEYlWmpbYm0pcSMlKFRHSlNILVIyQXBaWGk0UlIoU1tHa0FlNkdxTmBkTmRHCi1jcEdYUSJJQyNNJEhyUTNQRkNWUlMhKEFGQFJTSGAnQkVZYGUqUWJaYDVRJDVwWiFFbVBVMSU1RGArU3JATCtMCi1NZVNaSWNhUiMoMkdTRCUkJExlNippR3FyTFZQQFtIYkNJcixYUGUmWlVrQGhmcWNicVowUytAI05kS0w4Mmo1Ci0iWDhkSlAmZXJgMTBpUCZOJ1JqQzAtTk5OUmIiOShEcCJLYiVDVCgiTU1TUlZmUURlclVFaWFtM1JlKGhLIyEkCi0lTiEhQUJmQ21CajJHWihxQWgwM0stQjFwJiFUSWkkUSgiUHIpUygoLHFwcWRjLVZga0JsMExkSUJhNXEzITI5Ci1EQyRKcFNsVEhHYGA1SGE4OXFFZitqWE5qYChtJTJDYmUpMlI4amZxWE5ITTRNNGtFWVNjQyNLRUEzYSswIUdQCi1RWlJVR1hCW0pDRSFhIVpjTHBlYEkwR1tRcVBpRzBwRltUQyEhOWZUVSRWUVA5UmVoWVNoUiNNJFJVYlA5TTUtCi1iSVJZMjVbQCY1bThNK2liR2lOUHAwTjIxKHFgMWtRUGohQ2kwKllLQVRwQU1pQWRAWlsmUVgkMS1SOVJMQilwCi1WbVFqNUlJI3FoKFJrLERBRnIlTlBJSSxtLCdGcCE0MElHaFBhTSFhLWlmSFttTkYiYWtSLTAmK2kmZChVKmNBCi1qUWInK0syS1klSVFYJXFHckVYWGBTcU5JLDZxamEzcVIxQzInUzhgY0hhNVYzMkBBKSQsWSE5Y2khWGtoTE5ECi1TJFpxTEdNYUlyY3EyUk5AKy1ya0hRMDIrJDUrRmBDOE0tWmtGQ0pDI3JyJ0w2Q3BEMERSRDFWYSpaKCQ5ayNZCi1AOSsmKEchTCUxam1rZUBKQkhwSCQ2a1RyZVRrazJkM2VSMGE1UChDS0JsIVtgQ1UrJ2FhaCojOUxhaVpjWWg0Ci01IlhlW01CKnAkQFNlU2hLRlsociNacjNKcUI0TWxRWCdqSlJxSGEnKidpVSREJixASVpkIm01MGFjckRbck4zCi1LTiEhJCJMS2xrYlIiOUNHSiwscUcpclpKUTJDKjVyTiw0STJsZFRYaSpjK0k0JFssTmByR3JAYzY4alRBZk5OCi1jTE1mNkROWWIyR2lLYS1ZM2tUSk0mKSxtZUAiJ1FFQ2thVlRyYkxgWSlEKGBCNHJsITBgYEdFNW1GVjJmbWRWCi1yYishaFFMTmpiWFRqWzVlNDBFYSghJGZxTSdJKDhgWEIqRiwjW0tDRVJMRSxaRzlJZmQ2WyNMOUdOISJVLSpkCi04RU5VMm01W1BjNjUna1NVbEdbTCE5UCZMUFMnKig1JTJGWlo2SFAzQmBHWGBkUGtVbTZqVGtpMClUcVgoanEsCi1tK1hgLTYlJEAiQzlgcmA1WDJHKFBVTkApYmhDISNHKylESDFSTCFwbFRgTWZsajhjWCsncFVDNCNJVTRaZmhhCi0zclJHIVMoR0plVGQhMixVI0ciNFYjMmgycFtpTkhrLWlEMEIwI3BNSmRAMlgyJGZUcmUiWklBWUlSJnBIVG1pCi0hNiYqUFsjMGVhM0Q0KlJbQjQqWWNlcFIlJFRKYmAoUCVZQjkrQ05bcEBBW0ZrWCVxQGBbIkJkMCNEK1JyKycoCi0rRDZVcVZFSlUwIWtAIWVha0JqKGM1ZTglVC1wNVRmZSxHamFILGwoYitbK2JiaHFOZDVLTShwQmhTYzlYY2lVCi0lR1BBWiRDUmEmJGxGNidBbEQ0S2pmcEtaZCY0WzNWJDExSklBUCpQUWk2Ki1yOE1MaCUhaEpTWmJIakgsTChtCi1McSs5UlZJVWIlMWQlSVJaKjVYJ3AnUidhbGgoIy0lUlM1cDNkWygtSDFVTlFZWVVpSDQ5a1htY3I2TnFKKGpjCi1wMigzOSVSMEtQIllrazVZUlRmJyFrcXFEU0ZqJlljWidtY2FJY1pWViZRVUJSLCg2bSIqbCJUcVlrJ2IiUWUoCi1NNWNTI1JxUGwnJSMlaHJRKEQ0REZTIzBaYmpyJDhsZEtWMy0iMEZRR0c0WFhISGY5JDVlW00jMlZRWnFJQzZHCi1HMSZqRjNFQjVTSGtBRVoqNi1qYmpBKllCRWNGZUdoZnJUaTRjKGlGaWxhRGs5WSNSQywpR2JBVTBGUkhCQFtqCi1pWSRSNEw1cERGSCdUWWxMSVNKMjYiKEgzISVIWHIyW0YsZWlpM2koQERVLTAsaCQiYyxkUmMpQG1qJjgtUFYzCi1iITZZLHIjJzhUIWUoZFBkU2wpbXFLMzhRMmkkKFlCZTZpa0ZOaTYicnBLcFByZitjTDFEKVQyQlYlcDVNLTU5Ci0oI2BOSGgkNkdxRHFZR2NkbSpJUGloNWwtUWpLVWtlS204TVlYKyJVYFUzQ2xpQkA5Q2g0VjBrbFsnWVRraiVMCi1sQEo0Y1NwMmIzQ0NacGJqYlMqUGlpMzQiQk5mK1lSW1pLK2BoSCQsKyQxWWVLKyM1cVhwWVZJY2FjRywiUUozCi1GJ3FTckwzanIqMCtEJUJkTFsmRDZLJmNjI0FLZFo4JiRWKWEiQkhMLVQ4cmNLS0dxVVI4J05CY1NIWjJMKSc0Ci1ba0ttIilASSRASSNZaVVxYUNMYUInYkxsMzBNSkxlZVZVQjA1YkVjcW0xRFplWDEwKSEnWzVYSVJDQitbYDQ2Ci1aJmVMbWYqWGRUSClUZiUka1U2JCFDKSY0UDFCJXE0RGprYFlQKFlxJWM0RSJIRnFoKCRxLFRSZVBbYWZCZio4Ci1LcSY0UWoxLCVkYSQzMjhpUEhyWWNULWw0NUZOZkdkKSpOISQqTDVGQ1FhaTFbWCtUSWAkTE5rLDM2bGIpKWhTCi1jIWo5WCptLSxBMVpUVmRYQStyQGVlSjRITiEiTi1YaGYnKk5rYSRRJVVAZEYhaytaODAnU2hiJUZEaEhIKFArCi1FVkQiISxkRDgiOSNpQmskJiFLU0pLamIxZmtiMURya1pNZWopR3I4cVorNGwnM0FgIStwazE2SlpNIVBkbEtyCi1KJGNVNSE2ZFlibFUmTEtrQlRLRWg2YjNIZEFackJbMjNmQGlxbUE1VUZqJixtLTkxU2kpMzksbXJlcGA0NSRkCi1FOFRSLUoxUyJUQWprRFpiUmhLQCdiSyxlWkA1UkE4MEBRQUNhU2hWRCRhSkBaImRkTCJxR2U2clNbQyEhKTNDCi0wVUUtLSY4amQ0Ti1sJVE4JXIkMUZRcmgzUjNSSCJFak5xKixaY0pbZEdGSTFhVWJVaSspTkliIyUwQGVhKS0wCi1aMUZoOU5RaHExays0QyU5TWhhTWRDYWxmcTY5Rm0jIydaVUdgVkFNZEtLMWxMKiorLTRaRnErKjkhI2hBJ20pCi0mSSxDU2BLWC1AKiZsLFpGLGlyZDhxVGk5aXBsWmVCRTIpJWhqZFJsaHAqTCdYNjQkKiYsNkFKaWFqISFDTkFHCi1HZTNRSSMhZTgqTlZWJi1tamByZCYlKlRMNG0xQkNgMHFIRSokRVhjYlBgVVBJTiVwKk1WKGUoM0VHMFszImUwCi0zQiVJLFRqRFgxYmUiYmFEOEcyMEVCMzBFalYmYkJRVUJZRCsxOGVFSHAhQEM1Jyg0KEMhIUNINWRxSTlbW1YiCi1IJDZFW1soRiZtZTBKWSlyVWwlazI2ZUAhYVVrMVpCQCRASEEqWUBiLClGTCNOZlYsUlsscVNJWDgyJWhwNS1ECi1lUjFUbFkoOGEnQ21pZWVCM3JCUGNLQSZZUURQKHJBTGJTcWFxNTEpSDZUMVhQcGJSVjJoRiIwOGRGRzRBOHBHCi1AQDAzSU0rcllqUGFDKkwhUCZbZGAiTmpEKVY0aDIrWWtwQCxOMXAxNilIR3EpLSQyQCdRcWNbVFUkVSdtaiFVCi0iSVphQjBZI1shYGVwVWo4cStZQ2kzJCZNQ0JkYmgkRytULFkoJCxAUSo5UUYkRzVKIkZHTDJabS1KNkBZRGVhCi0nYEomKyFASDhObG0nZjFJUGkxMTFKcFYhSSFYaDhFViJjNXIrK1kpQSJga1sjajlZQmNmQSZxSmJLTTBMJiQiCi1ORTU0VHEmSTRVLCwsJ2FwUllhMSlNNEFsYmNFQ2w5TSpFQSFESzVyck1yWWExZGsnQWlTOUZyWDUrVWRpbSI2Ci0sS1VSVEFRKyxhOUIpVkMsYk1wa2RGbUQtKDY4JTBmS2tmUFJZYUwjNCpIMyhlVTJqYVIiJ2xlOSctSDZmcEsmCi1BSCVwS0YzK2IzcGhjJFVRMnFHW0spI2VIWyIhWCNEMCgyUGQhWyVGckUlUilsZE1LRiNGSDNCJE1TNVRZRVZaCi0nJE40RElINVJyOFRLWVZGNDlFUUNNVjJsaC1YazY4VlRAakhaJClEMyEqUyhmayo0YFRCW2xsYlJDJTk5KFhtCi1DRSEwODQzbTFaYVgmQyttWTgsJjIqSyZiY1AyYFZqVTYzcWJhQUlqNXBOUCVoOSliRGlHWEpGYDFGZVNqUVMoCi1gKlUyQU5CNC1MTi0hKSRNUjknTGgiQEJxUiVAYWYhbVJrZSIpQlFaMmtZKUgwUSJiYkNqSk5Sck4nJDBoVGYhCi01UHIrKSQ4NCwrVUJINmlocjQ1REdQMiVkRmZBLSVhRkFMays2VFVDIWZJYCNSUEY2KCJpcm1WajMoKy1ANXAmCi1WQkAwanBxQ2g5OVpTbWVmRUtaRyhZOUllMiI5UkVaW0YsQWohJENqW3ImQFlsUURwUzJhKU1LQTVhZUtEUidGCi0lKmlUY0wjamFSOTlwS01BWylWKEAyKTMibEJVaUFrNkRDckoiLGhSMGVyRilOISFxYCZJcCtjJjUxbCgqKEIxCi1LcCwxQ05CaiUmaERmWUVIJUdmNmVBUDJFNEBWcERrJ2xiRShbUixAYU0zKlYwVlZYZXJVSkpmLEhsQzNRISUpCi1DUGVxSmBRQ2MoMDFsTko1MyExalsqTnJhKjVBW2NgUnJiai1KLERKRVA1QSIzViIqK0UpamVmZWRtK3BCW0RDCi0waFFjNnEqRXBmJmU2TVNDQGtRTTlsSFtHMCUmOCM1RWxxW1FHUyFAOWQrNCdTSDE0WytRNmE0JkwyKEozTWMwCi01cTIoUiZSZllJQUVqKiotcFhJTUQsWSpSKytHWlloQHBbWSlgLSgiJmMqW0NKVUZZTUlrY20nclRTTloiNDRsCi1gQigmRmVOJkFFVk0yOSlqS0Zpcmg1RVNxUkNKMWhsKjROUmlCWTQtJ1MrR1ohWEMxUiJjazY4cCEoOWRBTjRiCi0iOWtKMU1pZUgnK002QCFpcEUoa2FUQjFDYyVySFk4MzRwRW1jMSctWmVaQFMpKDE0ZEVoLHFqWDhHTCNDMyU2Ci0lMGRqWXJmbDJgWEBZQ0hROWJjMmpaY0gsTHBsYGhVJE5rQWUoLGgwODVJTjlRSmEtVSZYMUFwaTJNLTM5R0tSCi1JVUJmSW1tTCpGKENLYUJGUSNOIkEwTHJhTUtYZitRMWNEJE1EYzZOWiYiRklSQUZgRWZATVBCWVlmRDZgYis5Ci1RRUtCMzhBMVhMUmhVW2VBViJULCtKM1VGKmQxSkRbUmBQUGVbKihaRC1IQyNIRFoqLSchZlVxLHEmRUIoUilUCi1RaDlRR0BBK2YjZiJLYGVSRUdhI2VHMSY4TCoyTSNRWzMkVFBlKFhMKDBobWIoQ05BcCpLUDFOQDJbUjFaQlthCi1HTFYnYGZLWGtKKGZbUlUiIjgkbGJQaDRGYWFZMEZRR2pRRVlkKzUmSlREbUBscGA0RkYlWyNyKEksIlspQlpFCi1HbCNOTjNWM0BhbCJkYkJLYWspcEc2cE0pRlozY2ppKDJwWkJyKmpAIiUqSE1iNCtBJVlOM1FpRVNGYUEyOS1lCi0hOU5bJ2lDYEUjMCNxQyY4ajBVbTFVRFBqNjFSOU45ZEZgZGFkK1JNUyknS2IybVYmKiRAKHEsKFk1Qk4tKSlRCi1pUE1aKTQrRHEnVjkhUDBRZWlDISFLLGJDYk1MSSoiZWUpKilWNHBIY0FoMCpIOElxMSJYbGppQjRWSmMmNTgmCi0qZVkrQ1s2YGxFaDBUKlYwK0xwNSlTbWBqK2VOUmYzWCRLVE1HK0xGZGhIZS1JSyJHQmhKak5mWGE5bEgoQXBrCi1iJGAyR0Uza2FaVSxSRWEpZVQwUmstVCEhTEMnWWBiWEY0UlZtSExNQkxbLUhgYiIwSihpRHJONkxUIkVpOCFUCi1JMUlWWidsOUtVSGpRRERTcEUjZk4zQUE1RDJFJVYpWiknJ1hRLShxTElWM0pQIWkzSjBmMVZRI2xsKVErISRCCi04MEYoTG0wLEZpLHIrQFAiZVQ0OVo2NEEiMmxbQGZYQiRVUkg4JiMpWTE0JCRTTGQyJSxJVSMyWzU1ZUw4VCQ0Ci04MyRRbEc1RkUrU3JTSVtTWzlQclQpUDlraCxCUSojJlJBSzAzNSQwKlpyMSVAciZtMTlKRWtBSFNkKmxRZk1yCi1gVShkKDA2TCVEVkVFKTYxYmlpZDA2TUIqcHAlITlqYyNFKlM0MVlRQzlBQClKaVUrUG0jU2YhUDVmaSQwVjFECi0tRitYYkhpSUw1OWRARzhNM1ROITUrRDUyYDUhJ0oxVmVHJmJFQGFsRm1GKWttQTJlTWwzNmA0RFFDLVtsMCpgCi0pY0lEaFJqbCglUWFMLCxsWFZbMCpKKTJrUSUhU04hIXFTKGg4akZTSWtxYSQxRSUjRWRbKmQ2KmtIM0dWZltaCi1aZiROW1EjKmFDcGlxIk5QKFFYYThxaSxKakwhK2UwYE0tYmgqMEVKMjFiUEU4MTMrcVJSRCxGYjMhKVlgQyZBCi00WydZTDRERXBkTCc0VVkjKUhJWyFoZidDSiJkIWxscTZwOVozISwhQ0twRjVTS0hkM3BQZkYiJ1VtZDYhaCgmCi0mOG1xWFUpckNZM2o2TDlqY2lZUFRTSEkkMls2J0c4J0cjK0ZCR0BFYitVLFowbUFiUCMhKlUsbSgqSzkjVjgnCi00aSdQTk0iSXFDaDJTMUphLCYmY1JBODZWW0QlWkkpMyVQJC1qQWQqUWtbSUlCa1kzJDUiKVZZWShia0FALDgpCi1aZkQ2MmZsNEIkJzkyJCVBZm00WEZOUSkjWlNQNDYoWSFQKjhbcVRFJS1ROUVmZjBrSSliJytmMi1UaWpHLTAlCi1ZYmBCcVpTMmBtbTYtNmMrRkQxY2VoRTVrKCdMK1A1QjFJNSVCM1U2MUJFVSE4RDhWRzI2OGRAWiNhbS0paXBaCi1KUmQrY0RJcGxkaFRLYytrRDkmLTBAQWFRMFppcEEnbVlgcVsrMUxbKSY5KGMrRkZgR3A2KylGM1ZQJGNQWTBKCi0zYGIrYCUlZmxsaFAsYkUkSTgmZmgmITMtaFNEYmhIWis2YFBjWSYxIXIoKilwZmNtWi05Wy1ZQjJCNWlAZCFICi1YJWVEayRVVVFWKmhpZGooRElmR2RUTU1xWmwpU1ghLHI1WW1gRyQ0KTFYaWRhJmorcEUqKlQrOGwhQik5WWAiCi1tI2BTR0I4TSVOWiw0Q1E0alopTEArQCtrVTMtJ2xJY1NrSyNGMWRyYFo4YkcnaFZrZGhRaS1ZZDBKWlFyTThFCi0lR20rUUtQW3FOM1MjTiEiZSFIW2tOTTNRQEQtSkpQamo0UCs2JSJCNDAkW1YiZFJxNE1SOCpWaE5ZIjBRNGRFCi1iLXFjVUtmSkkhUydrJmRwLGFGWCVKa0pTJ2hoVGJSLWAqUkdkWGRgazBEITRKMmQxWTFEYGgkRyNMZjlQJmBqCi1oSGkmcWE1JFhjayhoTiEjRClEaWFxM3FYJSY5NkJiYUtWJCc1NkNoYXBSYyxma3BgISZEOUFANGpwYUpGQmQjCi1jRlpUMipSTSJxVFpKaWgnImBxalMwcGxwLCcwLUdDMTMhK3BiZWhBUjBVVSJQK2YqSGNLNCMnWURCVWkhLE1ICi1BYTVYYCdibShAZTJNJzVZZikwIkNDa2BZKiFOIyJDOTZwZnE4I2FBYyZNbGpyY1ttazFbMmRNJkBmY2BKJUElCi0kIlQnckZWQjhAWlFsTiEiYSdsOTZKUzFQQ05VJkBiNmhDMkkpSkhRKmoiIjFwUUQnMVJKS1hDZDUkZDRHTUNOCi1bI2MyOFZQTUBybUQlS0MhIVssJjMkLWsraGUoWGNOUU1wTiNOWFtmKVoiJkYsWmA1KGpZckwpcilYaWtLcSM2Ci1VKDI4NidkR2NAJGEhTWYtWWtiKDIyKGJHKSxiMUc5QHJoOWhscmAjWStoMEBBSFBWLTZIUklDVDZWcGlWQ2RiCi1ZWjY5aTlbcGJUW0oyaDVsQnAhW3JTR1MxR2YpQydDJTFwWmpAQFtAZGw2NUBwalEsMDBQRSJFMU0pQkRZJilRCi1LYWw1YitsSXEqWWUrQGFTSFlhYFslZVpiMSIsbCdoWUZGY1BSSlVhWUFFIk5jY0lQIkcjSTZgYDIrVllBJFs5Ci0nYy1gQXFsYEhRVW1iNUA0JUNAMUdxI1VbNCJWKUVTKlUsJUlYJkwiIUEta0piJzVxK0hhVCkoSmIlUlplcnByCi00TlhDR2ZMYlIrLTJbQENlLSJlLXBGNCJEWlJCUiVBNFstW0E2NkJlJDVWKGZKJkRyazUlKlVpWGxlYWlyWyVmCi1RS2lMJSpgNjNJMmpNLFolNk5BTXJJUWFVViNUUm0iIiFIU0ZCa1RKOUIkaiNlKWViQ0hONmJgTDhWTSkkWilMCi1NY2NVMG0nRSstbGlTJyY1Ui1WYGFiR2lHcUBHK0xxLXEiJiQ0TGpxTigjOTFOQ2BBKltmSDhwR0BiKERUTCpOCi0wSVghVmRWaitmNjVLVkUhMyNSJHJsQ0csKFRYSmksR05bKFtOciZiUG0tNScqUkZtM2poJmpYRi1xIikrMiJHCi0jWEw0RUtOcTEjKVMkJFhkMy1SaEZHMThaNSJNMjJqcUA5JTYwQ0kkbGVFIVFLYUJAVmZAMWBpSFtgQ1NLWmRiCi1ocVlbWlkwOVpQWzRSRlszUDZSTkFQQSZqRkdgbDZJS2lDY2BLUGppazRVWENRJSFhJSxkTGFqWExIMFhMQ1RYCi1JJTlgMSNrWURKRyJTQ0UoSWtIcmVFI0sjOWRYYEolW0lMJls4QWIrNCxScCdpVVBJOVElVWByaDZqVDVKQ0xGCi1xZEhrSiwoNighaUZgSChgallEOWBOWjU4SGNAI2FpTUNEMTBAbCxgUGRpOFliKChmZSJlYHE0UjNFNkVDLEJUCi1sRWhtITlSJGktKyZYUWNhbWwzUFtqSFsmNiVGZmkqQ2kkZEAxQCQ5NXFqUWhOYiRZZFBJZGsmJWFyM0ZrTktjCi0wbDUkYUxAYCQzcGNwI0dIWk1gJyZLY3I4KFhwOEFZYzNIQkFKLDVRakMoZC1NSXJlOUZlaGpVQkksYGYoOUEtCi0tNnFaZEBYUGFJRypxbCohISpVNSI0aDhESFpraDVQKDlRNGxmIiMlVixiVktaU0RmUSwlY1g5MzFgcjZWa05CCi00QUUsJlhURGBWZChOa1YhVjlCRS1DUlZKKSNpTTIhUjlMYHBCR0QtUFFwSVZSWDZQTFRgU2xMJCtmVEsncDZGCi1JY0dEJ3FASCUqYzJFYnExRzNoIiEycVVgJmBVQkVxUzNJNG1ZQGwhUCdATStkNjVsKUdlKixgYCMlbEpAYG1yCi1IcSo2ZUFbOWxgWXIwci1BaWtBUEVMJjYpIUdWaEYqTkkyVWFWSEVhKVlYMm1DSUcqYlA4TU1yI1lHLVhIS0lSCi0qZXApKDRQLSJrakFsVFZtQCUoQSpVLVZsSTNtImQjIzk2ISFMTmg4M1RVTkskSmgtYTJOOC1kZllUKCZjVjloCi0kRyxqYGstWG1YMDZxQE1yJihrViRkIi01MSEtVCpOLFZTUVgtSUkzJDRUQ0FMaCZZa1ZsRVRQZmE0cGQqYkQyCi1GMnEkTCdBLTFZbVZyQkJqZnI5S2wibDBgZkRTcSgqISFEZmBqR3EkLUVZR0tNNEMqYXAtKWsjWVpNbSNgTVlUCi1LMCVUW0lWSkohYmMlcXFga1spSnJbSEsjY1FtYFFNYChKImtBRm0qImNLckByaWJbSystKSJTOGxYaltpazUwCi1JRG0waSFVODYiNEhaTChxamFoMjBDOUEyYlFRaUFZY0ZILUtSaFpmTiEwTGswNC1qWDIxTm0nVEhaUHFEcUIqCi0tNVlIUSkrUyMoLEVxI2VVZSJAQDZSWnFDcWNmJUpQa2RyJUFsI2xFWUpsbUtNUmxoVidZMlRGYEg2ZmE5KGMwCi1WcSVBNnJISWg0YURiZHFVRzNEUS0qTElHY3Fhckc0ZltURSosclJaKi1LMWkmaUtFcDBHKWVaclA1YycwTFIiCi1TVUlRVVUwLERENTgmZjZyZjVQLUhGIUxMMjJCS0JESSlpcVgwKygxWCIpKVZZSlhAcGVkTkwiaUwhTFQiJWgwCi05cihpKTFTQFpVImomOSRYM0AmZWRKIk1pMScqbGxCSWZlREsqI2BqUUFZUWBFVCEhNmFRVStRJmshR1tORElFCi0yITE2WGU0MmwjJ2BwYStWaCImImlOUVtbQHIrKShjUnImMiNUYWllVCw5ISpsREFVZlVTSCZkSnA5WSEjNFZjCi1RTCdaVFFJZlUpWElUKVpBSSJZUixYKkJMUjQxVVBjRGxWKGtaQmE4KTNKMzBrJUYxaS1MOUspaVIrVmMoLCYoCi1wVixKUjEyclFmZnJjRUhjSiUkZksoYyglbG1AZCFmWFgocWRkKjFAaGlGVHItNXFTYWYkZVMxamwpY2kjJUpjCi1qJUBBclNyQk5wWitoNicnRGU0RVErVWYlJUZkJGZsS2tHVFVIWjglIUlhVkxyaiEhZSZZMGAsai0hU1k1ZWAkCi1TUkJjRUQkJ0YhcDFwQUk2UEhmajFGS0YjbWMiYiJIYlMkIStAWGonTjk0ZDlbTjI4ZklVRmBoTjZiaXApOSlRCi0sOChWKCE5SUkrTitEWjFyaVRMK2hbKjRRa0gqckZlciIqRygibXBATGwzRU5LJ2gsUChacEQmcGlNKTVOOGJFCi1FJWwiW1opJGJiZXFDJVMxTCZDUElHUElkQyFsVGBlcVgqJi0lITNbaUxNKyNyOEBoajNbOFRDM0grISpJSGYzCi1kcixqJEVAckZWTkFRRmFlZGBVJEckTiVsUyZJUEQzLFRjSkRTLThVcWwwcHAqY1k4ciVmMyEoNmVjMSxWLEBLCi1mVk02RGlbWy0tJk5gMSlmTjQ2ZnFoYEFyQSsyQERVTmVJckMiRzUmaSw5UyMtKVUnVGAoLGBhUnFIUFYxOFMhCi1rUTVIY01ocUNGKUQlODJaRCpsSUBySkNqJjk1aUBOUUZNW2xhNXJiY2gscGRHMVMyUGFrI21wYTNjMSlZUDRECi1raiRpOEJTYFUwYTliMWNqTFtyclhEKlVWITAocFpTVi1TRTIoNCRhSiEkI0ZjI01JU01JMFRUSWRBazg5QllGCi0hLUYjRFo0Qk4oYFMwWWtVaStGUEEmJkBlSTViSUwjbUZaaTgrQWpMRlgoQyIjNWVMIW1NNCMscChSYURAQ2tJCi0kJCZDJmJmUDZGNDZSaUJNJCUjMWNYQEliODFQcCgtJixOZmI4WmtNOVQmLGMrQCNqJGUrYWJRVmoiM1ksRlprCi0qOFBWSEQzVmhBSGBwQixTJWVsa2M5TFRqITQmW1BjYWNyOTlNQUljLEozU0IoVE1lRyZHa3BWQDRhNEotUywqCi1RTDRmQmYqKDNTWjVKcVZlUFI5QnJFWVlZVGVYLElxSkBEW0g0TSNNbFUqckREYS1qWTRNLFhEMUxBKlNHViksCi1jUVtJbGFsKzkxJCNhUktyVSdSUVlKNWJNJkskJ1pHVUxYSXA2WWByWU4hIk1qS01bJUFBKilIZVFBWzZiRklWCi1VRjYpMFZhREtkKmlwU2lNYWM4KCdpYSJtYloocWNlRjBocDNhWGZjS0BrME5kS2BOVillaiVVJmIjKUxiRC0pCi0zcigjVkxLVkhsNCJlOG1DYzhhQitLR0dALVhqUDJFQ0tAKkwiQyEoKWlJZUQtWFFaSSIobSgkIWthK0VWYlRgCi1sK1toJjkjaUtRbGAzK1I5LStqaGJyMFZFKGJWS2ZyRVJWJDNqTjYyKXIyS004RUErKGBEKGlmWWEtJ2JNSHAoCi1yIzUmMmFhbTRWVlhmWFNpKkVCNGQxcFgkQiZKIVktLSpCLGI2I0E2JyZYcERyKWJmQFBIQksoLFRSKHAmLSEkCi1BNWBjTDFUNUAyUCxDOGRiQUBGJilgQmJpKGAjNTVHUyZsI2xhYSIlQFZSKmtEY2pOWEApaUohJ3BhcjUhTUBRCi1MZVJaaicqajYpJFRlZktZZFQkJzIiTFpiSVVGNk0oLSFbRnFrZGs4ZDYkRTZSRWZgYlhNayYjZFs2WmBCUSEhCi1aKStEamJLRWgtIltKLSMyVEgrRmhMQzE4NGlHTFgsaDImRUctSipCZUdScmFRUGNLKHBROFZqaUpIUDMmWU4nCi0zISZDRzBxYltxcUdiTnErbFNOK0lYS1MtI2VhIiwoRDgsQ2RkKSYoWkM0MUJaJSxFYDBgU0NFKGI0ZCptUihDCi1Ma3BkJiwnLXA5QUQjNmJNVGhHVSkmRzhSW1khJGhJJmQ1ImxTVDMncSJSJjliJ2FBWVojIUA1UiFia2xMTGpqCi0hbGNxYFJaNHBhYFtLLCNsYDBjWCYwY0VIKkQhSUpAKzZtJWtKNnJxa1RKWEdIanBkZGhQcVlETlNOOTNYKGEmCi1TLGIqNU45YExEQ20lQlFwSk0nKSxFSiFKZCZjMlYsJCVMUGxUWVBjKixFTSYhQSJSKllMQStITmRTZiI1KGFbCi1HI1pSLChhJkRbLTBHSFZLclksSWxYSzhyZmw0KzRERlVHJGBSSWNGaGhrUSQwZDMkR0FSJGtUYSNwYCkxYnIzCi1KYkJCbCQhaDAqakBSanAnISdRU1hmM0BSQyJiJ1pVQyxAIURTTStQcjRNakFYLTRaUGoyZGtLLWUmJExaS2BkCi1oaSM2Q0MwVExRYSdoQWJyRkZOSlJaMGtrbVJIZDNpYUZOISEzSFYiJmE2WVszUjBHQkVbKmAmKXBOVElYUyEjCi1sVmhANkVFOWwpZCtQIzIkWStrMFExREo0WkUxOCFHKlZVaiEhOSFDRyYqISFsJ2xNTDI2LDFlakRrYCVJcFA1Ci1ISFpRJCJCMmkoZWo2aGBSQVNiUytDa1IsKjQ4QWttLSpbcTBoQGxYWVo4ZlVCbCQ0LWxrRyFkTlsmJCNbRiRKCi1jaXFWRzJAaDA5QixlYk5yJTFtSTBCS2VJVSJZREksZlZgNVlZIiNkQDZAW1ElM2U0SmA4IzFAIytqclIoYElsCi1iKElkRSpJcEpoJURgIXEsVFYkU2xLa1BgLWVLRDMoQDBiaFonbDBSYTk5MWwyREknYWg0Y1hmVjZkJkQlYElwCi1NJSViNFk0SlZqKWQpaCtCcSgwcExiSGZxQGsrRTVQVkxRcjZFTjlUcU1hVWVOTmlwYTVaZkxEUGVwK2lsJmxlCi0zNDhDKFpZSFMtVkM0UmkrLCRbUltDM0dMcVlpbWBSWGZmRGFUOSs2K0VpJVUpa2JGa1FAUlUwajNmMSlibGgzCi0lIWAzWEFMcEQmYDlIKTNjWyZEWnIrZnBiZSxlIU1AIVoya0hwITJQOTRKWjMhI1VVaSpxImY5OHAtU0NiJ2loCi0ia2prJFYmKmVrTUckW1RNZCRUSEA0clMlUFhiUjIjSkUyNCJAKWZZck1YUE0wVmwkJk0jTVpIZDZZIWYrVSlICi1rWWspWFlIQjI1aU0zQmpoYWZkSTNkSmVWQzhkaFRGREgmKSlHak44KCQkakBMWEg2W2o4KzJtJmNjLG1DMSslCi1UTGlrRXJlalVVYys5VmNAQWlEJEkobEkySVMoIm0wJCVMW3EkJnBmakVIQFVVTCJORCo2VFVmRmAsQU0nTGNhCi1gTDlHZiRYQ2hJM1FyQFtgKFFUKmpONFRqTThiOVEmaiwlSClbI0VyYHA0NiUna1tZKzIxUyVZTWRhLSkhVDQmCi1pRihsMUdqUyZySVZtZWg4LUZgUipkM2VpME4oQEw2Nk0kJDIwQFlAMGosbWhbSmQnR1AkJ0coJSgmVikyUWUhCi1CWzgwRShOVnBHNm1gQEomZUZwIixGU2gxJFgjLEwqYVNsVmwxODEkZnIsQSkxVDFTQWJhUmVFJUpGa2JtS3A0Ci1NOEdpMCtFSyZBQkloNUk5JWAmISVWQUM2aUIsVlFGZjRYZVEiZDlxcHAzNGttSkFUTElpWGUyVk40RVBlMCZjCi1aaClQKCRbNHBmQUksQ1hkYzlZYUgxYm1EUkxYMWMxWEJTYSE0WSdBZEItJEkzYSklKWxNKm1EZFMlIUZsbWg5Ci1OK0tZJW1BZVtkRWwxaEdYRWlmJkVSOE5QMnBSWCJbYkFHJ0tba0VMIyFqa3JTK2JiNDRKZGxYa2s0amxrQklmCi0rKGVhSkY2aUpKMlFSJSlYZVNZRiVJKFghLTYlNmZqZWhwcGNCRTVUMyo5WmUjZCVBVEYwQytUISFSJkU5REZmCi1EYykpZEoyaGprWUEtLWY1MUxqY1BCJy1hLVprbFgrKlhNS1JBQlQyYFJDSyVjISEjZCowalAjZlNxRVlKQ00rCi1NZEM2bFpQUERZMDU2QGs5WClKUjNSM0QqJGYtbFBGVjYhM2IsNllARVNAaDZOOU4pNCdRQEI1TGMmVCpCcWInCi1BYnArYllAKiUrU0YjLSVgIU5TJXInYjInJSEiWlY2M2glYGAwVU4oKCRBKUhSVmVkKEEhcU1mUihganBwSzMxCi1mK1hHMjgtKTNOZnFBWDMnWTNSKDBjU1hEcVhlWEdlSSwxKk5IRmRkI0FaZXBFMlFLRCNZMCFAajMqJ0NaUCdSCi1NY1pxQis0JSRgM1AjQCdySCFmVEZRJlBBMGZkUEdoIkpjYSxJcTAkaGptMjFsLStKTFoxVCo1Y1VSUiRGTiEjCi1gJEFIWUpFYDltJkszMSFZQHBrYVBTYlZJKlBQYSctQE0yWUpiJjFjOTIoYzlGVCdEKUwqZHAlbFomIlozIScpCi04VjBUVDRVUlFFJDZoTE5hWTg0JzkjcUpwYE0hU2wxW0Y1cDMwNSIxLSg5UComUkA2KjJFVFNZbWphUEc0KDU1Ci0pUFBTZWBLKiRKZSRLZmVMOWlLTjZRQkhJTFtRMiVycGphRE0hSFQmNGwwbDUlLVFoVDZiRzQ1QSdRUCInVjFACi00cVJYUyojRksjaktxRyUwUkFWMSkoQDJyayxxcXJoKGRlLSJZWSVTaClkRk1UVGZVWilFZHFFSGxHImsiUmpQCi1ya1BbQyVAaig0ImlxM2gsQVVycmExWmstS3BjSStpYFInU0lmWDEwVk5KM0dAbSRGZFlgMFtjNCVQJWxNWk5xCi1EM0g4TCpOIUkpK1liQFlAMSpYRmghQypOJDNKOWs0bXFpLVAqI2xJKVhNbERqVFNAZjUzNmRkQyQ2UDUsVG1bCi1QRiJYUClrVGMxNFo0aGEnMyEqSjVoUVRsJmMjNWRGWkg1NVItM1BkU2lQUGg2SkUkWEVsQmhZUTRISkVGNlQyCi1FS1VrJk0maDFEMTMmJ1BpbFBMckNaaUw4RjIhMCVTWGxQUHBJI2IhQEJFU0ohQFgtISdtWk5qSjAlNWVZKFI1Ci0iRGVJWmFoMSwoRTlBM0BMa0BKYyFlJ0xrIjlhTC1EJzRVMyllKycjYUsybEg5bEBNamlqYitVSyJhckArcHJhCi05KCFWRSxJUEBWSHFELSdpQFUjIlRMQ21DbFpNYzlLWzZsU1ZyNWpJVkZSQyxSYzlhQ2ZCNiw5Mk0mNmZrUGRDCi1SNkNOSEpYJCVHJChBRDgwcFYiZEhOTm0pYShtZi1CVSUsREArM1licE5ETFUjS2hEY1BKSFBTIVJLVFFbRmhyCi1hOSkwSTFSK3JIOGhqOEooWC1MOURYaEhMKylWYlgiMiNyWi0zNChlJytRSEMiNjg5QiZMYzgha2FpaGtaY3IkCi1NZllyOGhsUEcmZE5AOWMpWGVDYEIxYGEqKlhaTkYlWmBtQ2ksbEJEWHBMJkZwSzFLRihVWlpGbSglNCttOVhGCi1GallwZlVbNlJOISQkW1YoMkYrNmtHZCFhS2gza1ZNQSI2YSRjQCRsJy0yWkozZjEpbTJARTA4bSQyckspVDVhCi1GJzFrR1BGcTEhQXJrSERNMUZiVFgyLCpKZUAyZmhtKSxkMkVwYGsialNRQyVVUSRqRGomMStJRmMqOVIwNSRRCi0kcFJyRiwlNUxlZi0lQDRDcUIycChTcUxgaHJVYSpKQSRyLCRqWyJCakxtOSNbUEZLZkdyaFFKbEIqQlBkTmYjCi1rW1BZRVZDQ1lMNDRLY2QqRW1ETk5SaVgrQGI0TWxCM3FSLFJJVU1ZNUVaSmlDNGlgaShwI0AmaWAtLCElJGJKCi1ASSlsZUpMRiIoYGhsW2MlNUFTWDVJYCVHanJHKGszMytmRGlSZkBDJixlay0oZmw0cWZITStKMkNTcWMzQEg0Ci0za1kiRCJEUVAoKkxlLERWNVkoLTAhLSwrJW1jSlQpbEgjUGVENTUmWidWY2tAYVVMaiIrQ1REWThBOUUmYDIlCi1LUkZxZlpiJzBQNjM0QTBKIWJLKSEhIToKZGlmZiAtLWdpdCBhL3NyYy9wby9zdi5wbyBiL3NyYy9wby9zdi5wbwppbmRleCBkMmYyYzk1Li45Njk3ZjkxIDEwMDY0NAotLS0gYS9zcmMvcG8vc3YucG8KKysrIGIvc3JjL3BvL3N2LnBvCkBAIC0xLDEzICsxLDE0IEBACi0jIFN3ZWRpc2ggbWVzc2FnZXMgZm9yIFZpbS4KLSMgQ29weXJpZ2h0IChDKSBKb2hhbiBTdmVkYmVyZyAyMDA0LTIwMDUgPGpvaGFuQHN2ZWRiZXJnLmNvbT4KKyMgU3dlZGlzaCB0cmFuc2xhdGlvbiBmb3IgVmltLgorIyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgSm9oYW4gU3ZlZGJlcmcgPGpvaGFuQHN2ZWRiZXJnLmNvbT4sIDIwMDMtMjAwNS4KIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IFZpbSA2LjJcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IFZpbSA3XG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA1LTA0LTIzIDE0OjQzKzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA1LTA0LTIzIDE1OjIzKzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNS0xMi0wMSAyMjo1MSswMTAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwNS0xMi0wNCAyMDozMyswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBKb2hhbiBTdmVkYmVyZyA8am9oYW5Ac3ZlZGJlcmcuY29tPlxuIgotIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHN2QGxpLm9yZz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBTd2VkaXNoIDx0cC1zdkBsaXN0b3IudHAtc3Yuc2U+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKQEAgLTE4LDE1ICsxOSwxMiBAQAogbXNnaWQgIkU4MzogQ2Fubm90IGFsbG9jYXRlIGJ1ZmZlciwgdXNpbmcgb3RoZXIgb25lLi4uIgogbXNnc3RyICJFODM6IEthbiBpbnRlIGFsbG9rZXJhIGJ1ZmZlcnQsIGFuduRuZGVyIGVuIGFubmFuLi4uIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIkU1MTU6IE5vIGJ1ZmZlcnMgd2VyZSB1bmxvYWRlZCIKIG1zZ3N0ciAiRTUxNTogSW5nYSBidWZmZXJ0YXIgYmxldiB1cmxhZGRhZGUiCiAKLSMsIGMtZm9ybWF0CiBtc2dpZCAiRTUxNjogTm8gYnVmZmVycyB3ZXJlIGRlbGV0ZWQiCiBtc2dzdHIgIkU1MTY6IEluZ2EgYnVmZmVydGFyIGJsZXYgYm9ydHRhZ25hIgogCi0jLCBjLWZvcm1hdAogbXNnaWQgIkU1MTc6IE5vIGJ1ZmZlcnMgd2VyZSB3aXBlZCBvdXQiCiBtc2dzdHIgIkU1MTc6IEluZ2EgYnVmZmVydGFyIGJsZXYgdXRyYWRlcmFkZSIKIApAQCAtMTI2LDggKzEyNCw4IEBACiBtc2dpZCAibGluZSAlbGQgb2YgJWxkIC0tJWQlJS0tIGNvbCAiCiBtc2dzdHIgInJhZCAlbGQgYXYgJWxkIC0tJWQlJS0tIGtvbCAiCiAKLW1zZ2lkICJbTm8gZmlsZV0iCi1tc2dzdHIgIltJbmdlbiBmaWxdIgorbXNnaWQgIltObyBOYW1lXSIKK21zZ3N0ciAiW0luZ2V0IE5hbW5dIgogCiAjLiBtdXN0IGJlIGEgaGVscCBidWZmZXIKIG1zZ2lkICJoZWxwIgpAQCAtMTU5LDkgKzE1Nyw2IEBACiBtc2dpZCAiW0Vycm9yIExpc3RdIgogbXNnc3RyICJbRmVsbGlzdGFdIgogCi1tc2dpZCAiW05vIEZpbGVdIgotbXNnc3RyICJbSW5nZW4gZmlsXSIKLQogbXNnaWQgIiIKICJcbiIKICItLS0gU2lnbnMgLS0tIgpAQCAtMjIxLDEzICsyMTYsOCBAQAogbXNnc3RyICIgTnlja2Vsb3Jkc2tvbXBsZXR0ZXJpbmcgKF5OXlApIgogCiAjLiBjdHJsX3hfbW9kZSA9PSAwLCBeUC9eTiBjb21wbC4KLW1zZ2lkICIgXlggbW9kZSAoXkVeWV5MXl1eRl5JXkteRF5WXk5eUCkiCi1tc2dzdHIgIiBeWC1s5GdlICheRV5ZXkxeXV5GXkleS15EXlZeTl5QKSIKLQotIy4gU2Nyb2xsIGhhcyBpdCdzIG93biBtc2dzLCBpbiBpdCdzIHBsYWNlIHRoZXJlIGlzIHRoZSBtc2cgZm9yIGxvY2FsCi0jLiAqIGN0cmxfeF9tb2RlID0gMCAoZWcgY29udGludWVfc3RhdHVzICYgQ09OVF9MT0NBTCkgIC0tIEFjZXZlZG8KLW1zZ2lkICIgS2V5d29yZCBMb2NhbCBjb21wbGV0aW9uICheTl5QKSIKLW1zZ3N0ciAiIExva2FsIG55Y2tlbG9yZHNrb21wbGV0dGVyaW5nICheTl5QKSIKK21zZ2lkICIgXlggbW9kZSAoXl1eRF5FXkZeSV5LXkxeTl5PXlBeU15VXlZeWSkiCittc2dzdHIgIiBeWC1s5GdlICheXV5EXkVeRl5JXkteTF5OXk9eUF5TXlVeVl5ZKSIKIAogbXNnaWQgIiBXaG9sZSBsaW5lIGNvbXBsZXRpb24gKF5MXk5eUCkiCiBtc2dzdHIgIiBIZWxyYWRza29tcGxldHRlcmluZyAoXkxeTl5QKSIKQEAgLTI1MywxNSArMjQzLDI3IEBACiBtc2dpZCAiIENvbW1hbmQtbGluZSBjb21wbGV0aW9uICheVl5OXlApIgogbXNnc3RyICIgS29tbWFuZG9yYWRza29tcGxldHRlcmluZyAoXlZeTl5QKSIKIAorbXNnaWQgIiBVc2VyIGRlZmluZWQgY29tcGxldGlvbiAoXlVeTl5QKSIKK21zZ3N0ciAiIEFuduRuZGFyZGVmaW5pZXJhZCBrb21wbGV0dGVyaW5nICheVV5OXlApIgorCittc2dpZCAiIE9tbmkgY29tcGxldGlvbiAoXk9eTl5QKSIKK21zZ3N0ciAiIE9tbmlrb21wbGV0dGVyaW5nICheT15OXlApIgorCittc2dpZCAiIFNwZWxsaW5nIHN1Z2dlc3Rpb24gKF5TXk5eUCkiCittc2dzdHIgIiBTdGF2bmluZ3Nm9nJzbGFnICheU15OXlApIgorCittc2dpZCAiIEtleXdvcmQgTG9jYWwgY29tcGxldGlvbiAoXk5eUCkiCittc2dzdHIgIiBMb2thbCBueWNrZWxvcmRza29tcGxldHRlcmluZyAoXk5eUCkiCisKIG1zZ2lkICJIaXQgZW5kIG9mIHBhcmFncmFwaCIKIG1zZ3N0ciAiU3T2dHRlIHDlIHNsdXRldCBw5SBzdHlja2V0IgogCi1tc2dpZCAiJ3RoZXNhdXJ1cycgb3B0aW9uIGlzIGVtcHR5IgotbXNnc3RyICIndGhlc2F1cnVzJy1mbGFnZ2Eg5HIgdG9tIgotCiBtc2dpZCAiJ2RpY3Rpb25hcnknIG9wdGlvbiBpcyBlbXB0eSIKIG1zZ3N0ciAiJ2RpY3Rpb25hcnknLWZsYWdnYSDkciB0b20iCiAKK21zZ2lkICIndGhlc2F1cnVzJyBvcHRpb24gaXMgZW1wdHkiCittc2dzdHIgIid0aGVzYXVydXMnLWZsYWdnYSDkciB0b20iCisKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2Nhbm5pbmcgZGljdGlvbmFyeTogJXMiCiBtc2dzdHIgIlP2a2VyIGlnZW5vbSBvcmRib2s6ICVzIgpAQCAtMzA3LDExICszMDksMTAwIEBACiBtc2dpZCAibWF0Y2ggJWQiCiBtc2dzdHIgInRy5GZmICVkIgogCi0jLiBTa2lwIGZ1cnRoZXIgYXJndW1lbnRzIGJ1dCBkbyBjb250aW51ZSB0bwotIy4gKiBzZWFyY2ggZm9yIGEgdHJhaWxpbmcgY29tbWFuZC4KK21zZ2lkICJFMTg6IFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBpbiA6bGV0IgorbXNnc3RyICJFMTg6IE925G50YWRlIHRlY2tlbiBpIDpsZXQiCisKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEwNjogVW5rbm93biB2YXJpYWJsZTogXCIlc1wiIgotbXNnc3RyICJFMTA2OiBPa+RuZCB2YXJpYWJlbDogXCIlc1wiIgorbXNnaWQgIkU2ODQ6IGxpc3QgaW5kZXggb3V0IG9mIHJhbmdlOiAlbGQiCittc2dzdHIgIkU2ODQ6IGxpc3RpbmRleCB1dGFuZvZyIG9tcuVkZTogJWxkIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkUxMjE6IFVuZGVmaW5lZCB2YXJpYWJsZTogJXMiCittc2dzdHIgIkUxMjE6IE9kZWZpbmllcmFkIHZhcmlhYmVsOiAlcyIKKworbXNnaWQgIkUxMTE6IE1pc3NpbmcgJ10nIgorbXNnc3RyICJFMTExOiBTYWtuYXIgJ10nIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2ODY6IEFyZ3VtZW50IG9mICVzIG11c3QgYmUgYSBMaXN0IgorbXNnc3RyICJFNjg2OiBBcmd1bWVudCBhdiAlcyBt5XN0ZSB2YXJhIGVuIExpc3QiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTcxMjogQXJndW1lbnQgb2YgJXMgbXVzdCBiZSBhIExpc3Qgb3IgRGljdGlvbmFyeSIKK21zZ3N0ciAiRTcxMjogQXJndW1lbnQgYXYgJXMgbeVzdGUgdmFyYSBlbiBMaXN0YSBlbGxlciBUYWJlbGwiCisKK21zZ2lkICJFNzEzOiBDYW5ub3QgdXNlIGVtcHR5IGtleSBmb3IgRGljdGlvbmFyeSIKK21zZ3N0ciAiRTcxMzogS2FuIGludGUgYW525G5kYSB0b20gbnlja2VsIGb2ciBUYWJlbGwiCisKK21zZ2lkICJFNzE0OiBMaXN0IHJlcXVpcmVkIgorbXNnc3RyICJFNzE0OiBMaXN0YSBrcuR2cyIKKworbXNnaWQgIkU3MTU6IERpY3Rpb25hcnkgcmVxdWlyZWQiCittc2dzdHIgIkU3MTU6IFRhYmVsbCBrcuR2cyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTE4OiBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uOiAlcyIKK21zZ3N0ciAiRTExODogRvZyIG3lbmdhIGFyZ3VtZW50IHRpbGwgZnVua3Rpb246ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3MTY6IEtleSBub3QgcHJlc2VudCBpbiBEaWN0aW9uYXJ5OiAlcyIKK21zZ3N0ciAiRTcxNjogVGFuZ2VudCBmaW5ucyBpbnRlIGkgVGFiZWxsOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTIyOiBGdW5jdGlvbiAlcyBhbHJlYWR5IGV4aXN0cywgYWRkICEgdG8gcmVwbGFjZSBpdCIKK21zZ3N0ciAiRTEyMjogRnVua3Rpb25lbiAlcyBleGlzdGVyYXIgcmVkYW4sIGzkZ2cgdGlsbCAhIGb2ciBhdHQgZXJz5HR0YSBkZW4iCisKK21zZ2lkICJFNzE3OiBEaWN0aW9uYXJ5IGVudHJ5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFNzE3OiBUYWJlbGwtcG9zdCBleGlzdGVyYXIgcmVkYW4iCisKK21zZ2lkICJFNzE4OiBGdW5jcmVmIHJlcXVpcmVkIgorbXNnc3RyICJFNzE4OiBGdW5jcmVmIGty5HZzIgorCittc2dpZCAiRTcxOTogQ2Fubm90IHVzZSBbOl0gd2l0aCBhIERpY3Rpb25hcnkiCittc2dzdHIgIkU3MTk6IEthbiBpbnRlIGFuduRuZGEgWzpdIG1lZCBlbiBUYWJlbGwiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTczNDogV3JvbmcgdmFyaWFibGUgdHlwZSBmb3IgJXM9IgorbXNnc3RyICJFNzM0OiBGZWwgdmFyaWFiZWx0eXAgZvZyICVzPSIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTMwOiBVbmtub3duIGZ1bmN0aW9uOiAlcyIKK21zZ3N0ciAiRTEzMDogT2vkbmQgZnVua3Rpb246ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU0NjE6IElsbGVnYWwgdmFyaWFibGUgbmFtZTogJXMiCittc2dzdHIgIkU0NjE6IE90aWxs5XRldCB2YXJpYWJlbG5hbW46ICVzIgorCittc2dpZCAiRTY4NzogTGVzcyB0YXJnZXRzIHRoYW4gTGlzdCBpdGVtcyIKK21zZ3N0ciAiRTY4NzogRuRycmUgbeVsIORuIExpc3QtcG9zdGVyIgorCittc2dpZCAiRTY4ODogTW9yZSB0YXJnZXRzIHRoYW4gTGlzdCBpdGVtcyIKK21zZ3N0ciAiRTY4ODogRmxlciBt5Wwg5G4gTGlzdC1wb3N0ZXIiCisKK21zZ2lkICJEb3VibGUgOyBpbiBsaXN0IG9mIHZhcmlhYmxlcyIKK21zZ3N0ciAiRG91YmxlIDsgaSBsaXN0YW4gbWVkIHZhcmlhYmxlciIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNzM4OiBDYW4ndCBsaXN0IHZhcmlhYmxlcyBmb3IgJXMiCittc2dzdHIgIkU3Mzg6IEthbiBpbnRlIGxpc3RhIHZhcmlhYmxlciBm9nIgJXMiCisKK21zZ2lkICJFNjg5OiBDYW4gb25seSBpbmRleCBhIExpc3Qgb3IgRGljdGlvbmFyeSIKK21zZ3N0ciAiRTY4OTogS2FuIGJhcmEgaW5kZXhlcmEgZW4gTGlzdGEgZWxsZXIgVGFiZWxsIgorCittc2dpZCAiRTcwODogWzpdIG11c3QgY29tZSBsYXN0IgorbXNnc3RyICJFNzA4OiBbOl0gbeVzdGUga29tbWEgc2lzdCIKKworbXNnaWQgIkU3MDk6IFs6XSByZXF1aXJlcyBhIExpc3QgdmFsdWUiCittc2dzdHIgIkU3MDk6IFs6XSBrcuR2ZXIgZXR0IExpc3QtduRyZGUiCisKK21zZ2lkICJFNzEwOiBMaXN0IHZhbHVlIGhhcyBtb3JlIGl0ZW1zIHRoYW4gdGFyZ2V0IgorbXNnc3RyICJFNzEwOiBMaXN0LXbkcmRlIGhhciBtZXIgZvZyZW3lbCDkbiBt5WwiCisKK21zZ2lkICJFNzExOiBMaXN0IHZhbHVlIGhhcyBub3QgZW5vdWdoIGl0ZW1zIgorbXNnc3RyICJFNzExOiBMaXN0LXbkcmRlIGhhciBpbnRlIHRpbGxy5GNrbGlndCBtZWQgZvZyZW3lbCIKKworbXNnaWQgIkU2OTA6IE1pc3NpbmcgXCJpblwiIGFmdGVyIDpmb3IiCittc2dzdHIgIkU2OTA6IFNha25hciBcImluXCIgZWZ0ZXIgOmZvciIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTA3OiBNaXNzaW5nIGJyYWNlczogJXMiCkBAIC0zMjEsMTQgKzQxMiwzNSBAQAogbXNnaWQgIkUxMDg6IE5vIHN1Y2ggdmFyaWFibGU6IFwiJXNcIiIKIG1zZ3N0ciAiRTEwODogSW5nZW4gc+VkYW4gdmFyaWFiZWw6IFwiJXNcIiIKIAorbXNnaWQgIkU3NDM6IHZhcmlhYmxlIG5lc3RlZCB0b28gZGVlcCBmb3IgKHVuKWxvY2siCittc2dzdHIgIkU3NDM6IHZhcmlhYmVsIG7kc3RsYWRlIGb2ciBkanVwdCBm9nIgKHVuKWxvY2siCisKIG1zZ2lkICJFMTA5OiBNaXNzaW5nICc6JyBhZnRlciAnPyciCiBtc2dzdHIgIkUxMDk6IFNha25hciAnOicgZWZ0ZXIgJz8nIgogCittc2dpZCAiRTY5MTogQ2FuIG9ubHkgY29tcGFyZSBMaXN0IHdpdGggTGlzdCIKK21zZ3N0ciAiRTY5MTogS2FuIGJhcmEgauRtZvZyYSBMaXN0YSBtZWQgTGlzdGEiCisKK21zZ2lkICJFNjkyOiBJbnZhbGlkIG9wZXJhdGlvbiBmb3IgTGlzdHMiCittc2dzdHIgIkU2OTI6IE9naWx0aWcgb3BlcmF0aW9uIGb2ciBMaXN0b3IiCisKK21zZ2lkICJFNzM1OiBDYW4gb25seSBjb21wYXJlIERpY3Rpb25hcnkgd2l0aCBEaWN0aW9uYXJ5IgorbXNnc3RyICJFNzM1OiBLYW4gYmFyYSBq5G1m9nJhIFRhYmVsbCBtZWQgVGFiZWxsIgorCittc2dpZCAiRTczNjogSW52YWxpZCBvcGVyYXRpb24gZm9yIERpY3Rpb25hcnkiCittc2dzdHIgIkU3MzY6IE9naWx0aWcgb3BlcmF0aW9uIGb2ciBUYWJlbGwiCisKK21zZ2lkICJFNjkzOiBDYW4gb25seSBjb21wYXJlIEZ1bmNyZWYgd2l0aCBGdW5jcmVmIgorbXNnc3RyICJFNjkzOiBLYW4gYmFyYSBq5G1m9nJhIEZ1bmNyZWYgbWVkIEZ1bmNyZWYiCisKK21zZ2lkICJFNjk0OiBJbnZhbGlkIG9wZXJhdGlvbiBmb3IgRnVuY3JlZnMiCittc2dzdHIgIkU2OTQ6IE9naWx0aWcgb3BlcmF0aW9uIGb2ciBGdW5jcmVmcyIKKwogbXNnaWQgIkUxMTA6IE1pc3NpbmcgJyknIgogbXNnc3RyICJFMTEwOiBTYWtuYXIgJyknIgogCi1tc2dpZCAiRTExMTogTWlzc2luZyAnXSciCi1tc2dzdHIgIkUxMTE6IFNha25hciAnXSciCittc2dpZCAiRTY5NTogQ2Fubm90IGluZGV4IGEgRnVuY3JlZiIKK21zZ3N0ciAiRTY5NTogS2FuIGludGUgaW5kZXhlcmEgZW4gRnVuY3JlZiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTEyOiBPcHRpb24gbmFtZSBtaXNzaW5nOiAlcyIKQEAgLTM0NywyNCArNDU5LDM0IEBACiBtc2dzdHIgIkUxMTU6IFNha25hciBjaXRhdHRlY2tlbjogJXMiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTExNjogSW52YWxpZCBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzIgotbXNnc3RyICJFMTE2OiBPZ2lsdGlnYSBhcmd1bWVudCBm9nIgZnVua3Rpb24gJXMiCittc2dpZCAiRTY5NjogTWlzc2luZyBjb21tYSBpbiBMaXN0OiAlcyIKK21zZ3N0ciAiRTY5NjogU2FrbmFyIGtvbW1hIGkgTGlzdGE6ICVzIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkUxMTc6IFVua25vd24gZnVuY3Rpb246ICVzIgotbXNnc3RyICJFMTE3OiBPa+RuZCBmdW5rdGlvbjogJXMiCittc2dpZCAiRTY5NzogTWlzc2luZyBlbmQgb2YgTGlzdCAnXSc6ICVzIgorbXNnc3RyICJFNjk3OiBTYWtuYXIgc2x1dCBw5SBMaXN0YSAnXSc6ICVzIgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkUxMTg6IFRvbyBtYW55IGFyZ3VtZW50cyBmb3IgZnVuY3Rpb246ICVzIgotbXNnc3RyICJFMTE4OiBG9nIgbeVuZ2EgYXJndW1lbnQgdGlsbCBmdW5rdGlvbjogJXMiCittc2dpZCAiRTcyMDogTWlzc2luZyBjb2xvbiBpbiBEaWN0aW9uYXJ5OiAlcyIKK21zZ3N0ciAiRTcyMDogU2FrbmFyIGtvbG9uIGkgVGFiZWxsOiAlcyIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFMTE5OiBOb3QgZW5vdWdoIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb246ICVzIgotbXNnc3RyICJFMTE5OiBJbnRlIHRpbGxy5GNrbGlndCBtZWQgYXJndW1lbnQgdGlsbCBmdW5rdGlvbjogJXMiCittc2dpZCAiRTcyMTogRHVwbGljYXRlIGtleSBpbiBEaWN0aW9uYXJ5OiBcIiVzXCIiCittc2dzdHIgIkU3MjE6IER1cGxpY2VyYWQgbnlja2VsIGkgVGFiZWxsOiBcIiVzXCIiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEyMDogVXNpbmcgPFNJRD4gbm90IGluIGEgc2NyaXB0IGNvbnRleHQ6ICVzIgotbXNnc3RyICJFMTIwOiBBbnbkbmRlciA8U0lEPiBpbnRlIGkgc2tyaXB0c2FtbWFuaGFuZzogJXMiCittc2dpZCAiRTcyMjogTWlzc2luZyBjb21tYSBpbiBEaWN0aW9uYXJ5OiAlcyIKK21zZ3N0ciAiRTcyMjogU2FrbmFyIGtvbW1hIGkgVGFiZWxsOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNzIzOiBNaXNzaW5nIGVuZCBvZiBEaWN0aW9uYXJ5ICd9JzogJXMiCittc2dzdHIgIkU3MjM6IFNha25hciBzbHV0IHDlIFRhYmVsbCAnfSc6ICVzIgorCittc2dpZCAiRTcyNDogdmFyaWFibGUgbmVzdGVkIHRvbyBkZWVwIGZvciBkaXNwbGF5aW5nIgorbXNnc3RyICJFNzI0OiB2YXJpYWJlbCBu5HN0bGFkIGb2ciBkanVwdCBm9nIgYXR0IHZpc2FzIgorCittc2dpZCAiRTY5OTogVG9vIG1hbnkgYXJndW1lbnRzIgorbXNnc3RyICJFNjk5OiBG9nIgbeVuZ2EgYXJndW1lbnQiCiAKICMuCiAjLiAqIFllcyB0aGlzIGlzIHVnbHksIEkgZG9uJ3QgcGFydGljdWxhcmx5IGxpa2UgaXQgZWl0aGVyLiAgQnV0IGRvaW5nIGl0CkBAIC0zNzUsOSArNDk3LDE3IEBACiBtc2dzdHIgIiZPayIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNzM3OiBLZXkgYWxyZWFkeSBleGlzdHM6ICVzIgorbXNnc3RyICJFNzM3OiBUYW5nZW50ZW4gZmlubnMgcmVkYW46ICVzIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIistJXMlM2xkIGxpbmVzOiAiCiBtc2dzdHIgIistJXMlM2xkIHJhZGVyOiAiCiAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTcwMDogVW5rbm93biBmdW5jdGlvbjogJXMiCittc2dzdHIgIkU3MDA6IE9r5G5kIGZ1bmt0aW9uOiAlcyIKKwogbXNnaWQgIiIKICImT0tcbiIKICImQ2FuY2VsIgpAQCAtMzg4LDQwICs1MTgsODkgQEAKIG1zZ2lkICJjYWxsZWQgaW5wdXRyZXN0b3JlKCkgbW9yZSBvZnRlbiB0aGFuIGlucHV0c2F2ZSgpIgogbXNnc3RyICJhbnJvcGFkZSBpbnB1dHJlc3RvcmUoKSBvZnRhcmUg5G4gaW5wdXRzYXZlKCkiCiAKLW1zZ2lkICJFNjU1OiBUb28gbWFueSBzeW1ib2xpYyBsaW5rcyAoY3ljbGU/KSIKLW1zZ3N0ciAiRTY1NTogRvZyIG3lbmdhIHN5bWJvbGlza2EgbORua2FyIChzbGluZ2E/KSIKK21zZ2lkICJFNzQ1OiBSYW5nZSBub3QgYWxsb3dlZCIKK21zZ3N0ciAiRTc0NTogT21y5WRlIG90aWxs5XRldCIKKworbXNnaWQgIkU3MDE6IEludmFsaWQgdHlwZSBmb3IgbGVuKCkiCittc2dzdHIgIkU3MDE6IE9naWx0aWcgdHlwIGb2ciBsZW4oKSIKKworbXNnaWQgIkU3MjY6IFN0cmlkZSBpcyB6ZXJvIgorbXNnc3RyICJFNzI2OiBLbGl2IORyIG5vbGwiCisKK21zZ2lkICJFNzI3OiBTdGFydCBwYXN0IGVuZCIKK21zZ3N0ciAiRTcyNzogU3RhcnQgZWZ0ZXIgc2x1dCIKKworbXNnaWQgIjxlbXB0eT4iCittc2dzdHIgIjx0b20+IgogCiBtc2dpZCAiRTI0MDogTm8gY29ubmVjdGlvbiB0byBWaW0gc2VydmVyIgogbXNnc3RyICJFMjQwOiBJbmdlbiBhbnNsdXRuaW5nIHRpbGwgVmltLXNlcnZlciIKIAotbXNnaWQgIkUyNzc6IFVuYWJsZSB0byByZWFkIGEgc2VydmVyIHJlcGx5IgotbXNnc3RyICJFMjc3OiBLdW5kZSBpbnRlIGzkc2EgZXR0IHNlcnZlcnN2YXIiCi0KLW1zZ2lkICJFMjU4OiBVbmFibGUgdG8gc2VuZCB0byBjbGllbnQiCi1tc2dzdHIgIkUyNTg6IEt1bmRlIGludGUgc+RuZGEgdGlsbCBrbGllbnQiCi0KICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI0MTogVW5hYmxlIHRvIHNlbmQgdG8gJXMiCiBtc2dzdHIgIkUyNDE6IEt1bmRlIGludGUgc+RuZGEgdGlsbCAlcyIKIAorbXNnaWQgIkUyNzc6IFVuYWJsZSB0byByZWFkIGEgc2VydmVyIHJlcGx5IgorbXNnc3RyICJFMjc3OiBLdW5kZSBpbnRlIGzkc2EgZXR0IHNlcnZlcnN2YXIiCisKK21zZ2lkICJFNjU1OiBUb28gbWFueSBzeW1ib2xpYyBsaW5rcyAoY3ljbGU/KSIKK21zZ3N0ciAiRTY1NTogRvZyIG3lbmdhIHN5bWJvbGlza2EgbORua2FyIChzbGluZ2E/KSIKKworbXNnaWQgIkUyNTg6IFVuYWJsZSB0byBzZW5kIHRvIGNsaWVudCIKK21zZ3N0ciAiRTI1ODogS3VuZGUgaW50ZSBz5G5kYSB0aWxsIGtsaWVudCIKKworbXNnaWQgIkU3MDI6IFNvcnQgY29tcGFyZSBmdW5jdGlvbiBmYWlsZWQiCittc2dzdHIgIkU3MDI6IErkbWb2cmVsc2VmdW5rdGlvbmVuIGb2ciBzb3J0ZXJpbmcgbWlzc2x5Y2thZGVzIgorCiBtc2dpZCAiKEludmFsaWQpIgogbXNnc3RyICIoT2dpbHRpZykiCiAKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEyMTogVW5kZWZpbmVkIHZhcmlhYmxlOiAlcyIKLW1zZ3N0ciAiRTEyMTogT2RlZmluaWVyYWQgdmFyaWFiZWw6ICVzIgorbXNnaWQgIkU2Nzc6IEVycm9yIHdyaXRpbmcgdGVtcCBmaWxlIgorbXNnc3RyICJFNjc3OiBGZWwgdmlkIHNrcml2bmluZyBhdiB0ZW1wb3LkciBmaWwiCisKK21zZ2lkICJFNzAzOiBVc2luZyBhIEZ1bmNyZWYgYXMgYSBudW1iZXIiCittc2dzdHIgIkU3MDM6IEFuduRuZGVyIGVuIEZ1bmNyZWYgc29tIGVuIHNpZmZyYSIKKworbXNnaWQgIkU3NDU6IFVzaW5nIGEgTGlzdCBhcyBhIG51bWJlciIKK21zZ3N0ciAiRTc0NTogQW525G5kZXIgZW4gTGlzdGEgc29tIGVuIHNpZmZyYSIKKworbXNnaWQgIkU3Mjg6IFVzaW5nIGEgRGljdGlvbmFyeSBhcyBhIG51bWJlciIKK21zZ3N0ciAiRTcyODogQW525G5kZXIgZW4gVGFiZWxsIHNvbSBlbiBzaWZmcmEiCisKK21zZ2lkICJFNzI5OiB1c2luZyBGdW5jcmVmIGFzIGEgU3RyaW5nIgorbXNnc3RyICJFNzI5OiBhbnbkbmRlciBGdW5jcmVmIHNvbSBlbiBTdHLkbmciCisKK21zZ2lkICJFNzMwOiB1c2luZyBMaXN0IGFzIGEgU3RyaW5nIgorbXNnc3RyICJFNzMwOiBhbnbkbmRlciBMaXN0YSBzb20gZW4gU3Ry5G5nIgorCittc2dpZCAiRTczMTogdXNpbmcgRGljdGlvbmFyeSBhcyBhIFN0cmluZyIKK21zZ3N0ciAiRTczMTogYW525G5kZXIgVGFiZWxsIHNvbSBlbiBTdHLkbmciCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ2MTogSWxsZWdhbCB2YXJpYWJsZSBuYW1lOiAlcyIKLW1zZ3N0ciAiRTQ2MTogT3RpbGzldGV0IHZhcmlhYmVsbmFtbjogJXMiCittc2dpZCAiRTcwNDogRnVuY3JlZiB2YXJpYWJsZSBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWw6ICVzIgorbXNnc3RyICJFNzA0OiBWYXJpYWJlbG5hbW4gZvZyIEZ1bmNyZWYgbeVzdGUgYvZyamEgbWVkIGVuIHZlcnNhbDogJXMiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEyMjogRnVuY3Rpb24gJXMgYWxyZWFkeSBleGlzdHMsIGFkZCAhIHRvIHJlcGxhY2UgaXQiCi1tc2dzdHIgIkUxMjI6IEZ1bmt0aW9uZW4gJXMgZXhpc3RlcmFyIHJlZGFuLCBs5GdnIHRpbGwgISBm9nIgYXR0IGVyc+R0dGEgZGVuIgorbXNnaWQgIkU3MDU6IFZhcmlhYmxlIG5hbWUgY29uZmxpY3RzIHdpdGggZXhpc3RpbmcgZnVuY3Rpb246ICVzIgorbXNnc3RyICJFNzA1OiBWYXJpYWJlbG5hbW4ga29uZmxpa3RlcmFyIG1lZCBleGlzdGVyYW5kZSBmdW5rdGlvbiAlcyIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFMTIzOiBVbmRlZmluZWQgZnVuY3Rpb246ICVzIgotbXNnc3RyICJFMTIzOiBPZGVmaW5pZXJhZCBmdW5rdGlvbjogJXMiCittc2dpZCAiRTcwNjogVmFyaWFibGUgdHlwZSBtaXNtYXRjaCBmb3I6ICVzIgorbXNnc3RyICJFNzA2OiBWYXJpYWJlbHR5cCBtYXRjaGFyIGludGUgZvZyOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNzQxOiBWYWx1ZSBpcyBsb2NrZWQ6ICVzIgorbXNnc3RyICJFNzQxOiBW5HJkZSDkciBs5XN0OiAlcyIKKworbXNnaWQgIlVua25vd24iCittc2dzdHIgIk9r5G5kIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3NDI6IENhbm5vdCBjaGFuZ2UgdmFsdWUgb2YgJXMiCittc2dzdHIgIkU3NDI6IEthbiBpbnRlIORuZHJhIHbkcmRlIGF2ICVzIgorCittc2dpZCAiRTY5ODogdmFyaWFibGUgbmVzdGVkIHRvbyBkZWVwIGZvciBtYWtpbmcgYSBjb3B5IgorbXNnc3RyICJFNjk4OiB2YXJpYWJlbCBu5HN0bGFkIGb2ciBkanVwdCBm9nIgYXR0IHNrYXBhIGVuIGtvcGlhIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjQ6IE1pc3NpbmcgJygnOiAlcyIKQEAgLTQzNSwxOSArNjE0LDE2IEBACiBtc2dzdHIgIkUxMjY6IFNha25hciA6ZW5kZnVuY3Rpb24iCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEyNzogQ2Fubm90IHJlZGVmaW5lIGZ1bmN0aW9uICVzOiBJdCBpcyBpbiB1c2UiCi1tc2dzdHIgIkUxMjc6IEthbiBpbnRlIG9tZGVmaW5pZXJhIGZ1bmt0aW9uICVzOiBEZW4gYW525G5kcyIKK21zZ2lkICJFNzQ2OiBGdW5jdGlvbiBuYW1lIGRvZXMgbm90IG1hdGNoIHNjcmlwdCBmaWxlIG5hbWU6ICVzIgorbXNnc3RyICJFNzQ2OiBGdW5rdGlvbnNuYW1uIG1hdGNoYXIgaW50ZSBza3JpcHRmaWxuYW1uOiAlcyIKIAogbXNnaWQgIkUxMjk6IEZ1bmN0aW9uIG5hbWUgcmVxdWlyZWQiCiBtc2dzdHIgIkUxMjk6IEZ1bmt0aW9uc25hbW4ga3LkdnMiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTEyODogRnVuY3Rpb24gbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsOiAlcyIKLW1zZ3N0ciAiRTEyODogRnVua3Rpb25zbmFtbiBt5XN0ZSBi9nJqYSBtZWQgZW4gdmVyc2FsOiAlcyIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFMTMwOiBVbmRlZmluZWQgZnVuY3Rpb246ICVzIgotbXNnc3RyICJFMTMwOiBPZGVmaW5pZXJhZCBmdW5rdGlvbjogJXMiCittc2dpZCAiRTEyODogRnVuY3Rpb24gbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIG9yIGNvbnRhaW4gYSBjb2xvbjogJXMiCittc2dzdHIgIiIKKyJFMTI4OiBGdW5rdGlvbnNuYW1uIG3lc3RlIGL2cmphIG1lZCBlbiB2ZXJzYWwgZWxsZXIgaW5uZWjlbGxhIGV0dCBrb2xvbjogJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEzMTogQ2Fubm90IGRlbGV0ZSBmdW5jdGlvbiAlczogSXQgaXMgaW4gdXNlIgpAQCAtNDU2LDcgKzYzMiw2IEBACiBtc2dpZCAiRTEzMjogRnVuY3Rpb24gY2FsbCBkZXB0aCBpcyBoaWdoZXIgdGhhbiAnbWF4ZnVuY2RlcHRoJyIKIG1zZ3N0ciAiRTEzMjogRGp1cGV0IHDlIGZ1bmt0aW9uc2Fucm9wZXQg5HIgaPZncmUg5G4gJ21heGZ1bmNkZXB0aCciCiAKLSMuIGFsd2F5cyBzY3JvbGwgdXAsIGRvbid0IG92ZXJ3cml0ZQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYWxsaW5nICVzIgogbXNnc3RyICJhbnJvcGFyICVzIgpAQCAtNDcwLDEwICs2NDUsOSBAQAogbXNnc3RyICIlcyByZXR1cm5lcmFyICMlbGQiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiJXMgcmV0dXJuaW5nIFwiJXNcIiIKLW1zZ3N0ciAiJXMgcmV0dXJuZXJhciBcIiVzXCIiCittc2dpZCAiJXMgcmV0dXJuaW5nICVzIgorbXNnc3RyICIlcyByZXR1cm5lcmFyICVzIgogCi0jLiBhbHdheXMgc2Nyb2xsIHVwLCBkb24ndCBvdmVyd3JpdGUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29udGludWluZyBpbiAlcyIKIG1zZ3N0ciAiZm9ydHPkdHRlciBpICVzIgpAQCAtNDg5LDE5MCArNjYzLDEyIEBACiAiXG4iCiAiIyBnbG9iYWxhIHZhcmlhYmxlcjpcbiIKIAotbXNnaWQgIkVudGVyaW5nIERlYnVnIG1vZGUuICBUeXBlIFwiY29udFwiIHRvIGNvbnRpbnVlLiIKLW1zZ3N0ciAiR+VyIGluIGkgZmVsc/ZrbmluZ3Ns5GdlLiAgU2tyaXYgXCJjb250XCIgZvZyIGF0dCBmb3J0c+R0dGEuIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgImxpbmUgJWxkOiAlcyIKLW1zZ3N0ciAicmFkICVsZDogJXMiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiY21kOiAlcyIKLW1zZ3N0ciAia29tbWFuZG86ICVzIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkJyZWFrcG9pbnQgaW4gXCIlcyVzXCIgbGluZSAlbGQiCi1tc2dzdHIgIkJyeXRwdW5rdCBpIFwiJXMlc1wiIHJhZCAlbGQiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTE2MTogQnJlYWtwb2ludCBub3QgZm91bmQ6ICVzIgotbXNnc3RyICJFMTYxOiBCcnl0cHVua3QgaGl0dGFkZXMgaW50ZTogJXMiCi0KLW1zZ2lkICJObyBicmVha3BvaW50cyBkZWZpbmVkIgotbXNnc3RyICJJbmdhIGJyeXRwdW5rdGVyIGRlZmluaWVyYWRlIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIiUzZCAgJXMgJXMgIGxpbmUgJWxkIgotbXNnc3RyICIlM2QgICVzICVzICByYWQgJWxkIgotCi1tc2dpZCAiU2F2ZSBBcyIKLW1zZ3N0ciAiU3BhcmEgc29tIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlNhdmUgY2hhbmdlcyB0byBcIiUuKnNcIj8iCi1tc2dzdHIgIlNwYXJhIORuZHJpbmdhciB0aWxsIFwiJS4qc1wiPyIKLQotbXNnaWQgIlVudGl0bGVkIgotbXNnc3RyICJOYW1ubPZzIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkUxNjI6IE5vIHdyaXRlIHNpbmNlIGxhc3QgY2hhbmdlIGZvciBidWZmZXIgXCIlc1wiIgotbXNnc3RyICJFMTYyOiBJbmdlbiBza3Jpdm5pbmcgc2VkYW4gc2VuYXN0ZSDkbmRyaW5nIGb2ciBidWZmZXJ0IFwiJXNcIiIKLQotbXNnaWQgIldhcm5pbmc6IEVudGVyZWQgb3RoZXIgYnVmZmVyIHVuZXhwZWN0ZWRseSAoY2hlY2sgYXV0b2NvbW1hbmRzKSIKLW1zZ3N0ciAiVmFybmluZzogR2ljayBpbiBpIGFuZHJhIGJ1ZmZlcnRhciBvduRudGF0IChrb250cm9sbGVyYSBhdXRva29tbWFuZG9uKSIKLQotbXNnaWQgIkUxNjM6IFRoZXJlIGlzIG9ubHkgb25lIGZpbGUgdG8gZWRpdCIKLW1zZ3N0ciAiRTE2MzogRGV0IGZpbm5zIGJhcmEgZW4gZmlsIGF0dCByZWRpZ2VyYSIKLQotbXNnaWQgIkUxNjQ6IENhbm5vdCBnbyBiZWZvcmUgZmlyc3QgZmlsZSIKLW1zZ3N0ciAiRTE2NDogS2FuIGludGUgZ+UgZvZyZSBm9nJzdGEgZmlsZW4iCi0KLW1zZ2lkICJFMTY1OiBDYW5ub3QgZ28gYmV5b25kIGxhc3QgZmlsZSIKLW1zZ3N0ciAiRTE2NTogS2FuIGludGUgZ+UgYm9ydG9tIHNpc3RhIGZpbGVuIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkU2NjY6IGNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQ6ICVzIgotbXNnc3RyICJFNjY2OiBrb21waWxhdG9yIHN09mRzIGludGU6ICVzIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlNlYXJjaGluZyBmb3IgXCIlc1wiIGluIFwiJXNcIiIKLW1zZ3N0ciAiU/ZrZXIgZWZ0ZXIgXCIlc1wiIGkgXCIlc1wiIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlNlYXJjaGluZyBmb3IgXCIlc1wiIgotbXNnc3RyICJT9mtlciBlZnRlciBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAibm90IGZvdW5kIGluICdydW50aW1lcGF0aCc6IFwiJXNcIiIKLW1zZ3N0ciAiaGl0dGFkZXMgaW50ZSBpICdydW50aW1lcGF0aCc6IFwiJXNcIiIKLQotbXNnaWQgIlNvdXJjZSBWaW0gc2NyaXB0IgotbXNnc3RyICJM5HMgVmltLXNrcmlwdCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJDYW5ub3Qgc291cmNlIGEgZGlyZWN0b3J5OiBcIiVzXCIiCi1tc2dzdHIgIkthbiBpbnRlIGzkc2EgZW4ga2F0YWxvZzogXCIlc1wiIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgImNvdWxkIG5vdCBzb3VyY2UgXCIlc1wiIgotbXNnc3RyICJrdW5kZSBpbnRlIGzkc2EgXCIlc1wiIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgImxpbmUgJWxkOiBjb3VsZCBub3Qgc291cmNlIFwiJXNcIiIKLW1zZ3N0ciAicmFkICVsZDoga3VuZGUgaW50ZSBs5HNhIFwiJXNcIiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJzb3VyY2luZyBcIiVzXCIiCi1tc2dzdHIgImzkc2VyIFwiJXNcIiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJsaW5lICVsZDogc291cmNpbmcgXCIlc1wiIgotbXNnc3RyICJyYWQgJWxkOiBs5HNlciBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmluaXNoZWQgc291cmNpbmcgJXMiCi1tc2dzdHIgImzkc3RlIGtsYXJ0ICVzIgotCi1tc2dpZCAiVzE1OiBXYXJuaW5nOiBXcm9uZyBsaW5lIHNlcGFyYXRvciwgXk0gbWF5IGJlIG1pc3NpbmciCi1tc2dzdHIgIlcxNTogVmFybmluZzogRmVsIHJhZGF2c2tpbGphcmUsIF5NIGthbiBzYWtuYXMiCi0KLW1zZ2lkICJFMTY3OiA6c2NyaXB0ZW5jb2RpbmcgdXNlZCBvdXRzaWRlIG9mIGEgc291cmNlZCBmaWxlIgotbXNnc3RyICJFMTY3OiA6c2NyaXB0ZW5jb2RpbmcgYW525G5kcyB1dGFuZvZyIGVuIGv2cmQgZmlsIgotCi1tc2dpZCAiRTE2ODogOmZpbmlzaCB1c2VkIG91dHNpZGUgb2YgYSBzb3VyY2VkIGZpbGUiCi1tc2dzdHIgIkUxNjg6IDpmaW5pc2ggYW525G5kcyB1dGFuZvZyIGVuIGv2cmQgZmlsIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlBhZ2UgJWQiCi1tc2dzdHIgIlNpZGEgJWQiCi0KLW1zZ2lkICJObyB0ZXh0IHRvIGJlIHByaW50ZWQiCi1tc2dzdHIgIkluZ2VuIHRleHQgYXR0IHNrcml2YSB1dCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJQcmludGluZyBwYWdlICVkICglZCUlKSIKLW1zZ3N0ciAiU2tyaXZlciB1dCBzaWRhICVkICglZCUlKSIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICIgQ29weSAlZCBvZiAlZCIKLW1zZ3N0ciAiIEtvcGlhICVkIGF2ICVkIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIlByaW50ZWQ6ICVzIgotbXNnc3RyICJTa3JldiB1dDogJXMiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUHJpbnRpbmcgYWJvcnRlZCIKLW1zZ3N0ciAiVXRza3JpZnQgYXZicnV0ZW4iCi0KLW1zZ2lkICJFNDU1OiBFcnJvciB3cml0aW5nIHRvIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCi1tc2dzdHIgIkU0NTU6IEZlbCB2aWQgc2tyaXZuaW5nIGF2IHV0ZGF0YSB0aWxsIFBvc3RTY3JpcHQtZmlsIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkU2MjQ6IENhbid0IG9wZW4gZmlsZSBcIiVzXCIiCi1tc2dzdHIgIkU2MjQ6IEthbiBpbnRlIPZwcG5hIGZpbCBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ1NzogQ2FuJ3QgcmVhZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlc1wiIgotbXNnc3RyICJFNDU3OiBLYW4gaW50ZSBs5HNhIFBvc3RTY3JpcHQtcmVzdXJzZmlsIFwiJXNcIiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNjE4OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUiCi1tc2dzdHIgIkU2MTg6IGZpbCBcIiVzXCIg5HIgaW50ZSBlbiBQb3N0U2NyaXB0LXJlc3Vyc2ZpbCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNjE5OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBzdXBwb3J0ZWQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgotbXNnc3RyICJFNjE5OiBmaWwgXCIlc1wiIORyIGludGUgZW4gUG9zdFNjcmlwdC1yZXN1cnNmaWwgc29tIHN09mRzIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkU2MjE6IFwiJXNcIiByZXNvdXJjZSBmaWxlIGhhcyB3cm9uZyB2ZXJzaW9uIgotbXNnc3RyICJFNjIxOiBcIiVzXCIta+RsbGZpbGVuIGhhciBmZWwgdmVyc2lvbiIKLQotbXNnaWQgIkUzMjQ6IENhbid0IG9wZW4gUG9zdFNjcmlwdCBvdXRwdXQgZmlsZSIKLW1zZ3N0ciAiRTMyNDogS2FuIGludGUg9nBwbmEgUG9zdFNjcmlwdC11dGZpbCIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNDU2OiBDYW4ndCBvcGVuIGZpbGUgXCIlc1wiIgotbXNnc3RyICJFNDU2OiBLYW4gaW50ZSD2cHBuYSBmaWwgXCIlc1wiIgotCi1tc2dpZCAiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCJwcm9sb2cucHNcIiIKLW1zZ3N0ciAiRTQ1NjogS2FuIGludGUgaGl0dGEgUG9zdFNjcmlwdC1r5GxsZmlsZW4gXCJwcm9sb2cucHNcIiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzLnBzXCIiCi1tc2dzdHIgIkU0NTY6IEthbiBpbnRlIGhpdHRhIFBvc3RTY3JpcHQta+RsbGZpbGVuIFwiJXMucHNcIiIKLQotIywgYy1mb3JtYXQKLW1zZ2lkICJFNjIwOiBVbmFibGUgdG8gY29udmVydCBmcm9tIG11bHRpLWJ5dGUgdG8gXCIlc1wiIGVuY29kaW5nIgotbXNnc3RyICJFNjIwOiBLdW5kZSBpbnRlIGtvbnZlcnRlcmEgZnLlbiBtdWx0aS1ieXRlIHRpbGwgXCIlc1wiIGVuY29kaW5nIgotCi1tc2dpZCAiU2VuZGluZyB0byBwcmludGVyLi4uIgotbXNnc3RyICJTa2lja2FyIHRpbGwgc2tyaXZhcmUuLi4iCi0KLW1zZ2lkICJFMzY1OiBGYWlsZWQgdG8gcHJpbnQgUG9zdFNjcmlwdCBmaWxlIgotbXNnc3RyICJFMzY1OiBNaXNzbHlja2FkZXMgbWVkIGF0dCBza3JpdmEgdXQgUG9zdFNjcmlwdC1maWwiCi0KLW1zZ2lkICJQcmludCBqb2Igc2VudC4iCi1tc2dzdHIgIlNrcml2YXJqb2JiIHNraWNrYXQuIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkN1cnJlbnQgJXNsYW5ndWFnZTogXCIlc1wiIgotbXNnc3RyICJBa3R1ZWxsdCAlc3NwcuVrOiBcIiVzXCIiCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTE5NzogQ2Fubm90IHNldCBsYW5ndWFnZSB0byBcIiVzXCIiCi1tc2dzdHIgIkUxOTc6IEthbiBpbnRlIHPkdHRhIHNwcuVrIHRpbGwgXCIlc1wiIgorbXNnaWQgIiIKKyJcbiIKKyJcdExhc3Qgc2V0IGZyb20gIgorbXNnc3RyICIiCisiXG4iCisiXHRTZW5hc3Qgc2F0dCBmcuVuICIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICI8JXM+JXMlcyAgJWQsICBIZXggJTAyeCwgIE9jdGFsICUwM28iCkBAIC03NTgsMTAgKzc1NCw4IEBACiBtc2dpZCAiSWxsZWdhbCBzdGFydGluZyBjaGFyIgogbXNnc3RyICJPdGlsbOV0ZXQgc3RhcnR0ZWNrZW4iCiAKLSMuIE92ZXJ3cml0aW5nIGEgZmlsZSB0aGF0IGlzIGxvYWRlZCBpbiBhbm90aGVyIGJ1ZmZlciBpcyBub3QgYQotIy4gKiBnb29kIGlkZWEuCi1tc2dpZCAiRTEzOTogRmlsZSBpcyBsb2FkZWQgaW4gYW5vdGhlciBidWZmZXIiCi1tc2dzdHIgIkUxMzk6IEZpbGVuIORyIGlubORzdCBpIGVuIGFubmFuIGJ1ZmZlcnQiCittc2dpZCAiU2F2ZSBBcyIKK21zZ3N0ciAiU3BhcmEgc29tIgogCiBtc2dpZCAiV3JpdGUgcGFydGlhbCBmaWxlPyIKIG1zZ3N0ciAiU2tyaXYgb2Z1bGxzdORuZGlnIGZpbD8iCkBAIC03NzAsOCArNzY0LDE2IEBACiBtc2dzdHIgIkUxNDA6IEFuduRuZCAhIGb2ciBhdHQgc2tyaXZhIG9mdWxsc3TkbmRpZyBidWZmZXJ0IgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIk92ZXJ3cml0ZSBleGlzdGluZyBmaWxlIFwiJS4qc1wiPyIKLW1zZ3N0ciAiU2tyaXYg9nZlciBiZWZpbnRsaWcgZmlsIFwiJS4qc1wiPyIKK21zZ2lkICJPdmVyd3JpdGUgZXhpc3RpbmcgZmlsZSBcIiVzXCI/IgorbXNnc3RyICJTa3JpdiD2dmVyIGJlZmludGxpZyBmaWwgXCIlc1wiPyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJTd2FwIGZpbGUgXCIlc1wiIGV4aXN0cywgb3ZlcndyaXRlIGFueXdheT8iCittc2dzdHIgIlbkeGxpbmdzZmlsIFwiJXNcIiBleGlzdGVyYXIsIHNrcml2IPZ2ZXIg5G5k5T8iCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTc2ODogU3dhcCBmaWxlIGV4aXN0czogJXMgKDpzaWxlbnQhIG92ZXJyaWRlcykiCittc2dzdHIgIkU3Njg6IFbkeGxpbmdzZmlsIGV4aXN0ZXJhcjogJXMgKDpzaWxlbnQhIHR2aW5nYXIpIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNDE6IE5vIGZpbGUgbmFtZSBmb3IgYnVmZmVyICVsZCIKQEAgLTc4MiwxMCArNzg0LDEwIEBACiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgotIidyZWFkb25seScgb3B0aW9uIGlzIHNldCBmb3IgXCIlLipzXCIuXG4iCisiJ3JlYWRvbmx5JyBvcHRpb24gaXMgc2V0IGZvciBcIiVzXCIuXG4iCiAiRG8geW91IHdpc2ggdG8gd3JpdGUgYW55d2F5PyIKIG1zZ3N0ciAiIgotIidyZWFkb25seScgZmxhZ2dhbiDkciBzYXR0IGb2ciBcIiUuKnNcIi5cbiIKKyIncmVhZG9ubHknIGZsYWdnYW4g5HIgc2F0dCBm9nIgXCIlc1wiLlxuIgogItZuc2thciBkdSBhdHQgc2tyaXZhIORuZOU/IgogCiBtc2dpZCAiRWRpdCBGaWxlIgpAQCAtODExLDEwICs4MTMsMTcgQEAKIG1zZ2lkICIoSW50ZXJydXB0ZWQpICIKIG1zZ3N0ciAiKEF2YnJ1dGVuKSAiCiAKK21zZ2lkICIxIG1hdGNoIgorbXNnc3RyICIxIHRy5GZmIgorCiBtc2dpZCAiMSBzdWJzdGl0dXRpb24iCiBtc2dzdHIgIjEgZXJz5HR0bmluZyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICIlbGQgbWF0Y2hlcyIKK21zZ3N0ciAiJWxkIHRy5GZmYXIiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIHN1YnN0aXR1dGlvbnMiCiBtc2dzdHIgIiVsZCBlcnPkdHRuaW5nYXIiCiAKQEAgLTg1MCw3ICs4NTksNyBAQAogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2NjE6IFNvcnJ5LCBubyAnJXMnIGhlbHAgZm9yICVzIgotbXNnc3RyICJFNjYxOiBUeXbkcnIsIGluZ2VuICclcycgaGrkbHAgZvZyICVzIgorbXNnc3RyICJFNjYxOiBUeXbkcnIsIGluZ2VuIFwiJXNcIi1oauRscCBm9nIgJXMiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE0OTogU29ycnksIG5vIGhlbHAgZm9yICVzIgpAQCAtODc0LDcgKzg4Myw3IEBACiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTY3MDogTWl4IG9mIGhlbHAgZmlsZSBlbmNvZGluZ3Mgd2l0aGluIGEgbGFuZ3VhZ2U6ICVzIgotbXNnc3RyICJFNjcwOiBCbGFuZG5pbmcgYXYgaGrkbHBmaWxza29kbmluZ2FyIGlub20gZXR0IHNwcuVrOiAlcyIKK21zZ3N0ciAiRTY3MDogQmxhbmRuaW5nIGF2IGhq5GxwZmlsc2tvZG5pbmcgaW5vbSBldHQgc3By5Ws6ICVzIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNTQ6IER1cGxpY2F0ZSB0YWcgXCIlc1wiIGluIGZpbGUgJXMvJXMiCkBAIC05MTgsMTAgKzkyNywxMjEgQEAKIG1zZ2lkICJbRGVsZXRlZF0iCiBtc2dzdHIgIltCb3J0dGFnZW5dIgogCittc2dpZCAiRW50ZXJpbmcgRGVidWcgbW9kZS4gIFR5cGUgXCJjb250XCIgdG8gY29udGludWUuIgorbXNnc3RyICJH5XIgaW4gaSBmZWxz9mtuaW5nc2zkZ2UuICBTa3JpdiBcImNvbnRcIiBm9nIgYXR0IGZvcnRz5HR0YS4iCisKKyMsIGMtZm9ybWF0Cittc2dpZCAibGluZSAlbGQ6ICVzIgorbXNnc3RyICJyYWQgJWxkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJjbWQ6ICVzIgorbXNnc3RyICJrb21tYW5kbzogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJlYWtwb2ludCBpbiBcIiVzJXNcIiBsaW5lICVsZCIKK21zZ3N0ciAiQnJ5dHB1bmt0IGkgXCIlcyVzXCIgcmFkICVsZCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTYxOiBCcmVha3BvaW50IG5vdCBmb3VuZDogJXMiCittc2dzdHIgIkUxNjE6IEJyeXRwdW5rdCBoaXR0YWRlcyBpbnRlOiAlcyIKKworbXNnaWQgIk5vIGJyZWFrcG9pbnRzIGRlZmluZWQiCittc2dzdHIgIkluZ2EgYnJ5dHB1bmt0ZXIgZGVmaW5pZXJhZGUiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTNkICAlcyAlcyAgbGluZSAlbGQiCittc2dzdHIgIiUzZCAgJXMgJXMgIHJhZCAlbGQiCisKK21zZ2lkICJFNzUwOiBGaXJzdCB1c2UgOnByb2ZpbGUgc3RhcnQgPGZuYW1lPiIKK21zZ3N0ciAiRTc1MDogQW525G5kIDpwcm9maWxlIHN0YXJ0IDxmbmFtbj4gZvZyc3QiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2F2ZSBjaGFuZ2VzIHRvIFwiJXNcIj8iCittc2dzdHIgIlNwYXJhIORuZHJpbmdhciB0aWxsIFwiJXNcIj8iCisKK21zZ2lkICJVbnRpdGxlZCIKK21zZ3N0ciAiTmFtbmz2cyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFMTYyOiBObyB3cml0ZSBzaW5jZSBsYXN0IGNoYW5nZSBmb3IgYnVmZmVyIFwiJXNcIiIKK21zZ3N0ciAiRTE2MjogSW5nZW4gc2tyaXZuaW5nIHNlZGFuIHNlbmFzdGUg5G5kcmluZyBm9nIgYnVmZmVydCBcIiVzXCIiCisKK21zZ2lkICJXYXJuaW5nOiBFbnRlcmVkIG90aGVyIGJ1ZmZlciB1bmV4cGVjdGVkbHkgKGNoZWNrIGF1dG9jb21tYW5kcykiCittc2dzdHIgIlZhcm5pbmc6IEdpY2sgaW4gaSBhbmRyYSBidWZmZXJ0YXIgb3bkbnRhdCAoa29udHJvbGxlcmEgYXV0b2tvbW1hbmRvbikiCisKK21zZ2lkICJFMTYzOiBUaGVyZSBpcyBvbmx5IG9uZSBmaWxlIHRvIGVkaXQiCittc2dzdHIgIkUxNjM6IERldCBmaW5ucyBiYXJhIGVuIGZpbCBhdHQgcmVkaWdlcmEiCisKK21zZ2lkICJFMTY0OiBDYW5ub3QgZ28gYmVmb3JlIGZpcnN0IGZpbGUiCittc2dzdHIgIkUxNjQ6IEthbiBpbnRlIGflIGb2cmUgZvZyc3RhIGZpbGVuIgorCittc2dpZCAiRTE2NTogQ2Fubm90IGdvIGJleW9uZCBsYXN0IGZpbGUiCittc2dzdHIgIkUxNjU6IEthbiBpbnRlIGflIGJvcnRvbSBzaXN0YSBmaWxlbiIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNjY2OiBjb21waWxlciBub3Qgc3VwcG9ydGVkOiAlcyIKK21zZ3N0ciAiRTY2Njoga29tcGlsYXRvciBzdPZkcyBpbnRlOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJTZWFyY2hpbmcgZm9yIFwiJXNcIiBpbiBcIiVzXCIiCittc2dzdHIgIlP2a2VyIGVmdGVyIFwiJXNcIiBpIFwiJXNcIiIKKworIywgYy1mb3JtYXQKK21zZ2lkICJTZWFyY2hpbmcgZm9yIFwiJXNcIiIKK21zZ3N0ciAiU/ZrZXIgZWZ0ZXIgXCIlc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vdCBmb3VuZCBpbiAncnVudGltZXBhdGgnOiBcIiVzXCIiCittc2dzdHIgImhpdHRhZGVzIGludGUgaSAncnVudGltZXBhdGgnOiBcIiVzXCIiCisKK21zZ2lkICJTb3VyY2UgVmltIHNjcmlwdCIKK21zZ3N0ciAiTORzIFZpbS1za3JpcHQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNvdXJjZSBhIGRpcmVjdG9yeTogXCIlc1wiIgorbXNnc3RyICJLYW4gaW50ZSBs5HNhIGVuIGthdGFsb2c6IFwiJXNcIiIKKworIywgYy1mb3JtYXQKK21zZ2lkICJjb3VsZCBub3Qgc291cmNlIFwiJXNcIiIKK21zZ3N0ciAia3VuZGUgaW50ZSBs5HNhIFwiJXNcIiIKKworIywgYy1mb3JtYXQKK21zZ2lkICJsaW5lICVsZDogY291bGQgbm90IHNvdXJjZSBcIiVzXCIiCittc2dzdHIgInJhZCAlbGQ6IGt1bmRlIGludGUgbORzYSBcIiVzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAic291cmNpbmcgXCIlc1wiIgorbXNnc3RyICJs5HNlciBcIiVzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAibGluZSAlbGQ6IHNvdXJjaW5nIFwiJXNcIiIKK21zZ3N0ciAicmFkICVsZDogbORzZXIgXCIlc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgImZpbmlzaGVkIHNvdXJjaW5nICVzIgorbXNnc3RyICJs5HN0ZSBrbGFydCAlcyIKKworbXNnaWQgIlcxNTogV2FybmluZzogV3JvbmcgbGluZSBzZXBhcmF0b3IsIF5NIG1heSBiZSBtaXNzaW5nIgorbXNnc3RyICJXMTU6IFZhcm5pbmc6IEZlbCByYWRhdnNraWxqYXJlLCBeTSBrYW4gc2FrbmFzIgorCittc2dpZCAiRTE2NzogOnNjcmlwdGVuY29kaW5nIHVzZWQgb3V0c2lkZSBvZiBhIHNvdXJjZWQgZmlsZSIKK21zZ3N0ciAiRTE2NzogOnNjcmlwdGVuY29kaW5nIGFuduRuZHMgdXRhbmb2ciBlbiBr9nJkIGZpbCIKKworbXNnaWQgIkUxNjg6IDpmaW5pc2ggdXNlZCBvdXRzaWRlIG9mIGEgc291cmNlZCBmaWxlIgorbXNnc3RyICJFMTY4OiA6ZmluaXNoIGFuduRuZHMgdXRhbmb2ciBlbiBr9nJkIGZpbCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJDdXJyZW50ICVzbGFuZ3VhZ2U6IFwiJXNcIiIKK21zZ3N0ciAiQWt0dWVsbHQgJXNzcHLlazogXCIlc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkUxOTc6IENhbm5vdCBzZXQgbGFuZ3VhZ2UgdG8gXCIlc1wiIgorbXNnc3RyICJFMTk3OiBLYW4gaW50ZSBz5HR0YSBzcHLlayB0aWxsIFwiJXNcIiIKKwogbXNnaWQgIkVudGVyaW5nIEV4IG1vZGUuICBUeXBlIFwidmlzdWFsXCIgdG8gZ28gdG8gTm9ybWFsIG1vZGUuIgogbXNnc3RyICJH5XIgaW4gaSBFeC1s5GdlLiAgU2tyaXYgXCJ2aXN1YWxcIiBm9nIgYXR0IGflIHRpbGwgTm9ybWFsLWzkZ2UuIgogCi0jLiBtdXN0IGJlIGF0IEVPRgogbXNnaWQgIkU1MDE6IEF0IGVuZC1vZi1maWxlIgogbXNnc3RyICJFNTAxOiBWaWQgZmlsc2x1dCIKIApAQCAtOTk4LDE4ICsxMTE4LDggQEAKIG1zZ2lkICJFMTc4OiBJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIGNvdW50IgogbXNnc3RyICJFMTc4OiBPZ2lsdGlndCBzdGFuZGFyZHbkcmRlIGb2ciBhbnRhbCIKIAotbXNnaWQgIkUxNzk6IGFyZ3VtZW50IHJlcXVpcmVkIGZvciBjb21wbGV0ZSIKLW1zZ3N0ciAiRTE3OTogYXJndW1lbnQga3LkdnMgZvZyIGtvbXBsZXR0ZXJpbmciCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTE4MDogSW52YWxpZCBjb21wbGV0ZSB2YWx1ZTogJXMiCi1tc2dzdHIgIkUxODA6IE9naWx0aWd0IGtvbXBsZXR0ZXJpbmdzduRyZGU6ICVzIgotCi1tc2dpZCAiRTQ2ODogQ29tcGxldGlvbiBhcmd1bWVudCBvbmx5IGFsbG93ZWQgZm9yIGN1c3RvbSBjb21wbGV0aW9uIgotbXNnc3RyICJFNDY4OiBLb21wbGV0dGVyaW5nc2FyZ3VtZW50IGJhcmEgdGlsbOV0ZXQgZvZyIHNwZWNpYWxrb21wbGV0dGVyaW5nIgotCi1tc2dpZCAiRTQ2NzogQ3VzdG9tIGNvbXBsZXRpb24gcmVxdWlyZXMgYSBmdW5jdGlvbiBhcmd1bWVudCIKLW1zZ3N0ciAiRTQ2NzogU3BlY2lhbGtvbXBsZXR0ZXJpbmcga3LkdmVyIGV0dCBmdW5rdGlvbnNhcmd1bWVudCIKK21zZ2lkICJFMTc5OiBhcmd1bWVudCByZXF1aXJlZCBmb3IgLWNvbXBsZXRlIgorbXNnc3RyICJFMTc5OiBhcmd1bWVudCBrcuR2cyBm9nIgLWNvbXBsZXRlIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODE6IEludmFsaWQgYXR0cmlidXRlOiAlcyIKQEAgLTEwMjYsNiArMTEzNiwxNiBAQAogbXNnc3RyICJFMTg0OiBJbmdldCBz5WRhbnQgYW525G5kYXJkZWZpbmllcmF0IGtvbW1hbmRvOiAlcyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFMTgwOiBJbnZhbGlkIGNvbXBsZXRlIHZhbHVlOiAlcyIKK21zZ3N0ciAiRTE4MDogT2dpbHRpZ3Qga29tcGxldHRlcmluZ3N25HJkZTogJXMiCisKK21zZ2lkICJFNDY4OiBDb21wbGV0aW9uIGFyZ3VtZW50IG9ubHkgYWxsb3dlZCBmb3IgY3VzdG9tIGNvbXBsZXRpb24iCittc2dzdHIgIkU0Njg6IEtvbXBsZXR0ZXJpbmdzYXJndW1lbnQgYmFyYSB0aWxs5XRldCBm9nIgc3BlY2lhbGtvbXBsZXR0ZXJpbmciCisKK21zZ2lkICJFNDY3OiBDdXN0b20gY29tcGxldGlvbiByZXF1aXJlcyBhIGZ1bmN0aW9uIGFyZ3VtZW50IgorbXNnc3RyICJFNDY3OiBTcGVjaWFsa29tcGxldHRlcmluZyBrcuR2ZXIgZXR0IGZ1bmt0aW9uc2FyZ3VtZW50IgorCisjLCBjLWZvcm1hdAogbXNnaWQgIkUxODU6IENhbm5vdCBmaW5kIGNvbG9yIHNjaGVtZSAlcyIKIG1zZ3N0ciAiRTE4NTogS2FuIGludGUgaGl0dGEgZuRyZ3NjaGVtYSAlcyIKIApAQCAtMTA0MSw2ICsxMTYxLDEwIEBACiBtc2dpZCAiQXBwZW5kIEZpbGUiCiBtc2dzdHIgIkzkZ2cgdGlsbCBmaWwiCiAKK21zZ2lkICJFNzQ3OiBDYW5ub3QgY2hhbmdlIGRpcmVjdG9yeSwgYnVmZmVyIGlzIG1vZGlmZWQgKGFkZCAhIHRvIG92ZXJyaWRlKSIKK21zZ3N0ciAiIgorIkU3NDc6IEthbiBpbnRlIORuZHJhIGthdGFsb2csIGJ1ZmZlcnQg5HIg5G5kcmFkIChs5GdnIHRpbGwgISBm9nIgYXR0IHR2aW5nYSkiCisKIG1zZ2lkICJFMTg2OiBObyBwcmV2aW91cyBkaXJlY3RvcnkiCiBtc2dzdHIgIkUxODY6IEluZ2VuIHRpZGlnYXJlIGthdGFsb2ciCiAKQEAgLTEwNzQsNiArMTE5OCwxMCBAQAogbXNnc3RyICJTcGFyYSBrb25maWd1cmF0aW9uIgogCiAjLCBjLWZvcm1hdAorbXNnaWQgIkU3Mzk6IENhbm5vdCBjcmVhdGUgZGlyZWN0b3J5OiAlcyIKK21zZ3N0ciAiRTczOTogS2FuIGludGUgc2thcGEga2F0YWxvZzogJXMiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4OTogXCIlc1wiIGV4aXN0cyAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFMTg5OiBcIiVzXCIgZXhpc3RlcmFyIChs5GdnIHRpbGwgISBm9nIgYXR0IHR2aW5nYSkiCiAKQEAgLTExODUsMTQgKzEzMTMsMjAgQEAKIG1zZ2lkICJFNTg0OiA6ZWxzZWlmIGFmdGVyIDplbHNlIgogbXNnc3RyICJFNTg0OiA6ZWxzZWlmIGVmdGVyIDplbHNlIgogCi1tc2dpZCAiRTU4NTogOndoaWxlIG5lc3RpbmcgdG9vIGRlZXAiCi1tc2dzdHIgIkU1ODU6IDp3aGlsZSBu5HN0bGFkIGb2ciBkanVwdCIKK21zZ2lkICJFNTg1OiA6d2hpbGUvOmZvciBuZXN0aW5nIHRvbyBkZWVwIgorbXNnc3RyICJFNTg1OiA6d2hpbGUvOmZvciBu5HN0bGFkIGb2ciBkanVwdCIKIAotbXNnaWQgIkU1ODY6IDpjb250aW51ZSB3aXRob3V0IDp3aGlsZSIKLW1zZ3N0ciAiRTU4NjogOmNvbnRpbnVlIHV0YW4gOndoaWxlIgorbXNnaWQgIkU1ODY6IDpjb250aW51ZSB3aXRob3V0IDp3aGlsZSBvciA6Zm9yIgorbXNnc3RyICJFNTg2OiA6Y29udGludWUgdXRhbiA6d2hpbGUgZWxsZXIgOmZvciIKIAotbXNnaWQgIkU1ODc6IDpicmVhayB3aXRob3V0IDp3aGlsZSIKLW1zZ3N0ciAiRTU4NzogOmJyZWFrIHV0YW4gOndoaWxlIgorbXNnaWQgIkU1ODc6IDpicmVhayB3aXRob3V0IDp3aGlsZSBvciA6Zm9yIgorbXNnc3RyICJFNTg3OiA6YnJlYWsgdXRhbiA6d2hpbGUgZWxsZXIgOmZvciIKKworbXNnaWQgIkU3MzI6IFVzaW5nIDplbmRmb3Igd2l0aCA6d2hpbGUiCittc2dzdHIgIkU3MzI6IEFuduRuZGVyIDplbmRmb3IgbWVkIDp3aGlsZSIKKworbXNnaWQgIkU3MzM6IFVzaW5nIDplbmR3aGlsZSB3aXRoIDpmb3IiCittc2dzdHIgIkU3MzM6IEFuduRuZGVyIDplbmR3aGlsZSBtZWQgOmZvciIKIAogbXNnaWQgIkU2MDE6IDp0cnkgbmVzdGluZyB0b28gZGVlcCIKIG1zZ3N0ciAiRTYwMTogOnRyeSBu5HN0bGFkIGb2ciBkanVwdCIKQEAgLTEyNjUsNiArMTM5OSw5IEBACiBtc2dpZCAiW05ldyBGaWxlXSIKIG1zZ3N0ciAiW055IGZpbF0iCiAKK21zZ2lkICJbRmlsZSB0b28gYmlnXSIKK21zZ3N0ciAiW0ZpbCBm9nIgc3Rvcl0iCisKIG1zZ2lkICJbUGVybWlzc2lvbiBEZW5pZWRdIgogbXNnc3RyICJbVGlsbOV0ZWxzZSBuZWthc10iCiAKQEAgLTEzMzMsNiArMTQ3MCw5IEBACiBtc2dpZCAiY2FuJ3QgcmVhZCBvdXRwdXQgb2YgJ2NoYXJjb252ZXJ0JyIKIG1zZ3N0ciAia2FuIGludGUgbORzYSB1dGRhdGEgYXYgJ2NoYXJjb252ZXJ0JyIKIAorbXNnaWQgIkU2NzY6IE5vIG1hdGNoaW5nIGF1dG9jb21tYW5kcyBmb3IgYWN3cml0ZSBidWZmZXIiCittc2dzdHIgIkU2NzY6IEluZ2EgbWF0Y2hhbmRlIGF1dG9rb21tYW5kb24gZvZyIGFjd3JpdGUgYnVmZmVydCIKKwogbXNnaWQgIkUyMDM6IEF1dG9jb21tYW5kcyBkZWxldGVkIG9yIHVubG9hZGVkIGJ1ZmZlciB0byBiZSB3cml0dGVuIgogbXNnc3RyICIiCiAiRTIwMzogQXV0b2tvbW1hbmRvbiB0b2cgYm9ydCBlbGxlciBsYWRkYWRlIHVyIGJ1ZmZlcnQgc29tIHNrdWxsZSBza3JpdmFzIgpAQCAtMTM5MCw4ICsxNTMwLDkgQEAKIG1zZ2lkICJFNTEyOiBDbG9zZSBmYWlsZWQiCiBtc2dzdHIgIkU1MTI6IFN05G5nbmluZyBtaXNzbHlja2FkZXMiCiAKLW1zZ2lkICJFNTEzOiB3cml0ZSBlcnJvciwgY29udmVyc2lvbiBmYWlsZWQiCi1tc2dzdHIgIkU1MTM6IHNrcml2ZmVsLCBrb252ZXJ0ZXJpbmcgbWlzc2x5Y2thZGVzIgorbXNnaWQgIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCAobWFrZSAnZmVuYycgZW1wdHkgdG8gb3ZlcnJpZGUpIgorbXNnc3RyICIiCisiRTUxMzogc2tyaXZmZWwsIGtvbnZlcnRlcmluZyBtaXNzbHlja2FkZXMgKGf2ciAnZmVuYycgdG9tIGb2ciBhdHQgdHZpbmdhKSIKIAogbXNnaWQgIkU1MTQ6IHdyaXRlIGVycm9yIChmaWxlIHN5c3RlbSBmdWxsPykiCiBtc2dzdHIgIkU1MTQ6IHNrcml2ZmVsIChmaWxzeXN0ZW0gZnVsbHQ/KSIKQEAgLTE0OTksOCArMTY0MCw4IEBACiBtc2dzdHIgIkUyNDY6IEZpbGVDaGFuZ2VkU2hlbGwtYXV0b2tvbW1hbmRvdCB0b2cgYm9ydCBidWZmZXJ0IgogCiAjLCBjLWZvcm1hdAotbXNnaWQgIkUyMTE6IFdhcm5pbmc6IEZpbGUgXCIlc1wiIG5vIGxvbmdlciBhdmFpbGFibGUiCi1tc2dzdHIgIkUyMTE6IFZhcm5pbmc6IEZpbGVuIFwiJXNcIiDkciBpbnRlIGzkbmdyZSB0aWxsZ+RuZ2xpZyIKK21zZ2lkICJFMjExOiBGaWxlIFwiJXNcIiBubyBsb25nZXIgYXZhaWxhYmxlIgorbXNnc3RyICJFMjExOiBGaWxlbiBcIiVzXCIg5HIgaW50ZSBs5G5ncmUgdGlsbGfkbmdsaWciCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgpAQCAtMTUwOSwyMyArMTY1MCwyOSBAQAogbXNnc3RyICIiCiAiVzEyOiBWYXJuaW5nOiBGaWxlbiBcIiVzXCIgaGFyIORuZHJhdHMgb2NoIGJ1ZmZlcnRlbiDkbmRyYWRlcyBpIFZpbSBvY2tz5SIKIAorbXNnaWQgIlNlZSBcIjpoZWxwIFcxMlwiIGZvciBtb3JlIGluZm8uIgorbXNnc3RyICJTZSBcIjpoZWxwIFcxMlwiIGb2ciBtZXIgaW5mby4iCisKICMsIGMtZm9ybWF0CiBtc2dpZCAiVzExOiBXYXJuaW5nOiBGaWxlIFwiJXNcIiBoYXMgY2hhbmdlZCBzaW5jZSBlZGl0aW5nIHN0YXJ0ZWQiCiBtc2dzdHIgIlcxMTogVmFybmluZzogRmlsZW4gXCIlc1wiIGhhciDkbmRyYXRzIHNlZGFuIHJlZGlnZXJpbmdlbiBi9nJqYWRlIgogCittc2dpZCAiU2VlIFwiOmhlbHAgVzExXCIgZm9yIG1vcmUgaW5mby4iCittc2dzdHIgIlNlIFwiOmhlbHAgVzExXCIgZvZyIG1lciBpbmZvLiIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJXMTY6IFdhcm5pbmc6IE1vZGUgb2YgZmlsZSBcIiVzXCIgaGFzIGNoYW5nZWQgc2luY2UgZWRpdGluZyBzdGFydGVkIgogbXNnc3RyICIiCiAiVzE2OiBWYXJuaW5nOiBS5HR0aWdoZXRlcm5hIHDlIGZpbGVuIFwiJXNcIiBoYXIg5G5kcmF0cyBzZWRhbiByZWRpZ2VyaW5nZW4gIgogImL2cmphZGUiCiAKK21zZ2lkICJTZWUgXCI6aGVscCBXMTZcIiBmb3IgbW9yZSBpbmZvLiIKK21zZ3N0ciAiU2UgXCI6aGVscCBXMTZcIiBm9nIgbWVyIGluZm8uIgorCiAjLCBjLWZvcm1hdAogbXNnaWQgIlcxMzogV2FybmluZzogRmlsZSBcIiVzXCIgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBlZGl0aW5nIHN0YXJ0ZWQiCiBtc2dzdHIgIlcxMzogVmFybmluZzogRmlsZW4gXCIlc1wiIGhhciBza2FwYXRzIGVmdGVyIHJlZGlnZXJpbmdlbiBi9nJqYWRlIgogCi1tc2dpZCAiU2VlIFwiOmhlbHAgVzExXCIgZm9yIG1vcmUgaW5mby4iCi1tc2dzdHIgIlNlIFwiOmhlbHAgVzExXCIgZvZyIG1lciBpbmZvLiIKLQogbXNnaWQgIldhcm5pbmciCiBtc2dzdHIgIlZhcm5pbmciCiAKQEAgLTE1NDcsNiArMTY5NCwxMCBAQAogbXNnaWQgIi0tRGVsZXRlZC0tIgogbXNnc3RyICItLUJvcnR0YWdlbi0tIgogCisjLCBjLWZvcm1hdAorbXNnaWQgImF1dG8tcmVtb3ZpbmcgYXV0b2NvbW1hbmQ6ICVzIDxidWZmZXI9JWQ+IgorbXNnc3RyICJ0YXIgYm9ydCBhdXRva29tbWFuZG8gYXV0b21hdGlza3Q6ICVzIDxidWZmZXJ0PSVkPiIKKwogIy4gdGhlIGdyb3VwIGRvZXNuJ3QgZXhpc3QKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM2NzogTm8gc3VjaCBncm91cDogXCIlc1wiIgpAQCAtMTU3Miw2ICsxNzIzLDEwIEBACiAiXG4iCiAiLS0tIEF1dG9rb21tYW5kb24gLS0tIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2ODA6IDxidWZmZXI9JWQ+OiBpbnZhbGlkIGJ1ZmZlciBudW1iZXIgIgorbXNnc3RyICJFNjgwOiA8YnVmZmVydD0lZD46IG9naWx0aWd0IGJ1ZmZlcnRudW1tZXIgIgorCiBtc2dpZCAiRTIxNzogQ2FuJ3QgZXhlY3V0ZSBhdXRvY29tbWFuZHMgZm9yIEFMTCBldmVudHMiCiBtc2dzdHIgIkUyMTc6IEthbiBpbnRlIGv2cmEgYXV0b2tvbW1hbmRvbiBm9nIgQUxMQSBo5G5kZWxzZXIiCiAKQEAgLTE1ODksNyArMTc0NCw2IEBACiBtc2dpZCAiRXhlY3V0aW5nICVzIgogbXNnc3RyICJL9nIgJXMiCiAKLSMuIGFsd2F5cyBzY3JvbGwgdXAsIGRvbid0IG92ZXJ3cml0ZQogIywgYy1mb3JtYXQKIG1zZ2lkICJhdXRvY29tbWFuZCAlcyIKIG1zZ3N0ciAiYXV0b2tvbW1hbmRvICVzIgpAQCAtMTYwOSw2ICsxNzYzLDEwIEBACiBtc2dpZCAiRTM1MTogQ2Fubm90IGRlbGV0ZSBmb2xkIHdpdGggY3VycmVudCAnZm9sZG1ldGhvZCciCiBtc2dzdHIgIkUzNTE6IEthbiBpbnRlIHRhIGJvcnQgdmVjayBtZWQgbnV2YXJhbmRlICdmb2xkbWV0aG9kJyIKIAorIywgYy1mb3JtYXQKK21zZ2lkICIrLS0lM2xkIGxpbmVzIGZvbGRlZCAiCittc2dzdHIgIistLSUzbGQgcmFkZXIgdmlrdGEgIgorCiBtc2dpZCAiRTIyMjogQWRkIHRvIHJlYWQgYnVmZmVyIgogbXNnc3RyICJFMjIyOiBM5GdnIHRpbGwgaSBs5HNidWZmZXJ0IgogCkBAIC0xNjQwLDYgKzE3OTgsMjkgQEAKIG1zZ2lkICJFMjI4OiBtYWtlbWFwOiBJbGxlZ2FsIG1vZGUiCiBtc2dzdHIgIkUyMjg6IG1ha2VtYXA6IE90aWxs5XRldCBs5GdlIgogCittc2dpZCAiRTIyOTogQ2Fubm90IHN0YXJ0IHRoZSBHVUkiCittc2dzdHIgIkUyMjk6IEthbiBpbnRlIHN0YXJ0YSBHVUkiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTIzMDogQ2Fubm90IHJlYWQgZnJvbSBcIiVzXCIiCittc2dzdHIgIkUyMzA6IEthbiBpbnRlIGzkc2EgZnLlbiBcIiVzXCIiCisKK21zZ2lkICJFNjY1OiBDYW5ub3Qgc3RhcnQgR1VJLCBubyB2YWxpZCBmb250IGZvdW5kIgorbXNnc3RyICJFNjY1OiBLYW4gaW50ZSBzdGFydGEgR1VJLCBpbmdlbiBnaWx0aWcgZm9udCBoaXR0YWQiCisKK21zZ2lkICJFMjMxOiAnZ3VpZm9udHdpZGUnIGludmFsaWQiCittc2dzdHIgIkUyMzE6ICdndWlmb250d2lkZScgb2dpbHRpZyIKKworbXNnaWQgIkU1OTk6IFZhbHVlIG9mICdpbWFjdGl2YXRla2V5JyBpcyBpbnZhbGlkIgorbXNnc3RyICJFNTk5OiBW5HJkZXQgYXYgJ2ltYWN0aXZhdGVrZXknIORyIG9naWx0aWd0IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkUyNTQ6IENhbm5vdCBhbGxvY2F0ZSBjb2xvciAlcyIKK21zZ3N0ciAiRTI1NDogS2FuIGludGUgYWxsb2tlcmEgZuRyZyAlcyIKKworbXNnaWQgIk5vIG1hdGNoIGF0IGN1cnNvciwgZmluZGluZyBuZXh0IgorbXNnc3RyICJJbmdlbiBtYXRjaG5pbmcgdmlkIG1hcmv2ciwgc/ZrZXIgbuRzdGEiCisKIG1zZ2lkICI8Y2Fubm90IG9wZW4+ICIKIG1zZ3N0ciAiPGthbiBpbnRlIPZwcG5hPiAiCiAKQEAgLTE2NjIsMzUgKzE4NDMsMTUgQEAKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkF2YnJ5dCIKIAotbXNnaWQgIlZpbSBkaWFsb2ciCi1tc2dzdHIgIlZpbS1kaWFsb2ciCi0KIG1zZ2lkICJTY3JvbGxiYXIgV2lkZ2V0OiBDb3VsZCBub3QgZ2V0IGdlb21ldHJ5IG9mIHRodW1iIHBpeG1hcC4iCiBtc2dzdHIgIlJ1bGxuaW5nc2xpc3Q6IEt1bmRlIGludGUgaORtdGEgZ2VvbWV0cmluIHDlIG1pbmlhdHlyYmlsZC4iCiAKK21zZ2lkICJWaW0gZGlhbG9nIgorbXNnc3RyICJWaW0tZGlhbG9nIgorCiBtc2dpZCAiRTIzMjogQ2Fubm90IGNyZWF0ZSBCYWxsb29uRXZhbCB3aXRoIGJvdGggbWVzc2FnZSBhbmQgY2FsbGJhY2siCiBtc2dzdHIgIkUyMzI6IEthbiBpbnRlIHNrYXBhIEJhbGxvb25FdmFsIG1lZCBi5WRlIG1lZGRlbGFuZGUgb2NoIOV0ZXJrYWxsbmluZyIKIAotbXNnaWQgIkUyMjk6IENhbm5vdCBzdGFydCB0aGUgR1VJIgotbXNnc3RyICJFMjI5OiBLYW4gaW50ZSBzdGFydGEgR1VJIgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkUyMzA6IENhbm5vdCByZWFkIGZyb20gXCIlc1wiIgotbXNnc3RyICJFMjMwOiBLYW4gaW50ZSBs5HNhIGZy5W4gXCIlc1wiIgotCi1tc2dpZCAiRTY2NTogQ2Fubm90IHN0YXJ0IEdVSSwgbm8gdmFsaWQgZm9udCBmb3VuZCIKLW1zZ3N0ciAiRTY2NTogS2FuIGludGUgc3RhcnRhIEdVSSwgaW5nZW4gZ2lsdGlnIGZvbnQgaGl0dGFkZXMiCi0KLW1zZ2lkICJFMjMxOiAnZ3VpZm9udHdpZGUnIGludmFsaWQiCi1tc2dzdHIgIkUyMzE6ICdndWlmb250d2lkZScgb2dpbHRpZyIKLQotbXNnaWQgIkU1OTk6IFZhbHVlIG9mICdpbWFjdGl2YXRla2V5JyBpcyBpbnZhbGlkIgotbXNnc3RyICJFNTk5OiBW5HJkZXQgYXYgJ2ltYWN0aXZhdGVrZXknIORyIG9naWx0aWd0IgotCi0jLCBjLWZvcm1hdAotbXNnaWQgIkUyNTQ6IENhbm5vdCBhbGxvY2F0ZSBjb2xvciAlcyIKLW1zZ3N0ciAiRTI1NDogS2FuIGludGUgYWxsb2tlcmEgZuRyZyAlcyIKLQogbXNnaWQgIlZpbSBkaWFsb2cuLi4iCiBtc2dzdHIgIlZpbS1kaWFsb2cuLi4iCiAKQEAgLTE3NTcsMjMgKzE5MTgsNDEgQEAKIG1zZ2lkICJVc2VkIENVVF9CVUZGRVIwIGluc3RlYWQgb2YgZW1wdHkgc2VsZWN0aW9uIgogbXNnc3RyICJBbnbkbmQgQ1VUX0JVRkZFUjAgaXN05GxsZXQgZvZyIHRvbXQgdmFsIgogCi1tc2dpZCAiRmlsdGVyIgotbXNnc3RyICJGaWx0ZXIiCittc2dpZCAiJkZpbHRlciIKK21zZ3N0ciAiJkZpbHRlciIKKworbXNnaWQgIiZDYW5jZWwiCittc2dzdHIgIiZBdmJyeXQiCiAKIG1zZ2lkICJEaXJlY3RvcmllcyIKIG1zZ3N0ciAiS2F0YWxvZ2VyIgogCi1tc2dpZCAiSGVscCIKLW1zZ3N0ciAiSGrkbHAiCittc2dpZCAiRmlsdGVyIgorbXNnc3RyICJGaWx0ZXIiCisKK21zZ2lkICImSGVscCIKK21zZ3N0ciAiJkhq5GxwIgogCiBtc2dpZCAiRmlsZXMiCiBtc2dzdHIgIkZpbGVyIgogCittc2dpZCAiJk9LIgorbXNnc3RyICImT0siCisKIG1zZ2lkICJTZWxlY3Rpb24iCiBtc2dzdHIgIlZhbCIKIAotbXNnaWQgIlVuZG8iCi1tc2dzdHIgIsVuZ3JhIgorbXNnaWQgIkZpbmQgJk5leHQiCittc2dzdHIgIkhpdHRhICZu5HN0YSIKKworbXNnaWQgIiZSZXBsYWNlIgorbXNnc3RyICImRXJz5HR0IgorCittc2dpZCAiUmVwbGFjZSAmQWxsIgorbXNnc3RyICJFcnPkdHQgJmFsbGEiCisKK21zZ2lkICImVW5kbyIKK21zZ3N0ciAiJsVuZ3JhIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MTA6IENhbid0IGxvYWQgWmFwIGZvbnQgJyVzJyIKQEAgLTE3OTksNyArMTk3OCw3IEBACiBtc2dzdHIgIkUyNDM6IEFyZ3VtZW50IHN09mRzIGludGU6IFwiLSVzXCI7IEFuduRuZHMgT0xFLXZlcnNpb25lbi4iCiAKIG1zZ2lkICJFNjcyOiBVbmFibGUgdG8gb3BlbiB3aW5kb3cgaW5zaWRlIE1ESSBhcHBsaWNhdGlvbiIKLW1zZ3N0ciAiRTY3MjogS3VuZGUgaW50ZSD2cHBuYSBm9m5zdGVyIGlubmUgaSBNREktYXBwbGlrYXRpb24iCittc2dzdHIgIkU2NzI6IEt1bmRlIGludGUg9nBwbmEgZvZuc3RlciBpbnV0aSBNREktYXBwbGlrYXRpb24iCiAKIG1zZ2lkICJGaW5kIHN0cmluZyAodXNlICdcXFxcJyB0byBmaW5kICBhICdcXCcpIgogbXNnc3RyICJT9msgc3Ry5G5nIChhbnbkbmQgJ1xcXFwnIGb2ciBhdHQgaGl0dGEgJ1xcJykiCkBAIC0xODA3LDYgKzE5ODYsMTQgQEAKIG1zZ2lkICJGaW5kICYgUmVwbGFjZSAodXNlICdcXFxcJyB0byBmaW5kICBhICdcXCcpIgogbXNnc3RyICJT9msgJiBlcnPkdHQgKGFuduRuZCAnXFxcXCcgZvZyIGF0dCBoaXR0YSAnXFwnKSIKIAorIy4gV2UgZmFrZSB0aGlzOiBVc2UgYSBmaWx0ZXIgdGhhdCBkb2Vzbid0IHNlbGVjdCBhbnl0aGluZyBhbmQgYSBkZWZhdWx0CisjLiAqIGZpbGUgbmFtZSB0aGF0IHdvbid0IGJlIHVzZWQuCittc2dpZCAiTm90IFVzZWQiCittc2dzdHIgIkludGUgYW525G5kIgorCittc2dpZCAiRGlyZWN0b3J5XHQqLm5vdGhpbmdcbiIKK21zZ3N0ciAiS2F0YWxvZ1x0Ki5ub3RoaW5nXG4iCisKIG1zZ2lkICJWaW0gRTQ1ODogQ2Fubm90IGFsbG9jYXRlIGNvbG9ybWFwIGVudHJ5LCBzb21lIGNvbG9ycyBtYXkgYmUgaW5jb3JyZWN0IgogbXNnc3RyICIiCiAiVmltIEU0NTg6IEthbiBpbnRlIGFsbG9rZXJhIHBvc3QgaSBm5HJna2FydGEsIG7lZ3JhIGbkcmdlciBrYW4gYmxpIGZlbGFrdGlnYSIKQEAgLTE4NTIsOSArMjAzOSwxMzMgQEAKICJUeXBzbml0dDEgYnJlZGQ6ICVsZFxuIgogIlxuIgogCittc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmljYXRpb24iCittc2dzdHIgIk9naWx0aWcgdHlwc25pdHRzdXBwc+R0dG5pbmciCisKK21zZ2lkICImRGlzbWlzcyIKK21zZ3N0ciAiJkb2cmthc3RhIgorCittc2dpZCAibm8gc3BlY2lmaWMgbWF0Y2giCittc2dzdHIgImluZ2VuIHNwZWNpZmlrIG1hdGNobmluZyIKKworbXNnaWQgIlZpbSAtIEZvbnQgU2VsZWN0b3IiCittc2dzdHIgIlZpbSAtIFR5cHNuaXR0c3bkbGphcmUiCisKK21zZ2lkICJOYW1lOiIKK21zZ3N0ciAiTmFtbjoiCisKKyMuIGNyZWF0ZSB0b2dnbGUgYnV0dG9uCittc2dpZCAiU2hvdyBzaXplIGluIFBvaW50cyIKK21zZ3N0ciAiVmlzYSBzdG9ybGVrIGkgcHVua3RlciIKKworbXNnaWQgIkVuY29kaW5nOiIKK21zZ3N0ciAiVGVja2Vua29kbmluZzoiCisKK21zZ2lkICJGb250OiIKK21zZ3N0ciAiVHlwc25pdHQ6IgorCittc2dpZCAiU3R5bGU6IgorbXNnc3RyICJTdGlsOiIKKworbXNnaWQgIlNpemU6IgorbXNnc3RyICJTdG9ybGVrOiIKKwogbXNnaWQgIkUyNTY6IEhhbmd1bCBhdXRvbWF0YSBFUlJPUiIKIG1zZ3N0ciAiRTI1NjogSGFuZ3VsIGF1dG9tYXRhIEZFTCIKIAorbXNnaWQgIkU1NTA6IE1pc3NpbmcgY29sb24iCittc2dzdHIgIkU1NTA6IFNha25hciBrb2xvbiIKKworbXNnaWQgIkU1NTE6IElsbGVnYWwgY29tcG9uZW50IgorbXNnc3RyICJFNTUxOiBPdGlsbOV0ZW4ga29tcG9uZW50IgorCittc2dpZCAiRTU1MjogZGlnaXQgZXhwZWN0ZWQiCittc2dzdHIgIkU1NTI6IHNpZmZyYSBm9nJ25G50YWRlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJQYWdlICVkIgorbXNnc3RyICJTaWRhICVkIgorCittc2dpZCAiTm8gdGV4dCB0byBiZSBwcmludGVkIgorbXNnc3RyICJJbmdlbiB0ZXh0IGF0dCBza3JpdmEgdXQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJpbnRpbmcgcGFnZSAlZCAoJWQlJSkiCittc2dzdHIgIlNrcml2ZXIgdXQgc2lkYSAlZCAoJWQlJSkiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiIENvcHkgJWQgb2YgJWQiCittc2dzdHIgIiBLb3BpYSAlZCBhdiAlZCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJQcmludGVkOiAlcyIKK21zZ3N0ciAiU2tyZXYgdXQ6ICVzIgorCittc2dpZCAiUHJpbnRpbmcgYWJvcnRlZCIKK21zZ3N0ciAiVXRza3JpZnQgYXZicnV0ZW4iCisKK21zZ2lkICJFNDU1OiBFcnJvciB3cml0aW5nIHRvIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCittc2dzdHIgIkU0NTU6IEZlbCB2aWQgc2tyaXZuaW5nIGF2IHV0ZGF0YSB0aWxsIFBvc3RTY3JpcHQtZmlsIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2MjQ6IENhbid0IG9wZW4gZmlsZSBcIiVzXCIiCittc2dzdHIgIkU2MjQ6IEthbiBpbnRlIPZwcG5hIGZpbCBcIiVzXCIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTQ1NzogQ2FuJ3QgcmVhZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlc1wiIgorbXNnc3RyICJFNDU3OiBLYW4gaW50ZSBs5HNhIFBvc3RTY3JpcHQtcmVzdXJzZmlsIFwiJXNcIiIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNjE4OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUiCittc2dzdHIgIkU2MTg6IGZpbCBcIiVzXCIg5HIgaW50ZSBlbiBQb3N0U2NyaXB0LXJlc3Vyc2ZpbCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNjE5OiBmaWxlIFwiJXNcIiBpcyBub3QgYSBzdXBwb3J0ZWQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgorbXNnc3RyICJFNjE5OiBmaWwgXCIlc1wiIORyIGludGUgZW4gUG9zdFNjcmlwdC1yZXN1cnNmaWwgc29tIHN09mRzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2MjE6IFwiJXNcIiByZXNvdXJjZSBmaWxlIGhhcyB3cm9uZyB2ZXJzaW9uIgorbXNnc3RyICJFNjIxOiBcIiVzXCIta+RsbGZpbGVuIGhhciBmZWwgdmVyc2lvbiIKKworbXNnaWQgIkU2NzM6IEluY29tcGF0aWJsZSBtdWx0aS1ieXRlIGVuY29kaW5nIGFuZCBjaGFyYWN0ZXIgc2V0LiIKK21zZ3N0ciAiRTY3MzogSW5rb21wYXRpYmVsIGZsZXJiaXRza29kbmluZyBvY2ggdGVja2VudXBwc+R0dG5pbmcuIgorCittc2dpZCAiRTY3NDogcHJpbnRtYmNoYXJzZXQgY2Fubm90IGJlIGVtcHR5IHdpdGggbXVsdGktYnl0ZSBlbmNvZGluZy4iCittc2dzdHIgIkU2NzQ6IHByaW50bWJjaGFyc2V0IGthbiBpbnRlIHZhcmEgdG9tIG1lZCBmbGVyYml0c2tvZG5pbmcuIgorCittc2dpZCAiRTY3NTogTm8gZGVmYXVsdCBmb250IHNwZWNpZmllZCBmb3IgbXVsdGktYnl0ZSBwcmludGluZy4iCittc2dzdHIgIkU2NzU6IEluZ2VuIHN0YW5kYXJkZm9udCBhbmdpdmVuIGb2ciBmbGVyYml0c3V0c2tyaWZ0ZXIuIgorCittc2dpZCAiRTMyNDogQ2FuJ3Qgb3BlbiBQb3N0U2NyaXB0IG91dHB1dCBmaWxlIgorbXNnc3RyICJFMzI0OiBLYW4gaW50ZSD2cHBuYSBQb3N0U2NyaXB0LXV0ZmlsIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU0NTY6IENhbid0IG9wZW4gZmlsZSBcIiVzXCIiCittc2dzdHIgIkU0NTY6IEthbiBpbnRlIPZwcG5hIGZpbCBcIiVzXCIiCisKK21zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcInByb2xvZy5wc1wiIgorbXNnc3RyICJFNDU2OiBLYW4gaW50ZSBoaXR0YSBQb3N0U2NyaXB0LWvkbGxmaWxlbiBcInByb2xvZy5wc1wiIgorCittc2dpZCAiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCJjaWRmb250LnBzXCIiCittc2dzdHIgIkU0NTY6IEthbiBpbnRlIGhpdHRhIFBvc3RTY3JpcHQta+RsbGZpbGVuIFwiY2lkZm9udC5wc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU0NTY6IENhbid0IGZpbmQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIFwiJXMucHNcIiIKK21zZ3N0ciAiRTQ1NjogS2FuIGludGUgaGl0dGEgUG9zdFNjcmlwdC1r5GxsZmlsZW4gXCIlcy5wc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU2MjA6IFVuYWJsZSB0byBjb252ZXJ0IHRvIHByaW50IGVuY29kaW5nIFwiJXNcIiIKK21zZ3N0ciAiRTYyMDogS3VuZGUgaW50ZSBrb252ZXJ0ZXJhIGZy5W4gdXRza3JpZnRrb2RuaW5nIFwiJXNcIiIKKworbXNnaWQgIlNlbmRpbmcgdG8gcHJpbnRlci4uLiIKK21zZ3N0ciAiU2tpY2thciB0aWxsIHNrcml2YXJlLi4uIgorCittc2dpZCAiRTM2NTogRmFpbGVkIHRvIHByaW50IFBvc3RTY3JpcHQgZmlsZSIKK21zZ3N0ciAiRTM2NTogTWlzc2x5Y2thZGVzIG1lZCBhdHQgc2tyaXZhIHV0IFBvc3RTY3JpcHQtZmlsIgorCittc2dpZCAiUHJpbnQgam9iIHNlbnQuIgorbXNnc3RyICJTa3JpdmFyam9iYiBza2lja2F0LiIKKwogbXNnaWQgIkFkZCBhIG5ldyBkYXRhYmFzZSIKIG1zZ3N0ciAiTORnZyB0aWxsIGVuIG55IGRhdGFiYXMiCiAKQEAgLTE5OTcsNiArMjMwOCw2NCBAQAogbXNnc3RyICIgIyBwaWQgICAgZGF0YWJhc25hbW4gICAgICAgICAgICAgICAgICAgICAgICBm9nJzdCBpIHP2a3bkZ1xuIgogCiBtc2dpZCAiIgorIj8/PzogU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZCwgdGhlIE16U2NoZW1lIGxpYnJhcnkgY291bGQgbm90IGJlICIKKyJsb2FkZWQuIgorbXNnc3RyICIiCisiPz8/OiBUeXbkcnIsIGRldCBo5HIga29tbWFuZG90IORyIGluYWt0aXZlcmF0OiBNelNjaGVtZS1iaWJsaW90ZWtldCBrdW5kZSAiCisiaW50ZSBs5HNhcyBpbi4iCisKK21zZ2lkICJpbnZhbGlkIGV4cHJlc3Npb24iCittc2dzdHIgIm9naWx0aWd0IHV0dHJ5Y2siCisKK21zZ2lkICJleHByZXNzaW9ucyBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUiCittc2dzdHIgInV0dHJ5Y2sgaW5ha3RpdmVyYXQgdmlkIGtvbXBpbGVyaW5nIgorCittc2dpZCAiaGlkZGVuIG9wdGlvbiIKK21zZ3N0ciAiZ/ZtZCBmbGFnZ2EiCisKK21zZ2lkICJ1bmtub3duIG9wdGlvbiIKK21zZ3N0ciAib2vkbmQgZmxhZ2dhIgorCittc2dpZCAid2luZG93IGluZGV4IGlzIG91dCBvZiByYW5nZSIKK21zZ3N0ciAiZvZuc3RlcmluZGV4IORyIHV0YW5m9nIgb21y5WRlIgorCittc2dpZCAiY291bGRuJ3Qgb3BlbiBidWZmZXIiCittc2dzdHIgImt1bmRlIGludGUg9nBwbmEgYnVmZmVydCIKKworbXNnaWQgImNhbm5vdCBzYXZlIHVuZG8gaW5mb3JtYXRpb24iCittc2dzdHIgImthbiBpbnRlIHNwYXJhIOVuZ3JhLWluZm9ybWF0aW9uIgorCittc2dpZCAiY2Fubm90IGRlbGV0ZSBsaW5lIgorbXNnc3RyICJrYW4gaW50ZSB0YSBib3J0IHJhZCIKKworbXNnaWQgImNhbm5vdCByZXBsYWNlIGxpbmUiCittc2dzdHIgImthbiBpbnRlIGVyc+R0dGEgcmFkIgorCittc2dpZCAiY2Fubm90IGluc2VydCBsaW5lIgorbXNnc3RyICJrYW4gaW50ZSBpbmZvZ2EgcmFkIgorCittc2dpZCAic3RyaW5nIGNhbm5vdCBjb250YWluIG5ld2xpbmVzIgorbXNnc3RyICJzdHLkbmcga2FuIGludGUgaW5uZWjlbGxhIG55cmFkZXIiCisKK21zZ2lkICJWaW0gZXJyb3I6IH5hIgorbXNnc3RyICJWaW0tZmVsOiB+YSIKKworbXNnaWQgIlZpbSBlcnJvciIKK21zZ3N0ciAiVmltLWZlbCIKKworbXNnaWQgImJ1ZmZlciBpcyBpbnZhbGlkIgorbXNnc3RyICJidWZmZXJ0IORyIG9naWx0aWciCisKK21zZ2lkICJ3aW5kb3cgaXMgaW52YWxpZCIKK21zZ3N0ciAiZvZuc3RlciDkciBvZ2lsdGlndCIKKworbXNnaWQgImxpbmVuciBvdXQgb2YgcmFuZ2UiCittc2dzdHIgInJhZG51bW1lciB1dGFuZvZyIG9tcuVkZSIKKworbXNnaWQgIm5vdCBhbGxvd2VkIGluIHRoZSBWaW0gc2FuZGJveCIKK21zZ3N0ciAiaW50ZSB0aWxs5XRldCBpIFZpbS1zYW5kbOVkYW4iCisKK21zZ2lkICIiCiAiRTI2MzogU29ycnksIHRoaXMgY29tbWFuZCBpcyBkaXNhYmxlZCwgdGhlIFB5dGhvbiBsaWJyYXJ5IGNvdWxkIG5vdCBiZSAiCiAibG9hZGVkLiIKIG1zZ3N0ciAiIgpAQCAtMjAyMSwxMiArMjM5MCw2IEBACiBtc2dpZCAiRTI2NDogUHl0aG9uOiBFcnJvciBpbml0aWFsaXNpbmcgSS9PIG9iamVjdHMiCiBtc2dzdHIgIkUyNjQ6IFB5dGhvbjogRmVsIHZpZCBpbml0aWVyaW5nIGF2IEkvTy1vYmpla3QiCiAKLW1zZ2lkICJpbnZhbGlkIGV4cHJlc3Npb24iCi1tc2dzdHIgIm9naWx0aWd0IHV0dHJ5Y2siCi0KLW1zZ2lkICJleHByZXNzaW9ucyBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUiCi1tc2dzdHIgInV0dHJ5Y2sgaW5ha3RpdmVyYXQgdmlkIGtvbXBpbGVyaW5nIgotCiBtc2dpZCAiYXR0ZW1wdCB0byByZWZlciB0byBkZWxldGVkIGJ1ZmZlciIKIG1zZ3N0ciAiZvZyc/ZrIGF0dCByZWZlcmVyYSB0aWxsIGJvcnR0YWdlbiBidWZmZXJ0IgogCkBAIC0yMDY3LDIxICsyNDMwLDYgQEAKIG1zZ2lkICJubyBzdWNoIHdpbmRvdyIKIG1zZ3N0ciAiaW5nZXQgc+VkYW50IGb2bnN0ZXIiCiAKLW1zZ2lkICJjYW5ub3Qgc2F2ZSB1bmRvIGluZm9ybWF0aW9uIgotbXNnc3RyICJrYW4gaW50ZSBzcGFyYSDlbmdyYS1pbmZvcm1hdGlvbiIKLQotbXNnaWQgImNhbm5vdCBkZWxldGUgbGluZSIKLW1zZ3N0ciAia2FuIGludGUgdGEgYm9ydCByYWQiCi0KLW1zZ2lkICJjYW5ub3QgcmVwbGFjZSBsaW5lIgotbXNnc3RyICJrYW4gaW50ZSBlcnPkdHRhIHJhZCIKLQotbXNnaWQgImNhbm5vdCBpbnNlcnQgbGluZSIKLW1zZ3N0ciAia2FuIGludGUgaW5mb2dhIHJhZCIKLQotbXNnaWQgInN0cmluZyBjYW5ub3QgY29udGFpbiBuZXdsaW5lcyIKLW1zZ3N0ciAic3Ry5G5nIGthbiBpbnRlIGlubmVo5WxsYSBueXJhZGVyIgotCiBtc2dpZCAiIgogIkUyNjY6IFNvcnJ5LCB0aGlzIGNvbW1hbmQgaXMgZGlzYWJsZWQsIHRoZSBSdWJ5IGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZC4iCiBtc2dzdHIgIiIKQEAgLTIxODcsOSArMjUzNSw2IEBACiBtc2dpZCAibm90IGltcGxlbWVudGVkIHlldCIKIG1zZ3N0ciAiaW50ZSBpbXBsZW1lbnRlcmF0IORuIgogCi1tc2dpZCAidW5rbm93biBvcHRpb24iCi1tc2dzdHIgIm9r5G5kIGZsYWdnYSIKLQogIy4gPz8/CiBtc2dpZCAiY2Fubm90IHNldCBsaW5lKHMpIgogbXNnc3RyICJrYW4gaW50ZSBzdORsbGEgaW4gcmFkKGVyKSIKQEAgLTIyNTAsNiArMjU5NSwxMCBAQAogIkUyODE6IFRDTC1GRUw6IEF2c2x1dG5pbmdza29kZW4g5HIgaW50ZSBpbnQhPyBWYXIgc27kbGwgb2NoIHJhcHBvcnRlcmEgZGV0dGEgIgogInRpbGwgdmltLWRldkB2aW0ub3JnIgogCisjLCBjLWZvcm1hdAorbXNnaWQgIkU1NzI6IGV4aXQgY29kZSAlZCIKK21zZ3N0ciAiRTU3MjogYXZzbHV0bmluZ3Nrb2QgJWQiCisKIG1zZ2lkICJjYW5ub3QgZ2V0IGxpbmUiCiBtc2dzdHIgImthbiBpbnRlIGjkbXRhIHJhZCIKIApAQCAtMjI2Niw4ICsyNjE1LDggQEAKIG1zZ2lkICJFMjUxOiBWSU0gaW5zdGFuY2UgcmVnaXN0cnkgcHJvcGVydHkgaXMgYmFkbHkgZm9ybWVkLiAgRGVsZXRlZCEiCiBtc2dzdHIgIkUyNTE6IFZJTSBpbnN0YW5zcmVnaXN0ZXJlZ2Vuc2thcCDkciBk5WxpZ3QgZm9ybWF0LiAgQm9ydHRhZ2V0ISIKIAotbXNnaWQgIlVua25vd24gb3B0aW9uIgotbXNnc3RyICJPa+RuZCBmbGFnZ2EiCittc2dpZCAiVW5rbm93biBvcHRpb24gYXJndW1lbnQiCittc2dzdHIgIk9r5G50IGZsYWdnYXJndW1lbnQiCiAKIG1zZ2lkICJUb28gbWFueSBlZGl0IGFyZ3VtZW50cyIKIG1zZ3N0ciAiRvZyIG3lbmdhIHJlZGlnZXJpbmdzYXJndW1lbnQiCkBAIC0yMjc1LDggKzI2MjQsOCBAQAogbXNnaWQgIkFyZ3VtZW50IG1pc3NpbmcgYWZ0ZXIiCiBtc2dzdHIgIkFyZ3VtZW50IHNha25hcyBlZnRlciIKIAotbXNnaWQgIkdhcmJhZ2UgYWZ0ZXIgb3B0aW9uIgotbXNnc3RyICJTa3LkcCBlZnRlciBmbGFnZ2EiCittc2dpZCAiR2FyYmFnZSBhZnRlciBvcHRpb24gYXJndW1lbnQiCittc2dzdHIgIlNrcuRwIGVmdGVyIGZsYWdnYXJndW1lbnQiCiAKIG1zZ2lkICJUb28gbWFueSBcIitjb21tYW5kXCIsIFwiLWMgY29tbWFuZFwiIG9yIFwiLS1jbWQgY29tbWFuZFwiIGFyZ3VtZW50cyIKIG1zZ3N0ciAiIgpAQCAtMjI4NSw2ICsyNjM0LDEwIEBACiBtc2dpZCAiSW52YWxpZCBhcmd1bWVudCBmb3IiCiBtc2dzdHIgIk9naWx0aWd0IGFyZ3VtZW50IGb2ciIKIAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBmaWxlcyB0byBlZGl0XG4iCittc2dzdHIgIiVkIGZpbGVyIGF0dCByZWRpZ2VyYVxuIgorCiBtc2dpZCAiVGhpcyBWaW0gd2FzIG5vdCBjb21waWxlZCB3aXRoIHRoZSBkaWZmIGZlYXR1cmUuIgogbXNnc3RyICJEZW5uYSBWaW0gYmxldiBpbnRlIGtvbXBpbGVyYWQgbWVkIGRpZmYtZnVua3Rpb25lbi4iCiAKQEAgLTIyOTcsOSArMjY1MCw4IEBACiBtc2dpZCAiQ2Fubm90IG9wZW4gZm9yIHNjcmlwdCBvdXRwdXQ6IFwiIgogbXNnc3RyICJLYW4gaW50ZSD2cHBuYSBm9nIgc2tyaXB0dXRtYXRuaW5nOiBcIiIKIAotIywgYy1mb3JtYXQKLW1zZ2lkICIlZCBmaWxlcyB0byBlZGl0XG4iCi1tc2dzdHIgIiVkIGZpbGVyIGF0dCByZWRpZ2VyYVxuIgorbXNnaWQgIlZpbTogRXJyb3I6IEZhaWx1cmUgdG8gc3RhcnQgZ3ZpbSBmcm9tIE5ldEJlYW5zXG4iCittc2dzdHIgIlZpbTogRmVsOiBNaXNzbHlja2FkZXMgYXR0IHN0YXJ0YSBndmltIGZy5W4gTmV0QmVhbnNcbiIKIAogbXNnaWQgIlZpbTogV2FybmluZzogT3V0cHV0IGlzIG5vdCB0byBhIHRlcm1pbmFsXG4iCiBtc2dzdHIgIlZpbTogVmFybmluZzogVXRtYXRuaW5nIORyIGludGUgdGlsbCBlbiB0ZXJtaW5hbFxuIgpAQCAtMjM1Myw2ICsyNzA1LDkgQEAKICJcbiIKICIgICAgIGVsbGVyOiIKIAorbXNnaWQgIndoZXJlIGNhc2UgaXMgaWdub3JlZCBwcmVwZW5kIC8gdG8gbWFrZSBmbGFnIHVwcGVyIGNhc2UiCittc2dzdHIgImTkciBzdG9ybGVrIGlnbm9yZXJhcyBi9nJqYSBtZWQgLyBm9nIgYXR0IGf2cmEgZmxhZ2dhIHZlcnNhbCIKKwogbXNnaWQgIiIKICJcbiIKICJcbiIKQEAgLTI1ODYsNyArMjk0MSw3IEBACiBtc2dzdHIgIi1mb3JlZ3JvdW5kIDxm5HJnPlx0QW525G5kIDxm5HJnPiBm9nIgdmFubGlnIHRleHQgKOR2ZW46IC1mZykiCiAKIG1zZ2lkICItZm9udCA8Zm9udD5cdFx0VXNlIDxmb250PiBmb3Igbm9ybWFsIHRleHQgKGFsc286IC1mbikiCi1tc2dzdHIgIi1mb250IDx0eXBzbml0dD5cdEFuduRuZCA8dHlwc25pdHQ+IGb2ciB2YW5saWcgdGV4dCAo5HZlbjogLWZuKSIKK21zZ3N0ciAiLWZvbnQgPHR5cHNuaXR0Plx0XHRBbnbkbmQgPHR5cHNuaXR0PiBm9nIgdmFubGlnIHRleHQgKOR2ZW46IC1mbikiCiAKIG1zZ2lkICItYm9sZGZvbnQgPGZvbnQ+XHRVc2UgPGZvbnQ+IGZvciBib2xkIHRleHQiCiBtc2dzdHIgIq1ib2xkZm9udCA8dHlwc25pdHQ+XHRBbnbkbmQgPHR5cHNuaXR0PiBm9nIgZmV0IHRleHQiCkBAIC0yNjQ2LDggKzMwMDEsMjcgQEAKIG1zZ2lkICItLXNvY2tldGlkIDx4aWQ+XHRPcGVuIFZpbSBpbnNpZGUgYW5vdGhlciBHVEsgd2lkZ2V0IgogbXNnc3RyICItLXNvY2tldGlkIDx4aWQ+XHTWcHBuYSBWaW0gaW5uYW5m9nIgZW4gYW5uYW4gR1RLLXdpZGdldCIKIAorbXNnaWQgIiIKKyJcbiIKKyJBcmd1bWVudHMgcmVjb2duaXNlZCBieSBrdmltIChLREUgdmVyc2lvbik6XG4iCittc2dzdHIgIiIKKyJcbiIKKyJBcmd1bWVudCBpZ2Vua+RuZGEgYXYga3ZpbSAoS0RFLXZlcnNpb24pOlxuIgorCittc2dpZCAiLWJsYWNrXHRcdFVzZSByZXZlcnNlIHZpZGVvIgorbXNnc3RyICItYmxhY2tcdFx0QW525G5kIG9tduRuZCB2aWRlbyIKKworbXNnaWQgIi10aXBcdFx0XHREaXNwbGF5IHRoZSB0aXAgZGlhbG9nIG9uIHN0YXJ0dXAiCittc2dzdHIgIi10aXBcdFx0VmlzYSB0aXBzZGlhbG9nZW4gdmlkIHVwcHN0YXJ0IgorCittc2dpZCAiLW5vdGlwXHRcdERpc2FibGUgdGhlIHRpcCBkaWFsb2ciCittc2dzdHIgIi1ub3RpcFx0XHRJbmFrdGl2ZXJhIHRpcHNkaWFsb2dlbiIKKworbXNnaWQgIi0tZGlzcGxheSA8ZGlzcGxheT5cdFJ1biB2aW0gb24gPGRpc3BsYXk+IgorbXNnc3RyICItLWRpc3BsYXkgPGRpc3BsYXk+XHRL9nIgdmltIHDlIDxkaXNwbGF5PiIKKwogbXNnaWQgIi1QIDxwYXJlbnQgdGl0bGU+XHRPcGVuIFZpbSBpbnNpZGUgcGFyZW50IGFwcGxpY2F0aW9uIgotbXNnc3RyICItUCA8ZvZy5GxkZXJ0aXRlbD5cdNZwcG5hIFZpbSBpbm5lIGkgZvZy5GxkZXJhcHBsaWthdGlvbiIKK21zZ3N0ciAiLVAgPGb2cuRsZGVyIGb2bnN0ZXI+XHTWcHBuYSBWaW0gaW51dGkgZvZy5GxkZXJhcHBsaWthdGlvbiIKIAogbXNnaWQgIk5vIGRpc3BsYXkiCiBtc2dzdHIgIkluZ2VuIGRpc3BsYXkiCkBAIC0yNzk3LDggKzMxNzEsOCBAQAogbXNnaWQgIkUzMDM6IFVuYWJsZSB0byBvcGVuIHN3YXAgZmlsZSBmb3IgXCIlc1wiLCByZWNvdmVyeSBpbXBvc3NpYmxlIgogbXNnc3RyICJFMzAzOiBLdW5kZSBpbnRlIPZwcG5hIHbkeGVsZmlsIGb2ciBcIiVzXCIsIOV0ZXJza2FwbmluZyBvbfZqbGlnIgogCi1tc2dpZCAiRTMwNDogbWxfdGltZXN0YW1wOiBEaWRuJ3QgZ2V0IGJsb2NrIDA/PyIKLW1zZ3N0ciAiRTMwNDogbWxfdGltZXN0YW1wOiBUb2cgaW50ZSBlbW90IGJsb2NrIDA/PyIKK21zZ2lkICJFMzA0OiBtbF91cGRfYmxvY2swKCk6IERpZG4ndCBnZXQgYmxvY2sgMD8/IgorbXNnc3RyICJFMzA0OiBtbF91cGRfYmxvY2swKCk6IFRvZyBpbnRlIGVtb3QgYmxvY2sgMD8/IgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDU6IE5vIHN3YXAgZmlsZSBmb3VuZCBmb3IgJXMiCkBAIC0zMDcxLDcgKzM0NDUsNyBAQAogbXNnc3RyICJFMzE3OiBwZWthcmJsb2NrLWlkIGZlbCAyIgogCiBtc2dpZCAiRTMyNTogQVRURU5USU9OIgotbXNnc3RyICJFMzI1OiBPQlNFUlZFUkEiCittc2dzdHIgIkUzMjU6IExZU1RSSU5HIgogCiBtc2dpZCAiIgogIlxuIgpAQCAtMzE3OCw4ICszNTUyLDkgQEAKIG1zZ2lkICJFMzI4OiBNZW51IG9ubHkgZXhpc3RzIGluIGFub3RoZXIgbW9kZSIKIG1zZ3N0ciAiRTMyODogTWVueSBleGlzdGVyYXIgYmFyYSBpIGV0dCBhbm5hdCBs5GdlIgogCi1tc2dpZCAiRTMyOTogTm8gbWVudSBvZiB0aGF0IG5hbWUiCi1tc2dzdHIgIkUzMjk6IEluZ2VuIG1lbnkgbWVkIGRldCBuYW1uZXQiCisjLCBjLWZvcm1hdAorbXNnaWQgIkUzMjk6IE5vIG1lbnUgXCIlc1wiIgorbXNnc3RyICJFMzI5OiBJbmdlbiBtZW55IFwiJXNcIiIKIAogbXNnaWQgIkUzMzA6IE1lbnUgcGF0aCBtdXN0IG5vdCBsZWFkIHRvIGEgc3ViLW1lbnUiCiBtc2dzdHIgIkUzMzA6IE1lbnlz9mt25GcgZuVyIGludGUgbGVkYSB0aWxsIGVuIHVuZGVybWVueSIKQEAgLTMyMjcsOCArMzYwMiw5IEBACiBtc2dpZCAibGluZSAlNGxkOiIKIG1zZ3N0ciAicmFkICU0bGQ6IgogCi1tc2dpZCAiW3N0cmluZyB0b28gbG9uZ10iCi1tc2dzdHIgIltzdHLkbmcgZvZyIGzlbmddIgorIywgYy1mb3JtYXQKK21zZ2lkICJFMzU0OiBJbnZhbGlkIHJlZ2lzdGVyIG5hbWU6ICclcyciCittc2dzdHIgIkUzNTQ6IE90aWxs5XRldCByZWdpc3Rlcm5hbW46ICclcyciCiAKIG1zZ2lkICJNZXNzYWdlcyBtYWludGFpbmVyOiBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPiIKIG1zZ3N0ciAiTWVkZGVsYW5kZWFuc3ZhcmlnOiBKb2hhbiBTdmVkYmVyZyA8am9oYW5Ac3ZlZGJlcmcuY29tPiIKQEAgLTMyMzYsMjAgKzM2MTIsMTggQEAKIG1zZ2lkICJJbnRlcnJ1cHQ6ICIKIG1zZ3N0ciAiQXZicm90dDogIgogCi1tc2dpZCAiSGl0IEVOVEVSIHRvIGNvbnRpbnVlIgotbXNnc3RyICJUcnljayBSRVRVUiBm9nIgYXR0IGZvcnRz5HR0YSIKLQotbXNnaWQgIkhpdCBFTlRFUiBvciB0eXBlIGNvbW1hbmQgdG8gY29udGludWUiCittc2dpZCAiUHJlc3MgRU5URVIgb3IgdHlwZSBjb21tYW5kIHRvIGNvbnRpbnVlIgogbXNnc3RyICJUcnljayBSRVRVUiBlbGxlciBza3JpdiBrb21tYW5kbyBm9nIgYXR0IGZvcnRz5HR0YSIKIAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBsaW5lICVsZCIKK21zZ3N0ciAiJXMgcmFkICVsZCIKKwogbXNnaWQgIi0tIE1vcmUgLS0iCiBtc2dzdHIgIi0tIE1lciAtLSIKIAotbXNnaWQgIiAoUkVUL0JTOiBsaW5lLCBTUEFDRS9iOiBwYWdlLCBkL3U6IGhhbGYgcGFnZSwgcTogcXVpdCkiCi1tc2dzdHIgIiAoRU5UL0JTOiByYWQsIEJMQU5LU1RFRy9iOiBzaWRhLCBkL3U6IGhhbHYgc2lkYSBxOiBhdnNsdXRhIgotCi1tc2dpZCAiIChSRVQ6IGxpbmUsIFNQQUNFOiBwYWdlLCBkOiBoYWxmIHBhZ2UsIHE6IHF1aXQpIgotbXNnc3RyICIgKEVOVDogcmFkLCBCTEFOS1NURUc6IHNpZGEgZDogaGFsdiBzaWRhIHE6IGF2c2x1dGEpIgorbXNnaWQgIiBTUEFDRS9kL2o6IHNjcmVlbi9wYWdlL2xpbmUgZG93biwgYi91L2s6IHVwLCBxOiBxdWl0ICIKK21zZ3N0ciAiIEJMQU5LU1RFRy9kL2o6IHNr5HJtL3NpZGEvcmFkIG5lZCwgYi91L2s6IHVwcCwgcTogcXVpdCIKIAogbXNnaWQgIlF1ZXN0aW9uIgogbXNnc3RyICJGcuVnYSIKQEAgLTMyNzQsMTkgKzM2NDgsMzQgQEAKICImS2FzdGEgYm9ydCBhbGxhXG4iCiAiJkF2YnJ5dCIKIAorbXNnaWQgIlNlbGVjdCBEaXJlY3RvcnkgZGlhbG9nIgorbXNnc3RyICJW5GxqIGthdGFsb2ctZGlhbG9nIgorCiBtc2dpZCAiU2F2ZSBGaWxlIGRpYWxvZyIKLW1zZ3N0ciAiRmlsc3BhcmFuZGVkaWFsb2ciCittc2dzdHIgIlNwYXJhIGZpbC1kaWFsb2ciCiAKIG1zZ2lkICJPcGVuIEZpbGUgZGlhbG9nIgotbXNnc3RyICJGaWz2cHBuYW5kZWRpYWxvZyIKK21zZ3N0ciAi1nBwbmEgZmlsLWRpYWxvZyIKIAogIy4gVE9ETzogbm9uLUdVSSBmaWxlIHNlbGVjdG9yIGhlcmUKIG1zZ2lkICJFMzM4OiBTb3JyeSwgbm8gZmlsZSBicm93c2VyIGluIGNvbnNvbGUgbW9kZSIKIG1zZ3N0ciAiRTMzODogVHl25HJyLCBpbmdlbiBmaWxibORkZHJhcmUgaSBrb25zb2xsLWzkZ2UiCiAKK21zZ2lkICJFNzY2OiBJbnN1ZmZpY2llbnQgYXJndW1lbnRzIGZvciBwcmludGYoKSIKK21zZ3N0ciAiRTc2NjogT3RpbGxy5GNrbGlnYSBhcmd1bWVudCBm9nIgcHJpbnRmKCkiCisKK21zZ2lkICJFNzY3OiBUb28gbWFueSBhcmd1bWVudHMgdG8gcHJpbnRmKCkiCittc2dzdHIgIkU3Njc6IEb2ciBt5W5nYSBhcmd1bWVudCB0aWxsIHByaW50ZigpIgorCiBtc2dpZCAiVzEwOiBXYXJuaW5nOiBDaGFuZ2luZyBhIHJlYWRvbmx5IGZpbGUiCiBtc2dzdHIgIlcxMDogVmFybmluZzogxG5kcmFyIGVuIHNrcml2c2t5ZGRhZCBmaWwiCiAKK21zZ2lkICJUeXBlIG51bWJlciBvciBjbGljayB3aXRoIG1vdXNlICg8RW50ZXI+IGNhbmNlbHMpOiAiCittc2dzdHIgIlNrcml2IHNpZmZyYSBlbGxlciBrbGlja2EgbWVkIG11c2VuICg8UmV0dXI+IGF2YnJ5dGVyKTogIgorCittc2dpZCAiQ2hvaWNlIG51bWJlciAoPEVudGVyPiBjYW5jZWxzKTogIgorbXNnc3RyICJW5GxqIHNpZmZyYSAoPFJldHVyPiBhdmJyeXRlcik6ICIKKwogbXNnaWQgIjEgbW9yZSBsaW5lIgogbXNnc3RyICIxIHJhZCB0aWxsIgogCkBAIC0zMzA0LDYgKzM2OTMsOSBAQAogbXNnaWQgIiAoSW50ZXJydXB0ZWQpIgogbXNnc3RyICIgKEF2YnJ1dGVuKSIKIAorbXNnaWQgIkJlZXAhIgorbXNnc3RyICJQaWlwISIKKwogbXNnaWQgIlZpbTogcHJlc2VydmluZyBmaWxlcy4uLlxuIgogbXNnc3RyICJWaW06IGJldmFyYXIgZmlsZXIuLi5cbiIKIApAQCAtMzMyMSw3ICszNzEzLDcgQEAKICJbYnl0ZXNdIHRvdGFsIGFsbG9jLWZyZWVkICVsdS0lbHUsIGluIHVzZSAlbHUsIHBlYWsgdXNlICVsdVxuIgogbXNnc3RyICIiCiAiXG4iCi0iW2JpdGFyXSBzYW1tYW5sYWdkIGFsbG9rLWZyaWdqb3JkICVsdS0lbHUsIGkgYW525G5kbmluZyAlbHUsIHRvcHBhbnbkbmRuaW5nICUiCisiW2J5dGVdIHNhbW1hbmxhZ2QgYWxsb2stZnJpZ2pvcmQgJWx1LSVsdSwgaSBhbnbkbmRuaW5nICVsdSwgdG9wcGFuduRuZG5pbmcgJSIKICJsdVxuIgogCiAjLCBjLWZvcm1hdApAQCAtMzM0MSw3ICszNzMzLDcgQEAKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzQyOiBPdXQgb2YgbWVtb3J5ISAgKGFsbG9jYXRpbmcgJWx1IGJ5dGVzKSIKLW1zZ3N0ciAiRTM0MjogU2x1dCBw5SBtaW5uZSEgIChhbGxva2VyYXIgJWx1IGJpdGFyKSIKK21zZ3N0ciAiRTM0MjogU2x1dCBw5SBtaW5uZSEgIChhbGxva2VyYXIgJWx1IGJ5dGUpIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbGxpbmcgc2hlbGwgdG8gZXhlY3V0ZTogXCIlc1wiIgpAQCAtMzM5NSwxNSArMzc4Nyw2IEBACiBtc2dpZCAiRTM0NzogTm8gbW9yZSBmaWxlIFwiJXNcIiBmb3VuZCBpbiBwYXRoIgogbXNnc3RyICJFMzQ3OiBJbmdlbiBmaWwgXCIlc1wiIGhpdHRhZGVzIGkgc/ZrduRnZW4iCiAKLW1zZ2lkICJFNTUwOiBNaXNzaW5nIGNvbG9uIgotbXNnc3RyICJFNTUwOiBTYWtuYXIga29sb24iCi0KLW1zZ2lkICJFNTUxOiBJbGxlZ2FsIGNvbXBvbmVudCIKLW1zZ3N0ciAiRTU1MTogT3RpbGzldGVuIGtvbXBvbmVudCIKLQotbXNnaWQgIkU1NTI6IGRpZ2l0IGV4cGVjdGVkIgotbXNnc3RyICJFNTUyOiBzaWZmcmEgZvZyduRudGFkZXMiCi0KICMuIEdldCBoZXJlIHdoZW4gdGhlIHNlcnZlciBjYW4ndCBiZSBmb3VuZC4KIG1zZ2lkICJDYW5ub3QgY29ubmVjdCB0byBOZXRiZWFucyAjMiIKIG1zZ3N0ciAiS2FuIGludGUgYW5zbHV0YSB0aWxsIE5ldGJlYW5zICMyIgpAQCAtMzQxMywxNCArMzc5NiwxNyBAQAogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2Njg6IFdyb25nIGFjY2VzcyBtb2RlIGZvciBOZXRCZWFucyBjb25uZWN0aW9uIGluZm8gZmlsZTogXCIlc1wiIgotbXNnc3RyICJFNjY4OiBGZWwgcuR0dGlnaGV0ZXIgcOUgTmV0QmVhbnMtYW5zbHV0bmluZ2VucyBpbmZvLWZpbDogXCIlc1wiIgorbXNnc3RyICJFNjY4OiBGZWwgcuR0dGlnaGV0c2zkZ2UgZvZyIE5ldEJlYW5zLWFuc2x1dG5pbmdlbnMgaW5mbyBmaWw6IFwiJXNcIiIKIAogbXNnaWQgInJlYWQgZnJvbSBOZXRiZWFucyBzb2NrZXQiCiBtc2dzdHIgImzkcyBmcuVuIE5ldGJlYW5zLXV0dGFnIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2NTg6IE5ldEJlYW5zIGNvbm5lY3Rpb24gbG9zdCBmb3IgYnVmZmVyICVsZCIKLW1zZ3N0ciAiRTY1ODogTmV0QmVhbnMtYW5zbHV0bmluZyBm9nJsb3JhZCBm9nIgYnVmZmVydCAlbGQiCittc2dzdHIgIkU2NTg6IE5ldEJlYW5zLWFuc2x1dG5pbmcgdGFwcGFkIGb2ciBidWZmZXJ0ICVsZCIKKworbXNnaWQgIkU1MDU6ICIKK21zZ3N0ciAiRTUwNTogIgogCiBtc2dpZCAiV2FybmluZzogdGVybWluYWwgY2Fubm90IGhpZ2hsaWdodCIKIG1zZ3N0ciAiVmFybmluZzogdGVybWluYWwga2FuIGludGUgZnJhbWjkdmEiCkBAIC0zNDM4LDEwICszODI0LDEwIEBACiBtc2dzdHIgIkU2NjQ6IORuZHJpbmdzbGlzdGEg5HIgdG9tIgogCiBtc2dpZCAiRTY2MjogQXQgc3RhcnQgb2YgY2hhbmdlbGlzdCIKLW1zZ3N0ciAiRTY2MjogVmlkIGL2cmphbiBw5SDkbmRyaW5nc2xpc3RhIgorbXNnc3RyICJFNjYyOiBWaWQgYvZyamFuIGF2IORuZHJpbmdzbGlzdGEiCiAKIG1zZ2lkICJFNjYzOiBBdCBlbmQgb2YgY2hhbmdlbGlzdCIKLW1zZ3N0ciAiRTY2MzogVmlkIHNsdXRldCBw5SDkbmRyaW5nc2xpc3RhIgorbXNnc3RyICJFNjYzOiBWaWQgc2x1dGV0IGF2IORuZHJpbmdzbGlzdGEiCiAKIG1zZ2lkICJUeXBlICA6cXVpdDxFbnRlcj4gIHRvIGV4aXQgVmltIgogbXNnc3RyICJza3JpdiAgOnE8RW50ZXI+ICAgICAgICAgICAgICAgIGb2ciBhdHQgYXZzbHV0YSBWaW0gICAgICAgICAiCkBAIC0zNDczLDYgKzM4NTksOSBAQAogbXNnaWQgIiVsZCBsaW5lcyBpbmRlbnRlZCAiCiBtc2dzdHIgIiVsZCByYWRlciBpbmRlbnRlcmFkZSAiCiAKK21zZ2lkICJFNzQ4OiBObyBwcmV2aW91c2x5IHVzZWQgcmVnaXN0ZXIiCittc2dzdHIgIkU3NDg6IEluZ2V0IHRpZGlnYXJlIGFuduRudCByZWdpc3RlciIKKwogIy4gbXVzdCBkaXNwbGF5IHRoZSBwcm9tcHQKIG1zZ2lkICJjYW5ub3QgeWFuazsgZGVsZXRlIGFueXdheSIKIG1zZ3N0ciAia2FuIGludGUga29waWVyYTsgdGEgYm9ydCDkbmTlIgpAQCAtMzQ4OCwxMCArMzg3NywxNyBAQAogbXNnaWQgImZyZWVpbmcgJWxkIGxpbmVzIgogbXNnc3RyICJmcmln9nIgJWxkIHJhZGVyIgogCittc2dpZCAiYmxvY2sgb2YgMSBsaW5lIHlhbmtlZCIKK21zZ3N0ciAiYmxvY2sgb20gMSByYWQga29waWVyYXQiCisKIG1zZ2lkICIxIGxpbmUgeWFua2VkIgogbXNnc3RyICIxIHJhZCBrb3BpZXJhZCIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJibG9jayBvZiAlbGQgbGluZXMgeWFua2VkIgorbXNnc3RyICJibG9jayBvbSAlbGQgcmFkZXIga29waWVyYWRlIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBsaW5lcyB5YW5rZWQiCiBtc2dzdHIgIiVsZCByYWRlciBrb3BpZXJhZGUiCiAKQEAgLTM1MjMsMTAgKzM5MTksNiBAQAogbXNnc3RyICJFNTc0OiBPa+RuZCByZWdpc3RlcnR5cCAlZCIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFMzU0OiBJbnZhbGlkIHJlZ2lzdGVyIG5hbWU6ICclcyciCi1tc2dzdHIgIkUzNTQ6IE90aWxs5XRldCByZWdpc3Rlcm5hbW46ICclcyciCi0KLSMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIENvbHM7ICIKIG1zZ3N0ciAiJWxkIGtvbHVtbmVyOyAiCiAKQEAgLTM1MzUsMTAgKzM5MjcsMjQgQEAKIG1zZ3N0ciAiTWFya2VyYWRlICVzJWxkIGF2ICVsZCByYWRlcjsgJWxkIGF2ICVsZCBvcmQ7ICVsZCBhdiAlbGQgYml0YXIiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNlbGVjdGVkICVzJWxkIG9mICVsZCBMaW5lczsgJWxkIG9mICVsZCBXb3JkczsgJWxkIG9mICVsZCBDaGFyczsgJWxkIG9mICVsZCAiCisiQnl0ZXMiCittc2dzdHIgIk1hcmtlcmFkZSAlcyVsZCBhdiAlbGQgcmFkZXI7ICVsZCBhdiAlbGQgb3JkOyAlbGQgYXYgJWxkIHRlY2tlbjsgJWxkICIKKyJhdiAlbGQgYml0YXIiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiQ29sICVzIG9mICVzOyBMaW5lICVsZCBvZiAlbGQ7IFdvcmQgJWxkIG9mICVsZDsgQnl0ZSAlbGQgb2YgJWxkIgogbXNnc3RyICJLb2wgJXMgYXYgJXM7IHJhZCAlbGQgYXYgJWxkOyBvcmQgJWxkIGF2ICVsZDsgYml0ICVsZCBhdiAlbGQiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvbCAlcyBvZiAlczsgTGluZSAlbGQgb2YgJWxkOyBXb3JkICVsZCBvZiAlbGQ7IENoYXIgJWxkIG9mICVsZDsgQnl0ZSAlbGQgb2YgIgorIiVsZCIKK21zZ3N0ciAiS29sICVzIGF2ICVzOyByYWQgJWxkIGF2ICVsZDsgb3JkICVsZCBhdiAlbGQ7IHRlY2tlbiAlbGQgYXYgJWxkOyBiaXQgIgorIiVsZCBhdiAlbGQiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiKCslbGQgZm9yIEJPTSkiCiBtc2dzdHIgIigrJWxkIGb2ciBCT00pIgogCkBAIC0zNTUyLDE4ICszOTU4LDExIEBACiBtc2dzdHIgIkU1MTg6IE9r5G5kIGZsYWdnYSIKIAogbXNnaWQgIkU1MTk6IE9wdGlvbiBub3Qgc3VwcG9ydGVkIgotbXNnc3RyICJFNTE5OiBGbGFnZ2EgaW50ZSBzdPZkZCIKK21zZ3N0ciAiRTUxOTogRmxhZ2dhIHN09mRzIGludGUiCiAKIG1zZ2lkICJFNTIwOiBOb3QgYWxsb3dlZCBpbiBhIG1vZGVsaW5lIgogbXNnc3RyICJFNTIwOiBJbnRlIHRpbGzldGV0IGkgZW4gbORnZXNyYWQiCiAKLW1zZ2lkICIiCi0iXG4iCi0iXHRMYXN0IHNldCBmcm9tICIKLW1zZ3N0ciAiIgotIlxuIgotIlx0U2VuYXN0IHNhdHQgZnLlbiAiCi0KIG1zZ2lkICJFNTIxOiBOdW1iZXIgcmVxdWlyZWQgYWZ0ZXIgPSIKIG1zZ3N0ciAiRTUyMTogTnVtbWVyIGty5HZzIGVmdGVyID0iCiAKQEAgLTM3NzIsOSArNDE3MSw2IEBACiBtc2dpZCAiRTIzODogUHJpbnQgZXJyb3I6ICVzIgogbXNnc3RyICJFMjM4OiBTa3JpdmFyZmVsOiAlcyIKIAotbXNnaWQgIlVua25vd24iCi1tc2dzdHIgIk9r5G5kIgotCiAjLCBjLWZvcm1hdAogbXNnaWQgIlByaW50aW5nICclcyciCiBtc2dzdHIgIlNrcml2ZXIgdXQgJyVzJyIKQEAgLTM4MDUsNiArNDIwMSwxNCBAQAogbXNnaWQgIk9wZW5pbmcgdGhlIFggZGlzcGxheSB0b29rICVsZCBtc2VjIgogbXNnc3RyICLWcHBuaW5nIGF2IFgtZGlzcGxheSB0b2cgJWxkIG1zIgogCisjLiBLREUgc29tZXRpbWVzIHByb2R1Y2VzIFggZXJyb3IgdGhhdCB3ZSB3YW50IHRvIGlnbm9yZQorbXNnaWQgIiIKKyJcbiIKKyJWaW06IEdvdCBYIGVycm9yIGJ1dCB3ZSBjb250aW51ZS4uLlxuIgorbXNnc3RyICIiCisiXG4iCisiVmltOiBGaWNrIFgtZXJyb3IgbWVuIHZpIGZvcnRz5HR0ZXIuLi5cbiIKKwogbXNnaWQgIiIKICJcbiIKICJWaW06IEdvdCBYIGVycm9yXG4iCkBAIC0zODYzLDYgKzQyNjcsMTAgQEAKIG1zZ2lkICJYU01QIGxvc3QgSUNFIGNvbm5lY3Rpb24iCiBtc2dzdHIgIlhTTVAgdGFwcGFkZSBJQ0UtYW5zbHV0bmluZyIKIAorIywgYy1mb3JtYXQKK21zZ2lkICJkbGVycm9yID0gXCIlc1wiIgorbXNnc3RyICJkbGZlbCA9IFwiJXNcIiIKKwogbXNnaWQgIk9wZW5pbmcgdGhlIFggZGlzcGxheSBmYWlsZWQiCiBtc2dzdHIgItZwcG5pbmcgYXYgWC1kaXNwbGF5ZW4gbWlzc2x5Y2thZGVzIgogCkBAIC0zODc5LDE1ICs0Mjg3LDE1IEBACiBtc2dpZCAiWFNNUCBTbWNPcGVuQ29ubmVjdGlvbiBmYWlsZWQ6ICVzIgogbXNnc3RyICJYU01QIFNtY09wZW5Db25uZWN0aW9uIG1pc3NseWNrYWRlczogJXMiCiAKLW1zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21tYW5kIGxpbmUuIgotbXNnc3RyICJLdW5kZSBpbnRlIGFsbG9rZXJhIG1pbm5lIGb2ciBrb21tYW5kb3JhZC4iCi0KLW1zZ2lkICJWSU0gRXJyb3IiCi1tc2dzdHIgIlZJTS1mZWwiCittc2dpZCAiQXQgbGluZSIKK21zZ3N0ciAiUOUgcmFkIgogCiBtc2dpZCAiQ291bGQgbm90IGxvYWQgdmltMzIuZGxsISIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBs5HNhIGluIHZpbTMyLmRsbCEiCiAKK21zZ2lkICJWSU0gRXJyb3IiCittc2dzdHIgIlZJTS1mZWwiCisKIG1zZ2lkICJDb3VsZCBub3QgZml4IHVwIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHRoZSBETEwhIgogbXNnc3RyICJLdW5kZSBpbnRlIG9yZG5hIHVwcCBmdW5rdGlvbnNwZWthcmUgdGlsbCBETEw6ZW4hIgogCkBAIC0zOTIzLDkgKzQzMzEsNiBAQAogbXNnaWQgIlZpbSBXYXJuaW5nIgogbXNnc3RyICJWaW0tdmFybmluZyIKIAotbXNnaWQgIkF0IGxpbmUiCi1tc2dzdHIgIlDlIHJhZCIKLQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzcyOiBUb28gbWFueSAlJSVjIGluIGZvcm1hdCBzdHJpbmciCiBtc2dzdHIgIkUzNzI6IEb2ciBt5W5nYSAlJSVjIGkgZm9ybWF0c3Ry5G5nIgpAQCAtMzk3OCw2ICs0MzgzLDE2IEBACiBtc2dpZCAiRTM4MjogQ2Fubm90IHdyaXRlLCAnYnVmdHlwZScgb3B0aW9uIGlzIHNldCIKIG1zZ3N0ciAiRTM4MjogS2FuIGludGUgc2tyaXZhLCAnYnVmdHlwZSctZmxhZ2dhIORyIHNhdHQiCiAKK21zZ2lkICJFNjgzOiBGaWxlIG5hbWUgbWlzc2luZyBvciBpbnZhbGlkIHBhdHRlcm4iCittc2dzdHIgIkU2ODM6IEZpbG5hbW4gc2FrbmFzIGVsbGVyIG9naWx0aWd0IG32bnN0ZXIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gZmlsZSBcIiVzXCIiCittc2dzdHIgIkthbiBpbnRlIPZwcG5hIGZpbCBcIiVzXCIiCisKK21zZ2lkICJFNjgxOiBCdWZmZXIgaXMgbm90IGxvYWRlZCIKK21zZ3N0ciAiRTY4MTogQnVmZmVydCDkciBpbnRlIGxhZGRhZCIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzY5OiBpbnZhbGlkIGl0ZW0gaW4gJXMlJVtdIgogbXNnc3RyICJFMzY5OiBvZ2lsdGlndCBm9nJlbeVsIGkgJXMlJVtdIgpAQCAtNDAwOCwyMiArNDQyMywxMCBAQAogbXNnc3RyICJFNTU6IE9tYXRjaGFkZSAlcykiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTU2OiAlcyogb3BlcmFuZCBjb3VsZCBiZSBlbXB0eSIKLW1zZ3N0ciAiRTU2OiAlcyotb3BlcmFuZCBrYW4gdmFyYSB0b20iCi0KLSMsIGMtZm9ybWF0Ci1tc2dpZCAiRTU3OiAlcysgb3BlcmFuZCBjb3VsZCBiZSBlbXB0eSIKLW1zZ3N0ciAiRTU3OiAlcystb3BlcmFuZCBrYW4gdmFyYSB0b20iCi0KLSMsIGMtZm9ybWF0CiBtc2dpZCAiRTU5OiBpbnZhbGlkIGNoYXJhY3RlciBhZnRlciAlc0AiCiBtc2dzdHIgIkU1OTogb2dpbHRpZ3QgdGVja2VuIGVmdGVyICVzQCIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFNTg6ICVzeyBvcGVyYW5kIGNvdWxkIGJlIGVtcHR5IgotbXNnc3RyICJFNTg6ICVzey1vcGVyYW5kIGthbiB2YXJhIHRvbSIKLQotIywgYy1mb3JtYXQKIG1zZ2lkICJFNjA6IFRvbyBtYW55IGNvbXBsZXggJXN7Li4ufXMiCiBtc2dzdHIgIkU2MDogRvZyIG3lbmdhIGtvbXBsZXhhICVzey4uLn1zIgogCkBAIC00MDYzLDI2ICs0NDY2LDI0IEBACiBtc2dzdHIgIkU3MDogVG9tICVzJSVbXSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNjc4OiBJbnZhbGlkIGNoYXJhY3RlciBhZnRlciAlcyUlW2R4b3VVXSIKK21zZ3N0ciAiRTY3ODogT2dpbHRpZ3QgdGVja2VuIGVmdGVyICVzJSVbZHhvdVVdIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIkU3MTogSW52YWxpZCBjaGFyYWN0ZXIgYWZ0ZXIgJXMlJSIKIG1zZ3N0ciAiRTcxOiBPZ2lsdGlndCB0ZWNrZW4gZWZ0ZXIgJXMlJSIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNzY5OiBNaXNzaW5nIF0gYWZ0ZXIgJXNbIgorbXNnc3RyICJFNzY5OiBTYWtuYXIgXSBlZnRlciAlc1siCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTU1NDogU3ludGF4IGVycm9yIGluICVzey4uLn0iCiBtc2dzdHIgIkU1NTQ6IFN5bnRheGZlbCBpICVzey4uLn0iCiAKLW1zZ2lkICJFMzYxOiBDcmFzaCBpbnRlcmNlcHRlZDsgcmVnZXhwIHRvbyBjb21wbGV4PyIKLW1zZ3N0ciAiRTM2MTogS3Jhc2NoIGhlamRhZDsgcmVndWxq5HJ0IHV0dHJ5Y2sgZvZyIGtvbXBsZXh0PyIKLQotbXNnaWQgIkUzNjM6IHBhdHRlcm4gY2F1c2VkIG91dC1vZi1zdGFjayBlcnJvciIKLW1zZ3N0ciAiRTM2MzogbfZuc3RlciBvcnNha2FkZSBzbHV0LXDlLXN0YWNrLWZlbCIKLQogbXNnaWQgIkV4dGVybmFsIHN1Ym1hdGNoZXM6XG4iCiBtc2dzdHIgIkV4dGVybmEgdW5kZXJ0cuRmZmFyOlxuIgogCi0jLCBjLWZvcm1hdAotbXNnaWQgIistLSUzbGQgbGluZXMgZm9sZGVkICIKLW1zZ3N0ciAiKy0tJTNsZCByYWRlciB2aWt0YSAiCi0KIG1zZ2lkICIgVlJFUExBQ0UiCiBtc2dzdHIgIiBWRVJTxFRUIgogCkBAIC00MTM3LDEyICs0NTM4LDYgQEAKIG1zZ2lkICJyZWNvcmRpbmciCiBtc2dzdHIgInNwZWxhciBpbiIKIAotbXNnaWQgInNlYXJjaCBoaXQgVE9QLCBjb250aW51aW5nIGF0IEJPVFRPTSIKLW1zZ3N0ciAic/ZrbmluZyBu5WRkZSBUT1BQRU4sIGZvcnRz5HR0ZXIgdmlkIEJPVFRFTiIKLQotbXNnaWQgInNlYXJjaCBoaXQgQk9UVE9NLCBjb250aW51aW5nIGF0IFRPUCIKLW1zZ3N0ciAic/ZrbmluZyBu5WRkZSBCT1RURU4sIGZvcnPkdHRlciB2aWQgVE9QUEVOIgotCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzODM6IEludmFsaWQgc2VhcmNoIHN0cmluZzogJXMiCiBtc2dzdHIgIkUzODM6IE9naWx0aWcgc/Zrc3Ry5G5nOiAlcyIKQEAgLTQxOTYsNiArNDU5MSwyOTcgQEAKIG1zZ2lkICJFMzg5OiBDb3VsZG4ndCBmaW5kIHBhdHRlcm4iCiBtc2dzdHIgIkUzODk6IEt1bmRlIGludGUgaGl0dGEgbfZuc3RlciIKIAorbXNnaWQgIkU3NTk6IEZvcm1hdCBlcnJvciBpbiBzcGVsbCBmaWxlIgorbXNnc3RyICJFNzU5OiBGb3JtYXRlcmluZ3NmZWwgaSBzdGF2bmluZ3NmaWwiCisKK21zZ2lkICJFNzU4OiBUcnVuY2F0ZWQgc3BlbGwgZmlsZSIKK21zZ3N0ciAiRTc1ODogVHJ1bmtlcmFkIHN0YXZuaW5nc2ZpbCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJUcmFpbGluZyB0ZXh0IGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJFZnRlcnNs5HBhbmRlIHRleHQgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkFmZml4IG5hbWUgdG9vIGxvbmcgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkFmZml4LW5hbW4gZvZyIGzlbmd0IGkgJXMgcmFkICVkOiAlcyIKKworbXNnaWQgIkU3NjE6IEZvcm1hdCBlcnJvciBpbiBhZmZpeCBmaWxlIEZPTCwgTE9XIG9yIFVQUCIKK21zZ3N0ciAiRTc2MTogRm9ybWF0ZXJpbmdzZmVsIGkgYWZmaXgtZmlsIEZPTCwgTE9XIGVsbGVyIFVQUCIKKworbXNnaWQgIkU3NjI6IENoYXJhY3RlciBpbiBGT0wsIExPVyBvciBVUFAgaXMgb3V0IG9mIHJhbmdlIgorbXNnc3RyICJFNzYyOiBUZWNrZW4gaSBGT0wsIExPVyBlbGxlciBVUFAg5HIgdXRhbmb2ciBvbXLlZGUiCisKK21zZ2lkICJDb21wcmVzc2luZyB3b3JkIHRyZWUuLi4iCittc2dzdHIgIktvbXByaW1lcmFyIG9yZHRy5GQuLi4iCisKK21zZ2lkICJFNzU2OiBTcGVsbCBjaGVja2luZyBpcyBub3QgZW5hYmxlZCIKK21zZ3N0ciAiRTc1NjogU3Rhdm5pbmdza29udHJvbGwg5HIgaW50ZSBha3RpdmVyYXQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogQ2Fubm90IGZpbmQgd29yZCBsaXN0IFwiJXMuJXMuc3BsXCIgb3IgXCIlcy5hc2NpaS5zcGxcIiIKK21zZ3N0ciAiVmFybmluZzogS2FuIGludGUgaGl0dGEgb3JkbGlzdGEgXCIlcy4lcy5zcGxcIiBlbGxlciBcIiVzLmFzY2lpLnNwbFwiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlYWRpbmcgc3BlbGwgZmlsZSBcIiVzXCIiCittc2dzdHIgIkzkc2VyIHN0YXZuaW5nc2ZpbCBcIiVzXCIiCisKK21zZ2lkICJFNzU3OiBUaGlzIGRvZXMgbm90IGxvb2sgbGlrZSBhIHNwZWxsIGZpbGUiCittc2dzdHIgIkU3NTc6IERldCBo5HIgc2VyIGludGUgdXQgc29tIGVuIHN0YXZuaW5nc2ZpbCIKKworbXNnaWQgIkU3NzE6IE9sZCBzcGVsbCBmaWxlLCBuZWVkcyB0byBiZSB1cGRhdGVkIgorbXNnc3RyICJFNzcxOiBHYW1tYWwgc3Rhdm5pbmdzZmlsLCBiZWj2dmVyIGJsaSB1cHBkYXRlcmFkIgorCittc2dpZCAiRTc3MjogU3BlbGwgZmlsZSBpcyBmb3IgbmV3ZXIgdmVyc2lvbiBvZiBWaW0iCittc2dzdHIgIkU3NzI6IFN0YXZuaW5nc2ZpbCDkciBm9nIgbnlhcmUgdmVyc2lvbiBhdiBWaW0iCisKK21zZ2lkICJFNzcwOiBVbnN1cHBvcnRlZCBzZWN0aW9uIGluIHNwZWxsIGZpbGUiCittc2dzdHIgIkU3NzA6IE9zdPZkZCBzZWt0aW9uIGkgc3Rhdm5pbmdzZmlsIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IHJlZ2lvbiAlcyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJWYXJuaW5nOiByZWdpb24gJXMgc3T2ZHMgaW50ZSIKKworIywgYy1mb3JtYXQKK21zZ2lkICJSZWFkaW5nIGFmZml4IGZpbGUgJXMgLi4uIgorbXNnc3RyICJM5HNlciBhZmZpeC1maWwgJXMgLi4uIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnNpb24gZmFpbHVyZSBmb3Igd29yZCBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiS29udmVydGVyaW5nIG1pc3NseWNrYWRlcyBm9nIgb3JkIGkgJXMgcmFkICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJzaW9uIGluICVzIG5vdCBzdXBwb3J0ZWQ6IGZyb20gJXMgdG8gJXMiCittc2dzdHIgIktvbnZlcnRlcmluZyBpICVzIHN09mRzIGludGU6IGZy5W4gJXMgdGlsbCAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJzaW9uIGluICVzIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIktvbnZlcnRlcmluZyBpICVzIHN09mRzIGludGUiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgRkxBRyBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiT2dpbHRpZ3QgduRyZGUgZvZyIEZMQUcgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkZMQUcgYWZ0ZXIgdXNpbmcgZmxhZ3MgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkZMQUcgZWZ0ZXIgYW525G5kbmluZyBhdiBmbGFncyBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hhcmFjdGVyIHVzZWQgZm9yIFNMQVNIIG11c3QgYmUgQVNDSUk7IGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJUZWNrZW4gYW525G50IGb2ciBTTEFTSCBt5XN0ZSB2YXJhIEFTQ0lJOyBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JvbmcgQ09NUE9VTkRNQVggdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkZlbCBDT01QT1VORE1BWC125HJkZSBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JvbmcgQ09NUE9VTkRNSU4gdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkZlbCBDT01QT1VORE1JTi125HJkZSBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JvbmcgQ09NUE9VTkRTWUxNQVggdmFsdWUgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkZlbCBDT01QT1VORFNZTE1BWC125HJkZSBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRGlmZmVyZW50IGNvbWJpbmluZyBmbGFnIGluIGNvbnRpbnVlZCBhZmZpeCBibG9jayBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiQW5uYW4ga29tYmluZXJhbmRlIGZsYWdnYSBpIGVmdGVyZvZsamFuZGUgYWZmaXgtYmxvY2sgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkR1cGxpY2F0ZSBhZmZpeCBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiRHVwbGljZXJhZCBhZmZpeCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkFmZml4IGFsc28gdXNlZCBmb3IgQkFEL1JBUi9LRVAvTkVFREFGRklYL05FRURDT01QT1VORCBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiIgorIkFmZml4IG9ja3PlIGFuduRuZCBm9nIgQkFEL1JBUi9LRVAvTkVFREFGRklYL05FRURDT01QT1VORCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXhwZWN0ZWQgWSBvciBOIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJG9nJ25G50YWRlIFkgZWxsZXIgTiBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJva2VuIGNvbmRpdGlvbiBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiVHJhc2lndCB2aWxsa29yIGkgJXMgcmFkICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFeHBlY3RlZCBSRVAgY291bnQgaW4gJXMgbGluZSAlZCIKK21zZ3N0ciAiRvZyduRudGFkZSBSRVAtYW50YWwgaSAlcyByYWQgJWQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXhwZWN0ZWQgTUFQIGNvdW50IGluICVzIGxpbmUgJWQiCittc2dzdHIgIkb2cnbkbnRhZGUgTUFQLWFudGFsIGkgJXMgcmFkICVkIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkR1cGxpY2F0ZSBjaGFyYWN0ZXIgaW4gTUFQIGluICVzIGxpbmUgJWQiCittc2dzdHIgIkR1cGxpY2VyYXQgdGVja2VuIGkgTUFQIGkgJXMgcmFkICVkIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlVucmVjb2duaXplZCBvciBkdXBsaWNhdGUgaXRlbSBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiT2vkbmQgZWxsZXIgZHVwbGljZXJhZCBwb3N0IGkgJXMgcmFkICVkOiAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nIEZPTC9MT1cvVVBQIGxpbmUgaW4gJXMiCittc2dzdHIgIlNha25hciBGT0wvTE9XL1VQUCByYWQgaSAlcyIKKworbXNnaWQgIkNPTVBPVU5EU1lMTUFYIHVzZWQgd2l0aG91dCBTWUxMQUJMRSIKK21zZ3N0ciAiQ09NUE9VTkRTWUxNQVggYW525G5kIHV0YW4gU1lMTEFCTEUiCisKK21zZ2lkICJUb28gbWFueSBwb3N0cG9uZWQgcHJlZml4ZXMiCittc2dzdHIgIkb2ciBt5W5nYSB1cHBza2p1dG5hIHByZWZpeCIKKworbXNnaWQgIlRvbyBtYW55IGNvbXBvdW5kIGZsYWdzIgorbXNnc3RyICJG9nIgbeVuZ2Egc2FtbWFuc2F0dGEgZmxhZ2dvciIKKworbXNnaWQgIlRvbyBtYW55IHBvc3BvbmVkIHByZWZpeGVzIGFuZC9vciBjb21wb3VuZCBmbGFncyIKK21zZ3N0ciAiRvZyIG3lbmdhIHVwcHNranV0bmEgcHJlZml4IG9jaC9lbGxlciBzYW1tYW5zYXR0YSBmbGFnZ29yIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgU09GTyVzIGxpbmUgaW4gJXMiCittc2dzdHIgIlNha25hciBTT0ZPJXMgcmFkIGkgJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQm90aCBTQUwgYW5kIFNPRk8gbGluZXMgaW4gJXMiCittc2dzdHIgIkLlZGUgU0FMIG9jaCBTT0ZPIHJhZGVyIGkgJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZyBpcyBub3QgYSBudW1iZXIgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkZsYWdnYSDkciBpbnRlIGV0dCBudW1tZXIgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgZmxhZyBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiT2dpbHRpZyBmbGFnZ2EgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHZhbHVlIGRpZmZlcnMgZnJvbSB3aGF0IGlzIHVzZWQgaW4gYW5vdGhlciAuYWZmIGZpbGUiCittc2dzdHIgIiVzIHbkcmRlIHNraWxqZXIgc2lnIGZy5W4gdmFkIHNvbSBhbnbkbmRzIGkgZW4gYW5uYW4gLmFmZi1maWwuIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlYWRpbmcgZGljdGlvbmFyeSBmaWxlICVzIC4uLiIKK21zZ3N0ciAiTORzZXIgb3JkYm9rc2ZpbCAlcyAuLi4iCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTc2MDogTm8gd29yZCBjb3VudCBpbiAlcyIKK21zZ3N0ciAiRTc2MDogSW5nZXQgb3JkYW50YWwgaSAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJsaW5lICU2ZCwgd29yZCAlNmQgLSAlcyIKK21zZ3N0ciAicmFkICU2ZCwgb3JkICU2ZCAtICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkR1cGxpY2F0ZSB3b3JkIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJEdXBsaWNlcmF0IG9yZCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZHVwbGljYXRlIHdvcmQgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkb2cnN0YSBkdXBsaWNlcmFkZSBvcmRldCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgZHVwbGljYXRlIHdvcmQocykgaW4gJXMiCittc2dzdHIgIiVkIGR1cGxpY2VyYWRlIG9yZCBpICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIklnbm9yZWQgJWQgd29yZChzKSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluICVzIgorbXNnc3RyICJJZ25vcmVyYWRlICVkIG9yZCBtZWQgaWNrZS1BU0NJSSB0ZWNrZW4gaSAlcyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJSZWFkaW5nIHdvcmQgZmlsZSAlcyAuLi4iCittc2dzdHIgIkzkc2VyIG9yZGZpbCAlcyAuLi4iCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRHVwbGljYXRlIC9lbmNvZGluZz0gbGluZSBpZ25vcmVkIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJEdXBsaWNlcmFkIC9lbmNvZGluZz0tcmFkIGlnbm9yZXJhZCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiL2VuY29kaW5nPSBsaW5lIGFmdGVyIHdvcmQgaWdub3JlZCBpbiAlcyBsaW5lICVkOiAlcyIKK21zZ3N0ciAiL2VuY29kaW5nPS1yYWQgZWZ0ZXIgb3JkIGlnbm9yZXJhZCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRHVwbGljYXRlIC9yZWdpb25zPSBsaW5lIGlnbm9yZWQgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkR1cGxpY2VyYWQgL3JlZ2lvbnM9LXJhZCBpZ25vcmVyYWQgaSAlcyByYWQgJWQ6ICVzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IHJlZ2lvbnMgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIkb2ciBt5W5nYSByZWdpb25lciBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiLyBsaW5lIGlnbm9yZWQgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIi8tcmFkIGlnbm9yZXJhZCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZWdpb24gbnIgaW4gJXMgbGluZSAlZDogJXMiCittc2dzdHIgIk9naWx0aWd0IHJlZ2lvbnNuciBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5yZWNvZ25pemVkIGZsYWdzIGluICVzIGxpbmUgJWQ6ICVzIgorbXNnc3RyICJPa+RuZGEgZmxhZ2dvdCBpICVzIHJhZCAlZDogJXMiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWdub3JlZCAlZCB3b3JkcyB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIgorbXNnc3RyICJJZ25vcmVyYWRlICVkIG9yZCBtZWQgaWNrZS1BU0NJSSB0ZWNrZW4iCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tcHJlc3NlZCAlZCBvZiAlZCBub2RlczsgJWQlJSByZW1haW5pbmciCittc2dzdHIgIktvbXByaW1lcmFkZSAlZCBhdiAlZCBub2RlcjsgJWQlJSDldGVyc3TlciIKKworbXNnaWQgIkU3NTE6IE91dHB1dCBmaWxlIG5hbWUgbXVzdCBub3QgaGF2ZSByZWdpb24gbmFtZSIKK21zZ3N0ciAiRTc1MTogVXRtYXRuaW5nc2ZpbG5hbW4gZuVyIGludGUgaGEgcmVnaW9ubmFtbiIKKworbXNnaWQgIkU3NTQ6IE9ubHkgdXAgdG8gOCByZWdpb25zIHN1cHBvcnRlZCIKK21zZ3N0ciAiRTc1NDogQmFyYSB1cHAgdGlsbCA4IHJlZ2lvbmVyIHN09mRzIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3NTU6IEludmFsaWQgcmVnaW9uIGluICVzIgorbXNnc3RyICJFNzU1OiBPZ2lsdGlnIHJlZ2lvbiBpICVzIgorCittc2dpZCAiV2FybmluZzogYm90aCBjb21wb3VuZGluZyBhbmQgTk9CUkVBSyBzcGVjaWZpZWQiCittc2dzdHIgIlZhcm5pbmc6IGLlZGUgc2FtbWFuc+R0dG5pbmcgb2NoIE5PQlJFQUsgc3BlY2lmaWVyYWQiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBzcGVsbCBmaWxlICVzIC4uLiIKK21zZ3N0ciAiU2tyaXZlciBzdGF2bmluZ3NmaWwgJXMgLi4uIgorCittc2dpZCAiRG9uZSEiCittc2dzdHIgIktsYXIhIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBydW50aW1lIG1lbW9yeSB1c2U6ICVkIGJ5dGVzIgorbXNnc3RyICJCZXLka25hdCBr9nJ0aWRzbWlubmUgYW525G50OiAlZCBieXRlIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3NjU6ICdzcGVsbGZpbGUnIGRvZXMgbm90IGhhdmUgJWxkIGVudHJpZXMiCittc2dzdHIgIkU3NjU6ICdzcGVsbGZpbGUnIGhhciBpbnRlICVsZCBwb3N0ZXIiCisKK21zZ2lkICJFNzYzOiBXb3JkIGNoYXJhY3RlcnMgZGlmZmVyIGJldHdlZW4gc3BlbGwgZmlsZXMiCittc2dzdHIgIkU3NjM6IE9yZHRlY2tlbiBza2lsamVyIHNpZyBtZWxsYW4gc3Rhdm5pbmdzZmlsZXIiCisKK21zZ2lkICJTb3JyeSwgbm8gc3VnZ2VzdGlvbnMiCittc2dzdHIgIlR5duRyciwgaW5nYSBm9nJlc2xhZyIKKworIywgYy1mb3JtYXQKK21zZ2lkICJTb3JyeSwgb25seSAlbGQgc3VnZ2VzdGlvbnMiCittc2dzdHIgIlR5duRyciwgYmFyYSAlbGQgZvZyZXNsYWciCisKKyMuIGF2b2lkIG1vcmUgcHJvbXB0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoYW5nZSBcIiUuKnNcIiB0bzoiCittc2dzdHIgIsRuZHJhIFwiJS4qc1wiIHRpbGw6IgorCisjLCBjLWZvcm1hdAorbXNnaWQgIiA8IFwiJS4qc1wiIgorbXNnc3RyICIgPCBcIiUuKnNcIiIKKworbXNnaWQgIkU3NTI6IE5vIHByZXZpb3VzIHNwZWxsIHJlcGxhY2VtZW50IgorbXNnc3RyICJFNzUyOiBJbmdlbiB0aWRpZ2FyZSBzdGF2bmluZ3NlcnPkdHRuaW5nIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU3NTM6IE5vdCBmb3VuZDogJXMiCittc2dzdHIgIkU3NTM6IEhpdHRhZGVzIGludGU6ICVzIgorCisjLiBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY2hlY2tlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIC5zcGwKKyMuICogZmlsZS4KK21zZ2lkICJFOTk5OiBkdXBsaWNhdGUgY2hhciBpbiBNQVAgZW50cnkiCittc2dzdHIgIkU5OTk6IGR1YmJsZXJhdCB0ZWNrZW4gaSBNQVAtcG9zdCIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzkwOiBJbGxlZ2FsIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAiRTM5MDogT3RpbGzldGV0IGFyZ3VtZW50OiAlcyIKQEAgLTQyNTYsNiArNDk0MiwxMiBAQAogbXNnaWQgIiBsaW5lIGJyZWFrcyIKIG1zZ3N0ciAiIHJhZGJyeXRuaW5nYXIiCiAKK21zZ2lkICJFMzk1OiBjb250YWlucyBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKK21zZ3N0ciAiRTM5NTogaW5uZWjlbGxlciBhcmd1bWVudCBzb20gaW50ZSDkciB0aWxs5XRuYSBo5HIiCisKK21zZ2lkICJFMzk2OiBjb250YWluZWRpbiBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKK21zZ3N0ciAiRTM5NjogaW5uZWj2bGwgYXJndW1lbnQgc29tIGludGUg5HIgdGlsbOV0bmEgaORyIgorCiBtc2dpZCAiRTM5MzogZ3JvdXBbdF1oZXJlIG5vdCBhY2NlcHRlZCBoZXJlIgogbXNnc3RyICJFMzkzOiBncnVwcGVyIGludGUgdGlsbOV0bmEgaORyIgogCkBAIC00MjYzLDE2ICs0OTU1LDE0IEBACiBtc2dpZCAiRTM5NDogRGlkbid0IGZpbmQgcmVnaW9uIGl0ZW0gZm9yICVzIgogbXNnc3RyICJFMzk0OiBIaXR0YWRlIGludGUgcmVnaW9uZvZyZW3lbCBm9nIgJXMiCiAKLW1zZ2lkICJFMzk1OiBjb250YWlucyBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKLW1zZ3N0ciAiRTM5NTogaW5uZWjlbGxlciBhcmd1bWVudCBzb20gaW50ZSDkciB0aWxs5XRuYSBo5HIiCi0KLW1zZ2lkICJFMzk2OiBjb250YWluZWRpbiBhcmd1bWVudCBub3QgYWNjZXB0ZWQgaGVyZSIKLW1zZ3N0ciAiRTM5NjogaW5uZWj2bGwgYXJndW1lbnQgc29tIGludGUg5HIgdGlsbOV0bmEgaORyIgotCiBtc2dpZCAiRTM5NzogRmlsZW5hbWUgcmVxdWlyZWQiCiBtc2dzdHIgIkUzOTc6IEZpbG5hbW4ga3LkdnMiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiRTc0NzogTWlzc2luZyAnXSc6ICVzIgorbXNnc3RyICJFNzQ3OiBTYWtuYXIgJ10nOiAlcyIKKworIywgYy1mb3JtYXQKIG1zZ2lkICJFMzk4OiBNaXNzaW5nICc9JzogJXMiCiBtc2dzdHIgIkUzOTg6IFNha25hciAnPSc6ICVzIgogCkBAIC00MzIzLDcgKzUwMTMsNyBAQAogbXNnc3RyICJFNDEwOiBPZ2lsdGlndCA6c3ludGF4LXVuZGVya29tbWFuZG86ICVzIgogCiBtc2dpZCAiRTY3OTogcmVjdXJzaXZlIGxvb3AgbG9hZGluZyBzeW5jb2xvci52aW0iCi1tc2dzdHIgIkU2Nzk6IHJla3Vyc2l2IGxvb3AgbORzZXIgaW4gc3luY29sb3IudmltICIKK21zZ3N0ciAiRTY3OTogcmVrdXJzaXYgbG9vcCBsYWRkYXIgc3luY29sb3IudmltIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0MTE6IGhpZ2hsaWdodCBncm91cCBub3QgZm91bmQ6ICVzIgpAQCAtNDM3OCwxMCArNTA2OCw4IEBACiBtc2dzdHIgIkU0MjQ6IEb2ciBt5W5nYSBvbGlrYSBmcmFtaOR2bmluZ3NhdHRyaWJ1dCBpIGFuduRuZG5pbmciCiAKIG1zZ2lkICJFNjY5OiBVbnByaW50YWJsZSBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSIKLW1zZ3N0ciAiRTY2OTogT3Nrcml2YmFydCB0ZWNrZW4gaSBncnVwcG5hbW4iCittc2dzdHIgIkU2Njk6IE91dHNrcml2YmFydCB0ZWNrZW4gaSBncnVwcG5hbW4iCiAKLSMuIFRoaXMgaXMgYW4gZXJyb3IsIGJ1dCBzaW5jZSB0aGVyZSBwcmV2aW91c2x5IHdhcyBubyBjaGVjayBvbmx5Ci0jLiAqIGdpdmUgYSB3YXJuaW5nLgogbXNnaWQgIlcxODogSW52YWxpZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSIKIG1zZ3N0ciAiVzE4OiBPZ2lsdGlndCB0ZWNrZW4gaSBncnVwcG5hbW4iCiAKQEAgLTQ0MDQsMTMgKzUwOTIsNiBAQAogbXNnaWQgImZpbGVcbiIKIG1zZ3N0ciAiZmlsXG4iCiAKLSMuCi0jLiAqIEFzayB0byBzZWxlY3QgYSB0YWcgZnJvbSB0aGUgbGlzdC4KLSMuICogV2hlbiB1c2luZyAiOnNpbGVudCIgYXNzdW1lIHRoYXQgPENSPiB3YXMgZW50ZXJlZC4KLSMuCi1tc2dpZCAiRW50ZXIgbnIgb2YgY2hvaWNlICg8Q1I+IHRvIGFib3J0KTogIgotbXNnc3RyICJBbmdlIG5yIGF2IHZhbCAoPENSPiBm9nIgYXR0IGF2YnJ5dGEpOiAiCi0KIG1zZ2lkICJFNDI3OiBUaGVyZSBpcyBvbmx5IG9uZSBtYXRjaGluZyB0YWciCiBtc2dzdHIgIkU0Mjc6IERldCBmaW5ucyBiYXJhIGVuIG1hdGNoYW5kZSB0YWdnIgogCkBAIC00Njg2LDkgKzUzNjcsNiBAQAogbXNnaWQgIndpdGggWDExLUF0aGVuYSBHVUkuIgogbXNnc3RyICJtZWQgWDExLUF0aGVuYS1HVUkuIgogCi1tc2dpZCAid2l0aCBCZU9TIEdVSS4iCi1tc2dzdHIgIm1lZCBCZU9TLUdVSS4iCi0KIG1zZ2lkICJ3aXRoIFBob3RvbiBHVUkuIgogbXNnc3RyICJtZWQgUGhvdG9uLUdVSS4iCiAKQEAgLTQ3MDQsNiArNTM4Miw5IEBACiBtc2dpZCAid2l0aCAoY2xhc3NpYykgR1VJLiIKIG1zZ3N0ciAibWVkIChrbGFzc2lza3QpIEdVSS4iCiAKK21zZ2lkICJ3aXRoIEtERSBHVUkuIgorbXNnc3RyICJtZWQgS0RFLUdVSS4iCisKIG1zZ2lkICIgIEZlYXR1cmVzIGluY2x1ZGVkICgrKSBvciBub3QgKC0pOlxuIgogbXNnc3RyICIgIEZ1bmt0aW9uZXIgaW5rbHVkZXJhZGUgKCspIGVsbGVyIGludGUgKC0pOlxuIgogCkBAIC00NzgyLDggKzU0NjMsOCBAQAogbXNnaWQgInR5cGUgIDpoZWxwPEVudGVyPiAgb3IgIDxGMT4gIGZvciBvbi1saW5lIGhlbHAiCiBtc2dzdHIgInNrcml2ICA6aGVscDxFbnRlcj4gZWxsZXIgPEYxPiAgZvZyIG9ubGluZS1oauRscCAgICAgICAgICIKIAotbXNnaWQgInR5cGUgIDpoZWxwIHZlcnNpb242PEVudGVyPiAgIGZvciB2ZXJzaW9uIGluZm8iCi1tc2dzdHIgInNrcml2ICA6aGVscCB2ZXJzaW9uNjxFbnRlcj4gICAgZvZyIHZlcnNpb25pbmZvcm1hdGlvbiAgICIKK21zZ2lkICJ0eXBlICA6aGVscCB2ZXJzaW9uNzxFbnRlcj4gICBmb3IgdmVyc2lvbiBpbmZvIgorbXNnc3RyICJza3JpdiAgOmhlbHAgdmVyc2lvbjc8RW50ZXI+ICAgIGb2ciB2ZXJzaW9uaW5mb3JtYXRpb24gICAiCiAKIG1zZ2lkICJSdW5uaW5nIGluIFZpIGNvbXBhdGlibGUgbW9kZSIKIG1zZ3N0ciAiS/ZyIGkgVmkta29tcGF0aWJlbHQgbORnZSIKQEAgLTQ4NzYsMTUgKzU1NTcsMTUgQEAKIG1zZ2lkICJFZGl0IHdpdGggc2luZ2xlICZWaW0iCiBtc2dzdHIgIlJlZGlnZXJhIG1lZCBlbiAmVmltIgogCi1tc2dpZCAiJkRpZmYgd2l0aCBWaW0iCi1tc2dzdHIgIiZEaWZmIG1lZCBWaW0iCittc2dpZCAiRGlmZiB3aXRoIFZpbSIKK21zZ3N0ciAiRGlmZiBtZWQgVmltIgogCiBtc2dpZCAiRWRpdCB3aXRoICZWaW0iCiBtc2dzdHIgIlJlZGlnZXJhIG1lZCAmVmltIgogCiAjLiBOb3cgY29uY2F0ZW5hdGUKLW1zZ2lkICJFZGl0IHdpdGggZXhpc3RpbmcgVmltIC0gJiIKLW1zZ3N0ciAiUmVkaWdlcmEgbWVkIGJlZmludGxpZyBWaW0gLSAmIgorbXNnaWQgIkVkaXQgd2l0aCBleGlzdGluZyBWaW0gLSAiCittc2dzdHIgIlJlZGlnZXJhIG1lZCBiZWZpbnRsaWcgVmltIC0gIgogCiBtc2dpZCAiRWRpdHMgdGhlIHNlbGVjdGVkIGZpbGUocykgd2l0aCBWaW0iCiBtc2dzdHIgIlJlZGlnZXJhciBtYXJrZXJhZGUgZmlsKGVybmEpIG1lZCBWaW0iCkBAIC00OTMxLDkgKzU2MTIsMTUgQEAKIG1zZ2lkICJFMTcwOiBNaXNzaW5nIDplbmR3aGlsZSIKIG1zZ3N0ciAiRTE3MDogU2FrbmFyIDplbmR3aGlsZSIKIAorbXNnaWQgIkUxNzA6IE1pc3NpbmcgOmVuZGZvciIKK21zZ3N0ciAiRTE3MDogU2FrbmFyIDplbmRmb3IiCisKIG1zZ2lkICJFNTg4OiA6ZW5kd2hpbGUgd2l0aG91dCA6d2hpbGUiCiBtc2dzdHIgIkU1ODg6IDplbmR3aGlsZSB1dGFuIDp3aGlsZSIKIAorbXNnaWQgIkU1ODg6IDplbmRmb3Igd2l0aG91dCA6Zm9yIgorbXNnc3RyICJFNTg4OiA6ZW5kZm9yIHV0YW4gOmZvciIKKwogbXNnaWQgIkUxMzogRmlsZSBleGlzdHMgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTEzOiBGaWwgZXhpc3RlcmFyIChs5GdnIHRpbGwgISBm9nIgYXR0IHR2aW5nYSkiCiAKQEAgLTQ5ODIsOSArNTY2OSw2IEBACiBtc2dpZCAiRTE3OiBcIiVzXCIgaXMgYSBkaXJlY3RvcnkiCiBtc2dzdHIgIkUxNzogXCIlc1wiIORyIGVuIGthdGFsb2ciCiAKLW1zZ2lkICJFMTg6IFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBiZWZvcmUgJz0nIgotbXNnc3RyICJFMTg6IE925G50YWRlIHRlY2tlbiBm9nJlICc9JyIKLQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzY0OiBMaWJyYXJ5IGNhbGwgZmFpbGVkIGZvciBcIiVzKClcIiIKIG1zZ3N0ciAiRTM2NDogQmlibGlvdGVrc2Fucm9wIG1pc3NseWNrYWRlcyBm9nIgXCIlcygpXCIiCkBAIC01MTI5LDggKzU4MTMsMTIgQEAKIG1zZ3N0ciAiRTQ1OiAncmVhZG9ubHknIGZsYWdnYSDkciBzYXR0IChs5GdnIHRpbGwgISBm9nIgYXR0IHR2aW5nYSkiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ2OiBDYW5ub3Qgc2V0IHJlYWQtb25seSB2YXJpYWJsZSBcIiVzXCIiCi1tc2dzdHIgIkU0NjogS2FuIGludGUgc+R0dGEgc2tyaXZza3lkZGFkIHZhcmlhYmVsIFwiJXNcIiIKK21zZ2lkICJFNDY6IENhbm5vdCBjaGFuZ2UgcmVhZC1vbmx5IHZhcmlhYmxlIFwiJXNcIiIKK21zZ3N0ciAiRTQ2OiBLYW4gaW50ZSDkbmRyYSBza3JpdnNreWRkYWQgdmFyaWFiZWwgXCIlc1wiIgorCisjLCBjLWZvcm1hdAorbXNnaWQgIkU0NjogQ2Fubm90IHNldCB2YXJpYWJsZSBpbiB0aGUgc2FuZGJveDogXCIlc1wiIgorbXNnc3RyICJFNDY6IEthbiBpbnRlIHPkdHRhIHZhcmlhYmVsIGkgc2FuZGzlZGFuOiBcIiVzXCIiCiAKIG1zZ2lkICJFNDc6IEVycm9yIHdoaWxlIHJlYWRpbmcgZXJyb3JmaWxlIgogbXNnc3RyICJFNDc6IEZlbCB2aWQgbORzbmluZyBhdiBmZWxmaWwiCkBAIC01MTQyLDcgKzU4MzAsNyBAQAogbXNnc3RyICJFNTIzOiBJbnRlIHRpbGzldGV0IGjkciIKIAogbXNnaWQgIkUzNTk6IFNjcmVlbiBtb2RlIHNldHRpbmcgbm90IHN1cHBvcnRlZCIKLW1zZ3N0ciAiRTM1OTogU2vkcm1s5GdlIGluc3TkbGxuaW5nIGludGUgc3T2ZGQiCittc2dzdHIgIkUzNTk6IFNr5HJtbORnZSBpbnN05GxsbmluZyBzdPZkcyBpbnRlIgogCiBtc2dpZCAiRTQ5OiBJbnZhbGlkIHNjcm9sbCBzaXplIgogbXNnc3RyICJFNDk6IE9naWx0aWcgcnVsbG5pbmdzc3RvcmxlayIKQEAgLTUyMDAsMyArNTg4OCwzMiBAQAogCiBtc2dpZCAiRTQ2MzogUmVnaW9uIGlzIGd1YXJkZWQsIGNhbm5vdCBtb2RpZnkiCiBtc2dzdHIgIkU0NjM6IFJlZ2lvbiDkciB2YWt0YWQsIGthbiBpbnRlIG1vZGlmaWVyYSIKKworbXNnaWQgIkU3NDQ6IE5ldEJlYW5zIGRvZXMgbm90IGFsbG93IGNoYW5nZXMgaW4gcmVhZC1vbmx5IGZpbGVzIgorbXNnc3RyICJFNzQ0OiBOZXRCZWFucyB0aWxs5XRlciBpbnRlIORuZHJpbmdhciBpIHNrcml2c2t5ZGRhZGUgZmlsZXIiCisKKyMsIGMtZm9ybWF0Cittc2dpZCAiRTY4NTogSW50ZXJuYWwgZXJyb3I6ICVzIgorbXNnc3RyICJFNjg1OiBJbnRlcm50IGZlbDogJXMiCisKK21zZ2lkICJFMzYzOiBwYXR0ZXJuIHVzZXMgbW9yZSBtZW1vcnkgdGhhbiAnbWF4bWVtcGF0dGVybiciCittc2dzdHIgIkUzNjM6IG32bnN0ZXIgYW525G5kZXIgbWVyIG1pbm5lIORuICdtYXhtZW1wYXR0ZXJuJyIKKworbXNnaWQgIkU3NDk6IGVtcHR5IGJ1ZmZlciIKK21zZ3N0ciAiRTc0OTogdG9tIGJ1ZmZlcnQiCisKK21zZ2lkICJFNjgyOiBJbnZhbGlkIHNlYXJjaCBwYXR0ZXJuIG9yIGRlbGltaXRlciIKK21zZ3N0ciAiRTY4MjogT2dpbHRpZ3Qgc/ZrbfZuc3RlciBlbGxlciBkZWxpbWl0ZXIiCisKK21zZ2lkICJFMTM5OiBGaWxlIGlzIGxvYWRlZCBpbiBhbm90aGVyIGJ1ZmZlciIKK21zZ3N0ciAiRTEzOTogRmlsZW4g5HIgaW5s5HN0IGkgZW4gYW5uYW4gYnVmZmVydCIKKworIywgYy1mb3JtYXQKK21zZ2lkICJFNzY0OiBPcHRpb24gJyVzJyBpcyBub3Qgc2V0IgorbXNnc3RyICJFNzY0OiBGbGFnZ2EgJyVzJyDkciBpbnRlIHNhdHQiCisKK21zZ2lkICJzZWFyY2ggaGl0IFRPUCwgY29udGludWluZyBhdCBCT1RUT00iCittc2dzdHIgInP2a25pbmcgbuVkZGUgVE9QUEVOLCBmb3J0c+R0dGVyIHZpZCBCT1RURU4iCisKK21zZ2lkICJzZWFyY2ggaGl0IEJPVFRPTSwgY29udGludWluZyBhdCBUT1AiCittc2dzdHIgInP2a25pbmcgbuVkZGUgQk9UVEVOLCBmb3Jz5HR0ZXIgdmlkIFRPUFBFTiIKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ndWlfa2RlLnBybyBiL3NyYy9wcm90by9ndWlfa2RlLnBybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcyYjM1OC4uMDAwMDAwMAotLS0gYS9zcmMvcHJvdG8vZ3VpX2tkZS5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vKiBndWlfa2RlLmNjICovCi12b2lkIGd1aV9tY2hfYWRkX21lbnUgX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBpZHgpKTsKLXZvaWQgZ3VpX21jaF9hZGRfbWVudV9pdGVtIF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgaWR4KSk7Ci12b2lkIGd1aV9tY2hfc2V0X3RleHRfYXJlYV9wb3MgX19BUkdTKChpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkpOwotdm9pZCBndWlfZ3RrX3NldF9tbmVtb25pY3MgX19BUkdTKChpbnQgZW5hYmxlKSk7Ci12b2lkIGd1aV9tY2hfdG9nZ2xlX3RlYXJvZmZzIF9fQVJHUygoaW50IGVuYWJsZSkpOwotdm9pZCBndWlfbWNoX2Rlc3Ryb3lfbWVudSBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwotdm9pZCBndWlfbWNoX3NldF9zY3JvbGxiYXJfdGh1bWIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGxvbmcgdmFsLCBsb25nIHNpemUsIGxvbmcgbWF4KSk7Ci12b2lkIGd1aV9tY2hfc2V0X3Njcm9sbGJhcl9wb3MgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKSk7Ci12b2lkIGd1aV9tY2hfY3JlYXRlX3Njcm9sbGJhciBfX0FSR1MoKHNjcm9sbGJhcl9UICpzYiwgaW50IG9yaWVudCkpOwotdm9pZCBndWlfbWNoX2Rlc3Ryb3lfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiKSk7Ci1jaGFyX3UgKmd1aV9tY2hfYnJvd3NlIF9fQVJHUygoaW50IHNhdmluZywgY2hhcl91ICp0aXRsZSwgY2hhcl91ICpkZmx0LCBjaGFyX3UgKmV4dCwgY2hhcl91ICppbml0ZGlyLCBjaGFyX3UgKmZpbHRlcikpOwotaW50IGd1aV9tY2hfZGlhbG9nIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgY2hhcl91ICpidXR0b25zLCBpbnQgZGVmX2J1dCwgY2hhcl91ICp0ZXh0ZmllbGQpKTsKLXZvaWQgZ3VpX21jaF9zaG93X3BvcHVwbWVudSBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwotdm9pZCBndWlfbWNoX2ZpbmRfZGlhbG9nIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci12b2lkIGd1aV9tY2hfcmVwbGFjZV9kaWFsb2cgX19BUkdTKChleGFyZ19UICplYXApKTsKLXZvaWQgZXhfaGVscGZpbmQgX19BUkdTKChleGFyZ19UICplYXApKTsKLXZvaWQgZ3VpX21ha2VfcG9wdXAgX19BUkdTKChjaGFyX3UgKnBhdGhfbmFtZSwgaW50IG1vdXNlX3BvcykpOwotLyogdmltOiBzZXQgZnQ9Y3BwIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ndWlfa2RlX3gxMS5wcm8gYi9zcmMvcHJvdG8vZ3VpX2tkZV94MTEucHJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWNhMGZmLi4wMDAwMDAwCi0tLSBhL3NyYy9wcm90by9ndWlfa2RlX3gxMS5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKiBndWlfa2RlX3gxMS5jYyAqLwotdm9pZCBndWlfbWNoX3ByZXBhcmUgX19BUkdTKChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2KSk7Ci12b2lkIGd1aV9tY2hfc2V0X2JsaW5raW5nIF9fQVJHUygobG9uZyB3YWl0dGltZSwgbG9uZyBvbiwgbG9uZyBvZmYpKTsKLXZvaWQgZ3VpX21jaF9zdG9wX2JsaW5rIF9fQVJHUygodm9pZCkpOwotdm9pZCBndWlfbWNoX3N0YXJ0X2JsaW5rIF9fQVJHUygodm9pZCkpOwotaW50IGd1aV9tY2hfaW5pdF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKLWludCBndWlfbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGd1aV9tY2hfbmV3X2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKLWludCBndWlfbWNoX29wZW4gX19BUkdTKCh2b2lkKSk7Ci12b2lkIGd1aV9tY2hfZXhpdCBfX0FSR1MoKGludCByYykpOwotaW50IGd1aV9tY2hfZ2V0X3dpbnBvcyBfX0FSR1MoKGludCAqeCwgaW50ICp5KSk7Ci12b2lkIGd1aV9tY2hfc2V0X3dpbnBvcyBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwotdm9pZCBndWlfbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtaW5fd2lkdGgsIGludCBtaW5faGVpZ2h0LCBpbnQgYmFzZV93aWR0aCwgaW50IGJhc2VfaGVpZ2h0KSk7Ci12b2lkIGd1aV9tY2hfZ2V0X3NjcmVlbl9kaW1lbnNpb25zIF9fQVJHUygoaW50ICpzY3JlZW5fdywgaW50ICpzY3JlZW5faCkpOwotdm9pZCBndWlfbWNoX2VuYWJsZV9tZW51IF9fQVJHUygoaW50IGZsYWcpKTsKLXZvaWQgZ3VpX21jaF9zaG93X3Rvb2xiYXIgX19BUkdTKChpbnQgc2hvd2l0KSk7Ci1pbnQgZ3VpX21jaF9hZGp1c3RfY2hhcmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKLUd1aUZvbnRzZXQgZ3VpX21jaF9nZXRfZm9udHNldCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IHJlcG9ydF9lcnJvciwgaW50IGZpeGVkX3dpZHRoKSk7Ci1pbnQgZ3VpX21jaF9pbml0X2ZvbnQgX19BUkdTKChjaGFyX3UgKmZvbnRfbmFtZSwgaW50IGZvbnRzZXQpKTsKLUd1aUZvbnQgZ3VpX21jaF9nZXRfZm9udCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IHJlcG9ydF9lcnJvcikpOwotY2hhcl91ICpndWlfbWNoX2dldF9mb250bmFtZSBfX0FSR1MoKEd1aUZvbnQgZm9udCwgY2hhcl91ICpuYW1lKSk7Ci12b2lkIGd1aV9tY2hfc2V0X2ZvbnQgX19BUkdTKChHdWlGb250IGZvbnQpKTsKLXZvaWQgZ3VpX21jaF9zZXRfZm9udHNldCBfX0FSR1MoKEd1aUZvbnRzZXQgZm9udHNldCkpOwotdm9pZCBndWlfbWNoX2ZyZWVfZm9udCBfX0FSR1MoKEd1aUZvbnQgZm9udCkpOwotdm9pZCBndWlfbWNoX2ZyZWVfZm9udHNldCBfX0FSR1MoKEd1aUZvbnRzZXQgZm9udHNldCkpOwotZ3VpY29sb3JfVCBndWlfbWNoX2dldF9jb2xvciBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotdm9pZCBndWlfbWNoX3NldF9mZ19jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKLXZvaWQgZ3VpX21jaF9zZXRfYmdfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Ci12b2lkIGd1aV9tY2hfc2V0X3NwX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwotdm9pZCBndWlfbWNoX2RyYXdfc3RyaW5nIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgY2hhcl91ICpzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpKTsKLWludCBndWlfbWNoX2hhc2tleSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotaW50IGd1aV9nZXRfeDExX3dpbmRpcyBfX0FSR1MoKFdpbmRvdyAqd2luLCBEaXNwbGF5ICoqZGlzKSk7Ci12b2lkIGd1aV9tY2hfYmVlcCBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgZ3VpX21jaF9mbGFzaCBfX0FSR1MoKGludCBtc2VjKSk7Ci12b2lkIGd1aV9tY2hfaW52ZXJ0X3JlY3RhbmdsZSBfX0FSR1MoKGludCByLCBpbnQgYywgaW50IG5yLCBpbnQgbmMpKTsKLXZvaWQgZ3VpX21jaF9pY29uaWZ5IF9fQVJHUygodm9pZCkpOwotdm9pZCBndWlfbWNoX3NldF9mb3JlZ3JvdW5kIF9fQVJHUygodm9pZCkpOwotdm9pZCBndWlfbWNoX2RyYXdfaG9sbG93X2N1cnNvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKLXZvaWQgZ3VpX21jaF9kcmF3X3BhcnRfY3Vyc29yIF9fQVJHUygoaW50IHcsIGludCBoLCBndWljb2xvcl9UIGNvbG9yKSk7Ci12b2lkIGd1aV9tY2hfdXBkYXRlIF9fQVJHUygodm9pZCkpOwotaW50IGd1aV9tY2hfd2FpdF9mb3JfY2hhcnMgX19BUkdTKChsb25nIHd0aW1lKSk7Ci12b2lkIGd1aV9tY2hfZmx1c2ggX19BUkdTKCh2b2lkKSk7Ci12b2lkIGd1aV9tY2hfY2xlYXJfYmxvY2sgX19BUkdTKChpbnQgcm93MSwgaW50IGNvbDEsIGludCByb3cyLCBpbnQgY29sMikpOwotdm9pZCBndWlfbWNoX2NsZWFyX2FsbCBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgZ3VpX21jaF9kZWxldGVfbGluZXMgX19BUkdTKChpbnQgcm93LCBpbnQgbnVtX2xpbmVzKSk7Ci12b2lkIGd1aV9tY2hfaW5zZXJ0X2xpbmVzIF9fQVJHUygoaW50IHJvdywgaW50IG51bV9saW5lcykpOwotdm9pZCBjbGlwX21jaF9yZXF1ZXN0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci12b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLWludCBjbGlwX21jaF9vd25fc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKLXZvaWQgY2xpcF9tY2hfc2V0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci12b2lkIGd1aV9tY2hfbWVudV9ncmV5IF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgZ3JleSkpOwotdm9pZCBndWlfbWNoX21lbnVfaGlkZGVuIF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgaGlkZGVuKSk7Ci12b2lkIGd1aV9tY2hfZHJhd19tZW51YmFyIF9fQVJHUygodm9pZCkpOwotdm9pZCBndWlfbWNoX2VuYWJsZV9zY3JvbGxiYXIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGludCBmbGFnKSk7Ci1sb25nX3UgZ3VpX21jaF9nZXRfcmdiIF9fQVJHUygoZ3VpY29sb3JfVCBwaXhlbCkpOwotdm9pZCBndWlfbWNoX2dldG1vdXNlIF9fQVJHUygoaW50ICp4LCBpbnQgKnkpKTsKLXZvaWQgZ3VpX21jaF9zZXRtb3VzZSBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwotdm9pZCBndWlfbWNoX21vdXNlaGlkZSBfX0FSR1MoKGludCBoaWRlKSk7Ci12b2lkIG1jaF9zZXRfbW91c2Vfc2hhcGUgX19BUkdTKChpbnQgc2hhcGUpKTsKLWNoYXJfdSAqZ3VpX21jaF9mb250X2RpYWxvZyBfX0FSR1MoKGNoYXJfdSAqb2xkdmFsKSk7Ci12b2lkIGd1aV9tY2hfc2V0dGl0bGUgX19BUkdTKChjaGFyX3UgKnRpdGxlLGNoYXJfdSAqaWNvbikpOwotdm9pZCBndWlfbWNoX3VwZGF0ZV9jb2RlYyBfX0FSR1MoKHZvaWQpKTsKLS8qIHZpbTogc2V0IGZ0PWNwcCA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3NfbWFjLnBybyBiL3NyYy9wcm90by9vc19tYWMucHJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTJmYmU2Li4wMDAwMDAwCi0tLSBhL3NyYy9wcm90by9vc19tYWMucHJvCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyogb3NfbWFjLmMgKi8KLXZvaWQgbWNoX3NldG1vdXNlIF9fQVJHUygoaW50IG9uKSk7Ci0KLXZvaWQgbWNoX3dpbmRleGl0IF9fQVJHUygoaW50IHIpKTsKLWludCBtY2hfY2hlY2tfd2luIF9fQVJHUygoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSk7Ci1pbnQgbWNoX2lucHV0X2lzYXR0eSBfX0FSR1MoKHZvaWQpKTsKLQotdm9pZCBmbmFtZV9jYXNlIF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgbGVuKSk7Ci12b2lkIG1jaF9lYXJseV9pbml0IF9fQVJHUygodm9pZCkpOwotdm9pZCBtY2hfZXhpdCBfX0FSR1MoKGludCByKSk7Ci12b2lkIG1jaF9zZXR0aXRsZSBfX0FSR1MoKGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqaWNvbikpOwotdm9pZCBtY2hfcmVzdG9yZV90aXRsZSBfX0FSR1MoKGludCB3aGljaCkpOwotCi1pbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLXZvaWQgbWNoX2dldF9ob3N0X25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWxvbmcgbWNoX2dldF9waWQgX19BUkdTKCh2b2lkKSk7Ci0KLWludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7Ci1pbnQgbWNoX0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICpidWYsIGludCBsZW4sIGludCBmb3JjZSkpOwotaW50IG1jaF9pc0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotdm9pZCBzbGFzaF9hZGp1c3QgX19BUkdTKChjaGFyX3UgKnApKTsKLWxvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWludCBtY2hfc2V0cGVybSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyBwZXJtKSk7Ci12b2lkIG1jaF9oaWRlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1pbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1pbnQgbWNoX2Nhbl9leGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWludCBtY2hfbm9kZXR5cGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLXZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci12b2lkIG1jaF9zZXR0bW9kZSBfX0FSR1MoKGludCByYXcpKTsKLQotaW50IG1jaF9jaGRpciBfX0FSR1MoKGNoYXIgKnBfbmFtZSkpOwotI2lmIGRlZmluZWQoX19NUkNfXykgfHwgZGVmaW5lZChfX1NDX18pCi1pbnQgc3RhdCBfX0FSR1MoKGNoYXIgKnAsIHN0cnVjdCBzdGF0ICpwX3N0KSk7Ci0jZW5kaWYKLQotaW50IG1jaF9jYWxsX3NoZWxsIF9fQVJHUygoY2hhcl91ICpjbWQsIGludCBvcHRpb25zKSk7Ci1pbnQgbWNoX2hhc193aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcykpOwotaW50IG1jaF9leHBhbmRwYXRoIF9fQVJHUygoc3RydWN0IGdyb3dhcnJheSAqZ2FwLCBjaGFyX3UgKnBhdGgsIGludCBmbGFncykpOwotLyppbnQgdmltX2NoZGlyIF9fQVJHUygoY2hhciAqcGF0aCkpOyovCi12b2lkIG1jaF9kZWxheSBfX0FSR1MoKGxvbmcgbXNlYywgaW50IGlnbm9yZWlucHV0KSk7Ci12b2lkIG1jaF9icmVha2NoZWNrIF9fQVJHUygodm9pZCkpOwotbG9uZ191IG1jaF9hdmFpbF9tZW0gX19BUkdTKChpbnQgc3BlY2lhbCkpOwotaW50IG1jaF9zY3JlZW5tb2RlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKLWludCBtY2hfaGFzX2V4cF93aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotCi12b2lkIHNsYXNoX25fY29sb25fYWRqdXN0IF9fQVJHUygoY2hhcl91ICpidWYpKTsKLWludCBtY2hfY29weV9maWxlKGNoYXJfdSAqZnJvbSwgY2hhcl91ICp0byk7Ci0KLWludCBtY2hfaGFzX3Jlc291cmNlX2ZvcmsgKGNoYXJfdSAqZmlsZSk7Ci1pbnQgbWNoX2NvcHlfZmlsZV9hdHRyaWJ1dGUoY2hhcl91ICpmcm9tLCBjaGFyX3UgKnRvKTsKLQotdm9pZCBtY2hfc2hlbGxpbml0IF9fQVJHUygodm9pZCkpOwotaW50IG1jaF9nZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotdm9pZCBtY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgbWNoX25ld19zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci12b2lkIG1jaF9zdXNwZW5kIF9fQVJHUygodm9pZCkpOwotaW50IG1jaF9jYW5fcmVzdG9yZV90aXRsZSBfX0FSR1MoKHZvaWQpKTsKLWludCBtY2hfY2FuX3Jlc3RvcmVfaWNvbiBfX0FSR1MoKHZvaWQpKTsKLQotdm9pZCBzbGFzaF90b19jb2xvbiBfX0FSR1MoKGNoYXJfdSAqcCkpOwotY2hhcl91ICpzbGFzaF90b19jb2xvbl9zYXZlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci0KLS8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3VpLmMgYi9zcmMvdWkuYwppbmRleCA0NDQ5YmZkLi5jNDhhZjRlIDEwMDY0NAotLS0gYS9zcmMvdWkuYworKysgYi9zcmMvdWkuYwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAKIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfS0RFKSB8fCBkZWZpbmVkKFBST1RPKQorI2lmIGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkKFBST1RPKQogICAgIGludAogdmltX3VzZWRfaW5faW5wdXRfYnVmKCkKIHsKQEAgLTE2MTgsNyArMTYxOCw3IEBACiB9CiAjZW5kaWYKIAotI2lmIChkZWZpbmVkKEZFQVRfWElNKSAmJiAoZGVmaW5lZChGRUFUX0dVSV9HVEspIHx8IGRlZmluZWQoRkVBVF9HVUlfS0RFKSkpIFwKKyNpZiAoZGVmaW5lZChGRUFUX1hJTSkgJiYgZGVmaW5lZChGRUFUX0dVSV9HVEspKSBcCiAJfHwgKGRlZmluZWQoRkVBVF9NQllURSkgJiYgZGVmaW5lZChGRUFUX01CWVRFX0lNRSkpIFwKIAl8fCBkZWZpbmVkKFBST1RPKQogLyoKQEAgLTI5MTcsNyArMjkxNyw3IEBACiB9CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoRkVBVF9HVUlfTU9USUYpIHx8IGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkIChGRUFUX0dVSV9NQUMpIHx8IGRlZmluZWQgKEZFQVRfR1VJX0tERSkgXAorI2lmIGRlZmluZWQoRkVBVF9HVUlfTU9USUYpIHx8IGRlZmluZWQoRkVBVF9HVUlfR1RLKSB8fCBkZWZpbmVkIChGRUFUX0dVSV9NQUMpIFwKIAl8fCBkZWZpbmVkKEZFQVRfR1VJX0FUSEVOQSkgfHwgZGVmaW5lZChGRUFUX0dVSV9NU1dJTikgXAogCXx8IGRlZmluZWQoRkVBVF9HVUlfUEhPVE9OKSB8fCBkZWZpbmVkKFBST1RPKQogLyoK